svf-tools 1.0.455 → 1.0.458
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 +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +8 -8
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ICFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +9 -9
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +15 -15
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +4 -4
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- 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 +4 -4
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8h_source.html +3 -3
- 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 +7 -7
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
- 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 +30 -30
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +14 -14
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
- 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 +18 -18
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -0
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +84 -84
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- 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_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +82 -82
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF.html +47 -47
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +44 -44
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +36 -36
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
- 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/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/include/Util/BasicTypes.h +1 -0
- package/lib/SVF-FE/SVFIRBuilder.cpp +3 -3
- package/lib/Util/ExeState.cpp +2 -2
- package/package.json +1 -1
|
@@ -66,12 +66,12 @@ $(function() {
|
|
|
66
66
|
<div class="title">ExeState.cpp</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="ExeState_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- ExeState.cpp -- Execution State ----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">/*</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * ExeState.cpp</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * Created on: April 29, 2022</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Author: Xiao</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="ExeState_8h.html">Util/ExeState.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <iomanip></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> z3::context *<a class="code" href="classSVF_1_1Z3Expr.html#a7dce19d65c7a0b50d21127a07aa51bf8">Z3Expr::ctx</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf"> 42</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf">ExeState::initValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar, <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &e)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::string str;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  rawstr << <span class="stringliteral">"ValVar"</span> << valVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type = valVar-><a class="code" href="classSVF_1_1SVFVar.html#adaaf24b8b6ec06476cea112533c24066">getType</a>())</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (type->isIntegerTy() || type->isFloatingPointTy() || type->isPointerTy() || type->isFunctionTy()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  || type->isStructTy() || type->isArrayTy() || type->isVoidTy() || type->isLabelTy() || type->isMetadataTy())</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  e = getContext().int_const(rawstr.str().c_str());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">else</span></div><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="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(valVar-><a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()) << <span class="stringliteral">"\n"</span> << <span class="stringliteral">" type: "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">type2String</a>(type) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what other types we have"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span></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="keywordflow">if</span> (svfir-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>() == valVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  e = getContext().int_val(0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  e = getContext().int_const(rawstr.str().c_str());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<DummyValVar>(valVar) && <span class="stringliteral">"not a DummValVar if it has no type?"</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</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="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb"> 75</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb">ExeState::initObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar, <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &e)</div><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>  std::string str;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  rawstr << <span class="stringliteral">"ObjVar"</span> << objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (objVar-><a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div><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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> *obj = objVar-><a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (obj-><a class="code" href="classSVF_1_1MemObj.html#aa50d7c3b4e7ac0aa769bc094bea26e16">isConstantData</a>() || obj-><a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>() || obj-><a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *consInt = SVFUtil::dyn_cast<ConstantInt>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</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>  <span class="keywordflow">if</span> (consInt == llvm::ConstantInt::getTrue(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>()))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  e = getContext().int_val(1);</div><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">else</span> <span class="keywordflow">if</span> (consInt == llvm::ConstantInt::getFalse(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getContext()))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  e = getContext().int_val(0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">else</span></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>  e = getContext().int_val(consInt->getSExtValue());</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="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> llvm::ConstantFP *consFP = SVFUtil::dyn_cast<llvm::ConstantFP>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  e = getContext().int_val(static_cast<u32_t>(consFP->getValue().convertToFloat()));</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantPointerNull>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  e = getContext().int_val(0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  e = getContext().int_val(getVirtualMemAddress(objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  std::cerr << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what other types of values we have?"</span>);</div><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>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">else</span></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>  e = getContext().int_val(getVirtualMemAddress(objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<DummyObjVar>(objVar) &&</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="stringliteral">"it should either be a blackhole or constant dummy if this obj has no value?"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  e = getContext().int_val(getVirtualMemAddress(objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</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="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f"> 133</a></span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &<a class="code" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">ExeState::getZ3Expr</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(getInternalID(varId) == varId && <span class="stringliteral">"SVFVar idx overflow > 0x7f000000?"</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &e = varToVal[varId];</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (eq(e, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Z3Expr::nullExpr</a>()))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  std::string str;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *svfVar = svfir-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varId);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar = dyn_cast<ValVar>(svfVar))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  initValVar(valVar, e);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar = dyn_cast<ObjVar>(svfVar))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  initObjVar(objVar, e);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">else</span></div><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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"var type not supported"</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> e;</div><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> </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270"> 159</a></span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &<a class="code" href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270">ExeState::operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &rhs)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (*<span class="keyword">this</span> != rhs)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  varToVal = rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  locToVal = rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  pathConstraint = rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21"> 175</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21">ExeState::operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword"></span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> eq(pathConstraint, rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>()) && eqVarToValMap(varToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()) &&</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  eqVarToValMap(locToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>());</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108"> 186</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108">ExeState::operator<</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"></span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// judge from path constraint</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (!eq(pathConstraint, rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>()))</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> pathConstraint.id() < rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>().<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (lessThanVarToValMap(varToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()) || lessThanVarToValMap(locToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>()))</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece"> 196</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece">ExeState::eqVarToValMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"></span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(lhs.size() != rhs.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &item: lhs)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">auto</span> it = rhs.find(item.first);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// return false if SVFVar not exists in rhs or z3Expr not equal</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (it == rhs.end() || !eq(item.second, it->second))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><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> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb"> 209</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb">ExeState::lessThanVarToValMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword"></span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(lhs.size() != rhs.size()) <span class="keywordflow">return</span> lhs.size() < rhs.size();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &item: lhs)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">auto</span> it = rhs.find(item.first);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// lhs > rhs if SVFVar not exists in rhs</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (it == rhs.end())</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// judge from expr id</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (!eq(item.second, it->second))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> item.second.id() < it->second.id();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a"> 229</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a">ExeState::store</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &loc, <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &value)</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(loc.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() && <span class="stringliteral">"location must be numeral"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> virAddr = z3Expr2NumValue(loc);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVirtualMemAddress(virAddr) && <span class="stringliteral">"Pointer operand is not a physical address?"</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  store(getInternalID(virAddr), value);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013"> 242</a></span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &<a class="code" href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013">ExeState::load</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &loc)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(loc.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() && <span class="stringliteral">"location must be numeral"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> virAddr = z3Expr2NumValue(loc);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVirtualMemAddress(virAddr) && <span class="stringliteral">"Pointer operand is not a physical address?"</span>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId = getInternalID(virAddr);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(getInternalID(objId) == objId && <span class="stringliteral">"SVFVar idx overflow > 0x7f000000?"</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> load(objId);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2"> 255</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2">ExeState::printExprValues</a>()</div><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>  std::cout.flags(std::ios::left);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  std::cout << <span class="stringliteral">"-----------Var and Value-----------\n"</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &item: getVarToVal())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  std::stringstream exprName;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  exprName << <span class="stringliteral">"Var"</span> << item.first;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  std::cout << std::setw(25) << exprName.str();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &sim = item.second.<a class="code" href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">simplify</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span> (sim.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() && isVirtualMemAddress(z3Expr2NumValue(sim)))</div><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>  std::cout << <span class="stringliteral">"\t Value: "</span> << std::hex << <span class="stringliteral">"0x"</span> << z3Expr2NumValue(sim) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  std::cout << <span class="stringliteral">"\t Value: "</span> << std::dec << sim << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  std::cout << <span class="stringliteral">"-----------------------------------------\n"</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_ad1802109545427278e3a8bde52e016b0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">SVF::Z3Expr::is_numeral</a></div><div class="ttdeci">bool is_numeral() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00117">Z3Expr.h:117</a></div></div>
|
|
69
|
+
<a href="ExeState_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- ExeState.cpp -- Execution State ----------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">/*</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> * ExeState.cpp</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> *</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * Created on: April 29, 2022</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Author: Xiao</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="ExeState_8h.html">Util/ExeState.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <iomanip></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> z3::context *<a class="code" href="classSVF_1_1Z3Expr.html#a7dce19d65c7a0b50d21127a07aa51bf8">Z3Expr::ctx</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf"> 42</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#a7b3013578baac3ce73bc544569c3dbbf">ExeState::initValVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar, <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &e)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::string str;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  rawstr << <span class="stringliteral">"ValVar"</span> << valVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type = valVar-><a class="code" href="classSVF_1_1SVFVar.html#adaaf24b8b6ec06476cea112533c24066">getType</a>())</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (type->isIntegerTy() || type->isFloatingPointTy() || type->isPointerTy() || type->isFunctionTy()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  || type->isStructTy() || type->isArrayTy() || type->isVoidTy() || type->isLabelTy() || type->isMetadataTy())</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  e = getContext().int_const(rawstr.str().c_str());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">else</span></div><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="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(valVar-><a class="code" href="classSVF_1_1SVFVar.html#afaa33caa8d2a306f6741d9d066243e40">getValue</a>()) << <span class="stringliteral">"\n"</span> << <span class="stringliteral">" type: "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">type2String</a>(type) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what other types we have"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span></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="keywordflow">if</span> (svfir-><a class="code" href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">getNullPtr</a>() == valVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  e = getContext().int_val(0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  e = getContext().int_const(rawstr.str().c_str());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<DummyValVar>(valVar) && <span class="stringliteral">"not a DummValVar if it has no type?"</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</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="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb"> 75</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#af4018e9053baa373b590230bc53b7ccb">ExeState::initObjVar</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar, <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &e)</div><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>  std::string str;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  rawstr << <span class="stringliteral">"ObjVar"</span> << objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (objVar-><a class="code" href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">hasValue</a>())</div><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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a> *obj = objVar-><a class="code" href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">getMemObj</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (obj-><a class="code" href="classSVF_1_1MemObj.html#aa50d7c3b4e7ac0aa769bc094bea26e16">isConstantData</a>() || obj-><a class="code" href="classSVF_1_1MemObj.html#a7f828731597450f1d43b61413ab0e7bb">isConstantArray</a>() || obj-><a class="code" href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">isConstantStruct</a>())</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *consInt = SVFUtil::dyn_cast<ConstantInt>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</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>  <span class="keywordflow">if</span> (consInt == llvm::ConstantInt::getTrue(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">getContext</a>()))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  e = getContext().int_val(1);</div><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">else</span> <span class="keywordflow">if</span> (consInt == llvm::ConstantInt::getFalse(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getContext()))</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  e = getContext().int_val(0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">else</span></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>  e = getContext().int_val(consInt->getSExtValue());</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="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> llvm::ConstantFP *consFP = SVFUtil::dyn_cast<llvm::ConstantFP>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  e = getContext().int_val(static_cast<u32_t>(consFP->getValueAPF().convertToFloat()));</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantPointerNull>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  e = getContext().int_val(0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  e = getContext().int_val(getVirtualMemAddress(objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<ConstantAggregate>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()))</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  std::cerr << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(obj-><a class="code" href="classSVF_1_1MemObj.html#a4da54ef60231d2e6c26669226b99d2f3">getValue</a>()) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"what other types of values we have?"</span>);</div><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>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">else</span></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>  e = getContext().int_val(getVirtualMemAddress(objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa<DummyObjVar>(objVar) &&</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="stringliteral">"it should either be a blackhole or constant dummy if this obj has no value?"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  e = getContext().int_val(getVirtualMemAddress(objVar-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</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="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f"> 133</a></span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &<a class="code" href="classSVF_1_1ExeState.html#ab52debe3aae77d1efd5de4d220dbed2f">ExeState::getZ3Expr</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> varId)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(getInternalID(varId) == varId && <span class="stringliteral">"SVFVar idx overflow > 0x7f000000?"</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &e = varToVal[varId];</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (eq(e, <a class="code" href="classSVF_1_1Z3Expr.html#a9aa800372d57db519d484cc32ea1c5dc">Z3Expr::nullExpr</a>()))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  std::string str;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfir = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *svfVar = svfir-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(varId);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ValVar.html">ValVar</a> *valVar = dyn_cast<ValVar>(svfVar))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  initValVar(valVar, e);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjVar.html">ObjVar</a> *objVar = dyn_cast<ObjVar>(svfVar))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  initObjVar(objVar, e);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">else</span></div><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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"var type not supported"</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> e;</div><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> </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270"> 159</a></span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &<a class="code" href="classSVF_1_1ExeState.html#a0c6a0cd40fc94cc2c3829d6ae0a21270">ExeState::operator=</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &rhs)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (*<span class="keyword">this</span> != rhs)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  varToVal = rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  locToVal = rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  pathConstraint = rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21"> 175</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a0e4c8a41aa861ff2862d8b620c902f21">ExeState::operator==</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keyword"></span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> eq(pathConstraint, rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>()) && eqVarToValMap(varToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()) &&</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  eqVarToValMap(locToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>());</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108"> 186</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108">ExeState::operator<</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html">ExeState</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword"></span>{</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// judge from path constraint</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (!eq(pathConstraint, rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>()))</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> pathConstraint.id() < rhs.<a class="code" href="classSVF_1_1ExeState.html#a00bd54e2dc70a8547581008e27790eb8">getPathConstraint</a>().<a class="code" href="classSVF_1_1Z3Expr.html#acdb4fbb53f19bac033e79cfe96ce82ca">id</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span> (lessThanVarToValMap(varToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">getVarToVal</a>()) || lessThanVarToValMap(locToVal, rhs.<a class="code" href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">getLocToVal</a>()))</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece"> 196</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a8447b7c20dd6bb724270026f55cbdece">ExeState::eqVarToValMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword"></span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(lhs.size() != rhs.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &item: lhs)</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">auto</span> it = rhs.find(item.first);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// return false if SVFVar not exists in rhs or z3Expr not equal</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (it == rhs.end() || !eq(item.second, it->second))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><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> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb"> 209</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ExeState.html#a29c29c85982ffafd4c496e293a80eeeb">ExeState::lessThanVarToValMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">VarToValMap</a> &rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword"></span>{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(lhs.size() != rhs.size()) <span class="keywordflow">return</span> lhs.size() < rhs.size();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &item: lhs)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">auto</span> it = rhs.find(item.first);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// lhs > rhs if SVFVar not exists in rhs</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (it == rhs.end())</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// judge from expr id</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (!eq(item.second, it->second))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> item.second.id() < it->second.id();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a"> 229</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#a08db85e0e599d17b54743feb03a7717a">ExeState::store</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &loc, <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &value)</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(loc.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() && <span class="stringliteral">"location must be numeral"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> virAddr = z3Expr2NumValue(loc);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVirtualMemAddress(virAddr) && <span class="stringliteral">"Pointer operand is not a physical address?"</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  store(getInternalID(virAddr), value);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013"> 242</a></span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &<a class="code" href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013">ExeState::load</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &loc)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(loc.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() && <span class="stringliteral">"location must be numeral"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> virAddr = z3Expr2NumValue(loc);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isVirtualMemAddress(virAddr) && <span class="stringliteral">"Pointer operand is not a physical address?"</span>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> objId = getInternalID(virAddr);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(getInternalID(objId) == objId && <span class="stringliteral">"SVFVar idx overflow > 0x7f000000?"</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> load(objId);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2"> 255</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2">ExeState::printExprValues</a>()</div><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>  std::cout.flags(std::ios::left);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  std::cout << <span class="stringliteral">"-----------Var and Value-----------\n"</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &item: getVarToVal())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  std::stringstream exprName;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  exprName << <span class="stringliteral">"Var"</span> << item.first;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  std::cout << std::setw(25) << exprName.str();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1Z3Expr.html">Z3Expr</a> &sim = item.second.<a class="code" href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">simplify</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span> (sim.<a class="code" href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">is_numeral</a>() && isVirtualMemAddress(z3Expr2NumValue(sim)))</div><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>  std::cout << <span class="stringliteral">"\t Value: "</span> << std::hex << <span class="stringliteral">"0x"</span> << z3Expr2NumValue(sim) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  std::cout << <span class="stringliteral">"\t Value: "</span> << std::dec << sim << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  std::cout << <span class="stringliteral">"-----------------------------------------\n"</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="ttc" id="classSVF_1_1Z3Expr_html_ad1802109545427278e3a8bde52e016b0"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#ad1802109545427278e3a8bde52e016b0">SVF::Z3Expr::is_numeral</a></div><div class="ttdeci">bool is_numeral() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00117">Z3Expr.h:117</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00392">SymbolTableInfo.h:392</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1ValVar_html"><div class="ttname"><a href="classSVF_1_1ValVar.html">SVF::ValVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00267">SVFVariables.h:267</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1ExeState_html_a80bd7f3746198459bbcb59274cebc013"><div class="ttname"><a href="classSVF_1_1ExeState.html#a80bd7f3746198459bbcb59274cebc013">SVF::ExeState::load</a></div><div class="ttdeci">Z3Expr & load(const Z3Expr &loc)</div><div class="ttdoc">Load value at location. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00242">ExeState.cpp:242</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1ExeState_html_a4ee40de7eca22ac055b52360e0101623"><div class="ttname"><a href="classSVF_1_1ExeState.html#a4ee40de7eca22ac055b52360e0101623">SVF::ExeState::getLocToVal</a></div><div class="ttdeci">const LocToValMap & getLocToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00092">ExeState.h:92</a></div></div>
|
|
74
|
-
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
74
|
+
<div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00061">BasicTypes.h:61</a></div></div>
|
|
75
75
|
<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>
|
|
76
76
|
<div class="ttc" id="classSVF_1_1ExeState_html_a10a12722f1974d466ef07a35d9dff108"><div class="ttname"><a href="classSVF_1_1ExeState.html#a10a12722f1974d466ef07a35d9dff108">SVF::ExeState::operator<</a></div><div class="ttdeci">bool operator<(const ExeState &rhs) const</div><div class="ttdoc">Overloading Operator==. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00186">ExeState.cpp:186</a></div></div>
|
|
77
77
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ac1a9d20d62066ec4e181fad223669e32"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ac1a9d20d62066ec4e181fad223669e32">SVF::LLVMModuleSet::getContext</a></div><div class="ttdeci">LLVMContext & getContext() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00200">LLVMModule.h:200</a></div></div>
|
|
@@ -82,7 +82,7 @@ $(function() {
|
|
|
82
82
|
<div class="ttc" id="classSVF_1_1ObjVar_html"><div class="ttname"><a href="classSVF_1_1ObjVar.html">SVF::ObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00315">SVFVariables.h:315</a></div></div>
|
|
83
83
|
<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>
|
|
84
84
|
<div class="ttc" id="classSVF_1_1ExeState_html_afc4aad166cd39a6cfbd8e9b897104f3f"><div class="ttname"><a href="classSVF_1_1ExeState.html#afc4aad166cd39a6cfbd8e9b897104f3f">SVF::ExeState::VarToValMap</a></div><div class="ttdeci">Map< u32_t, Z3Expr > VarToValMap</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00043">ExeState.h:43</a></div></div>
|
|
85
|
-
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
85
|
+
<div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00097">BasicTypes.h:97</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1ObjVar_html_a6a4feb73b54e602407e35eeb09f55930"><div class="ttname"><a href="classSVF_1_1ObjVar.html#a6a4feb73b54e602407e35eeb09f55930">SVF::ObjVar::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00355">SVFVariables.h:355</a></div></div>
|
|
87
87
|
<div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1MemObj_html_a019a77516c403f1f3cc72917b810a41f"><div class="ttname"><a href="classSVF_1_1MemObj.html#a019a77516c403f1f3cc72917b810a41f">SVF::MemObj::isConstantStruct</a></div><div class="ttdeci">bool isConstantStruct() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00749">SymbolTableInfo.cpp:749</a></div></div>
|
|
@@ -95,7 +95,7 @@ $(function() {
|
|
|
95
95
|
<div class="ttc" id="classSVF_1_1Z3Expr_html_afb3478316592a395c6d473791b5a0981"><div class="ttname"><a href="classSVF_1_1Z3Expr.html#afb3478316592a395c6d473791b5a0981">SVF::Z3Expr::simplify</a></div><div class="ttdeci">Z3Expr simplify() const</div><div class="ttdef"><b>Definition:</b> <a href="Z3Expr_8h_source.html#l00127">Z3Expr.h:127</a></div></div>
|
|
96
96
|
<div class="ttc" id="classSVF_1_1ExeState_html_aee8eece3daa2b7cbebb8dcde761931c2"><div class="ttname"><a href="classSVF_1_1ExeState.html#aee8eece3daa2b7cbebb8dcde761931c2">SVF::ExeState::printExprValues</a></div><div class="ttdeci">void printExprValues()</div><div class="ttdoc">Print values of all expressions. </div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8cpp_source.html#l00255">ExeState.cpp:255</a></div></div>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1IRGraph_html_a3de9a2a565c303f68a90c32dc59febd5"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a3de9a2a565c303f68a90c32dc59febd5">SVF::IRGraph::getNullPtr</a></div><div class="ttdeci">NodeID getNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00160">IRGraph.h:160</a></div></div>
|
|
98
|
-
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
98
|
+
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
99
99
|
<div class="ttc" id="ExeState_8h_html"><div class="ttname"><a href="ExeState_8h.html">ExeState.h</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1ExeState_html_abf1237f5e4661a2da6e479f147957b18"><div class="ttname"><a href="classSVF_1_1ExeState.html#abf1237f5e4661a2da6e479f147957b18">SVF::ExeState::getVarToVal</a></div><div class="ttdeci">const VarToValMap & getVarToVal() const</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00087">ExeState.h:87</a></div></div>
|
|
101
101
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00055">SVFUtil.h:55</a></div></div>
|
|
@@ -74,8 +74,8 @@ $(function() {
|
|
|
74
74
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a66bcd64afcfaf09c49d2f445cd112f1d"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a66bcd64afcfaf09c49d2f445cd112f1d">SVF::ExtAPI::EFT_FREE_MULTILEVEL</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00056">ExtAPI.h:56</a></div></div>
|
|
75
75
|
<div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
|
|
76
76
|
<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>
|
|
77
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ab672f0255ec8e42d5e414bc8c72b7c76"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">SVF::SVFFunction::isDeclaration</a></div><div class="ttdeci">bool isDeclaration() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
78
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
77
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ab672f0255ec8e42d5e414bc8c72b7c76"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ab672f0255ec8e42d5e414bc8c72b7c76">SVF::SVFFunction::isDeclaration</a></div><div class="ttdeci">bool isDeclaration() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
|
|
78
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
|
|
79
79
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aab5731ba773144c7cbb5609e9b807eae"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aab5731ba773144c7cbb5609e9b807eae">SVF::ExtAPI::has_static2</a></div><div class="ttdeci">bool has_static2(const SVFFunction *F) const</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00157">ExtAPI.h:157</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094aed5f4c75cc5016c61f441abf06a2bf21">SVF::ExtAPI::EFT_STD_LIST_HOOK</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00084">ExtAPI.h:84</a></div></div>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a7f75d2265448acf50cd59151a1241054"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a7f75d2265448acf50cd59151a1241054">SVF::ExtAPI::CPP_EFT_A0R_A1R</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00087">ExtAPI.h:87</a></div></div>
|
|
@@ -121,7 +121,7 @@ $(function() {
|
|
|
121
121
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a515c2184a7461fc1788a514432a7ec22"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a515c2184a7461fc1788a514432a7ec22">SVF::ExtAPI::EFT_STAT2</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00059">ExtAPI.h:59</a></div></div>
|
|
122
122
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a4c1361546aa103c26b11b0b89dc8d482"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a4c1361546aa103c26b11b0b89dc8d482">SVF::ExtAPI::EFT_A1R_A0</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00072">ExtAPI.h:72</a></div></div>
|
|
123
123
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094afe69efc20e29f95e0e333d1a462576a2"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094afe69efc20e29f95e0e333d1a462576a2">SVF::ExtAPI::EFT_A4R_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00080">ExtAPI.h:80</a></div></div>
|
|
124
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_a7b4c6c7143d012802ea5ee962bec2deb"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a7b4c6c7143d012802ea5ee962bec2deb">SVF::SVFFunction::isIntrinsic</a></div><div class="ttdeci">bool isIntrinsic() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
124
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_a7b4c6c7143d012802ea5ee962bec2deb"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a7b4c6c7143d012802ea5ee962bec2deb">SVF::SVFFunction::isIntrinsic</a></div><div class="ttdeci">bool isIntrinsic() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00161">BasicTypes.h:161</a></div></div>
|
|
125
125
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">SVF::ExtAPI::EFT_L_A0__A0R_A1R</a></div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00065">ExtAPI.h:65</a></div></div>
|
|
126
126
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_af09ae44b9311d3dfd9eafd41da8c31be"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#af09ae44b9311d3dfd9eafd41da8c31be">SVF::ExtAPI::is_dealloc</a></div><div class="ttdeci">bool is_dealloc(const SVFFunction *F) const</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00200">ExtAPI.h:200</a></div></div>
|
|
127
127
|
<div class="ttc" id="classSVF_1_1ExtAPI_html_a90b433cf855adcf34c6ef7f7e5be62b1"><div class="ttname"><a href="classSVF_1_1ExtAPI.html#a90b433cf855adcf34c6ef7f7e5be62b1">SVF::ExtAPI::get_type</a></div><div class="ttdeci">extf_t get_type(const SVFFunction *F) const</div><div class="ttdef"><b>Definition:</b> <a href="ExtAPI_8h_source.html#l00133">ExtAPI.h:133</a></div></div>
|
|
@@ -115,7 +115,7 @@ $(function() {
|
|
|
115
115
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
|
|
116
116
|
<div class="ttc" id="classSVF_1_1MemSSA_html"><div class="ttname"><a href="classSVF_1_1MemSSA.html">SVF::MemSSA</a></div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00046">MemSSA.h:46</a></div></div>
|
|
117
117
|
<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#l00104">SVFBasicTypes.h:104</a></div></div>
|
|
118
|
-
<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#
|
|
118
|
+
<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#l00069">BasicTypes.h:69</a></div></div>
|
|
119
119
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
|
|
120
120
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
|
|
121
121
|
<div class="ttc" id="classSVF_1_1MTASVFGBuilder_html_a3b75cd10a314c920669cd0d4790e1a16"><div class="ttname"><a href="classSVF_1_1MTASVFGBuilder.html#a3b75cd10a314c920669cd0d4790e1a16">SVF::MTASVFGBuilder::buildSVFG</a></div><div class="ttdeci">virtual void buildSVFG()</div><div class="ttdoc">Re-write create SVFG method. </div><div class="ttdef"><b>Definition:</b> <a href="FSMPTA_8cpp_source.html#l00025">FSMPTA.cpp:25</a></div></div>
|
|
@@ -68,7 +68,7 @@ $(function() {
|
|
|
68
68
|
<div class="contents">
|
|
69
69
|
<a href="FileChecker_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- FileChecker.h -- Checking incorrect file-open close errors-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * FileChecker.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 24, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef FILECHECK_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define FILECHECK_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="LeakChecker_8h.html">SABER/LeakChecker.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1FileChecker.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1FileChecker.html">FileChecker</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1FileChecker.html#a283b5e46aba5e964f0a54abc33fcb7b6"> 48</a></span>  <a class="code" href="classSVF_1_1FileChecker.html#a283b5e46aba5e964f0a54abc33fcb7b6">FileChecker</a>(): <a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</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="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1FileChecker.html#aaf316bcb90a37d577631598f738945da"> 53</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1FileChecker.html#aaf316bcb90a37d577631598f738945da">~FileChecker</a>()</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><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> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1FileChecker.html#a98a68536b8ffdb2250bbb01437598ac3"> 58</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FileChecker.html#a98a68536b8ffdb2250bbb01437598ac3">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(module);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1FileChecker.html#ab2ed4c1d3aa00ac663441f32d9f3115f"> 65</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FileChecker.html#ab2ed4c1d3aa00ac663441f32d9f3115f">isSourceLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-><a class="code" href="classSVF_1_1SaberCheckerAPI.html#a0977378f6f2a782041c97912762deb5f">isFOpen</a>(fun);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1FileChecker.html#aac61c4566cd79827879f4862664a432e"> 70</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1FileChecker.html#aac61c4566cd79827879f4862664a432e">isSinkLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)</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">return</span> <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-><a class="code" href="classSVF_1_1SaberCheckerAPI.html#a970676d884d66da9fce00fe5b60c96ba">isFClose</a>(fun);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FileChecker.html#a88ffc46ca954b77463de4c94c4eace54">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FileChecker.html#ac6b092dd119642f435c21a708b160b49">reportNeverClose</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1FileChecker.html#a8a4e249c4ac93b98149d25e1aa411cb0">reportPartialClose</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#endif </span><span class="comment">/* FILECHECK_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LeakChecker_html"><div class="ttname"><a href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00042">LeakChecker.h:42</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1FileChecker_html_a8a4e249c4ac93b98149d25e1aa411cb0"><div class="ttname"><a href="classSVF_1_1FileChecker.html#a8a4e249c4ac93b98149d25e1aa411cb0">SVF::FileChecker::reportPartialClose</a></div><div class="ttdeci">void reportPartialClose(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="FileChecker_8cpp_source.html#l00043">FileChecker.cpp:43</a></div></div>
|
|
71
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
71
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1FileChecker_html_aac61c4566cd79827879f4862664a432e"><div class="ttname"><a href="classSVF_1_1FileChecker.html#aac61c4566cd79827879f4862664a432e">SVF::FileChecker::isSinkLikeFun</a></div><div class="ttdeci">bool isSinkLikeFun(const SVFFunction *fun)</div><div class="ttdoc">Whether the function is a heap deallocator (free/release memory) </div><div class="ttdef"><b>Definition:</b> <a href="FileChecker_8h_source.html#l00070">FileChecker.h:70</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_acf41a2b6de063da9ed492ef0da129036"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SVF::SaberCheckerAPI::getCheckerAPI</a></div><div class="ttdeci">static SaberCheckerAPI * getCheckerAPI()</div><div class="ttdoc">Return a static reference. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00089">SaberCheckerAPI.h:89</a></div></div>
|
|
@@ -73,7 +73,7 @@ $(function() {
|
|
|
73
73
|
<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>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00414">SVFStatements.h:414</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00180">PointsTo.h:180</a></div></div>
|
|
76
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
76
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
|
|
77
77
|
<div class="ttc" id="classSVF_1_1GepVFGNode_html"><div class="ttname"><a href="classSVF_1_1GepVFGNode.html">SVF::GepVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00594">VFGNode.h:594</a></div></div>
|
|
78
78
|
<div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
|
|
79
79
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
@@ -81,7 +81,7 @@ $(function() {
|
|
|
81
81
|
<div class="ttc" id="classSVF_1_1FlowDDA_html_aa26f9b5ba2e51f904d8ede1db8584460"><div class="ttname"><a href="classSVF_1_1FlowDDA.html#aa26f9b5ba2e51f904d8ede1db8584460">SVF::FlowDDA::analyze</a></div><div class="ttdeci">virtual void analyze() override</div><div class="ttdoc">dummy analyze method </div><div class="ttdef"><b>Definition:</b> <a href="FlowDDA_8h_source.html#l00043">FlowDDA.h:43</a></div></div>
|
|
82
82
|
<div class="ttc" id="classSVF_1_1DDAVFSolver_html_a6489319b33a807f7caba2d34017a3e1b"><div class="ttname"><a href="classSVF_1_1DDAVFSolver.html#a6489319b33a807f7caba2d34017a3e1b">SVF::DDAVFSolver< NodeID, PointsTo, LocDPItem >::SVFGEdgeSet</a></div><div class="ttdeci">SVFGEdge::SVFGEdgeSetTy SVFGEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="DDAVFSolver_8h_source.html#l00039">DDAVFSolver.h:39</a></div></div>
|
|
83
83
|
<div class="ttc" id="classSVF_1_1FlowDDA_html_a9749c82c1164adb17e2ae53e725ded9a"><div class="ttname"><a href="classSVF_1_1FlowDDA.html#a9749c82c1164adb17e2ae53e725ded9a">SVF::FlowDDA::getPtrNodeID</a></div><div class="ttdeci">virtual NodeID getPtrNodeID(const NodeID &var) const override</div><div class="ttdoc">Override parent method. </div><div class="ttdef"><b>Definition:</b> <a href="FlowDDA_8h_source.html#l00086">FlowDDA.h:86</a></div></div>
|
|
84
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
84
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1FlowDDA_html_a1b8d66dbe8c6587e74d70f5d231eb69d"><div class="ttname"><a href="classSVF_1_1FlowDDA.html#a1b8d66dbe8c6587e74d70f5d231eb69d">SVF::FlowDDA::handleAddr</a></div><div class="ttdeci">virtual void handleAddr(PointsTo &pts, const LocDPItem &dpm, const AddrSVFGNode *addr) override</div><div class="ttdoc">Handle Address SVFGNode to add proper points-to. </div><div class="ttdef"><b>Definition:</b> <a href="FlowDDA_8h_source.html#l00091">FlowDDA.h:91</a></div></div>
|
|
86
86
|
<div class="ttc" id="classSVF_1_1FlowDDA_html_ae6257ef91e9d1c5aa95fdf5333c528b0"><div class="ttname"><a href="classSVF_1_1FlowDDA.html#ae6257ef91e9d1c5aa95fdf5333c528b0">SVF::FlowDDA::updateCallGraphAndSVFG</a></div><div class="ttdeci">virtual void updateCallGraphAndSVFG(const LocDPItem &dpm, const CallICFGNode *cs, SVFGEdgeSet &svfgEdges) override</div><div class="ttdoc">Update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="FlowDDA_8h_source.html#l00107">FlowDDA.h:107</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1FlowDDA_html"><div class="ttname"><a href="classSVF_1_1FlowDDA.html">SVF::FlowDDA</a></div><div class="ttdef"><b>Definition:</b> <a href="FlowDDA_8h_source.html#l00025">FlowDDA.h:25</a></div></div>
|
|
@@ -100,7 +100,7 @@ $(function() {
|
|
|
100
100
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
|
|
101
101
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a927733580b47be5ffcfced44ba9fd6c3"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a927733580b47be5ffcfced44ba9fd6c3">SVF::SVFVar::getOutgoingEdges</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy & getOutgoingEdges(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get outgoing SVFIR statements (edges) </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00158">SVFVariables.h:158</a></div></div>
|
|
102
102
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
|
|
103
|
-
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
103
|
+
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
104
104
|
<div class="ttc" id="namespaceSVF_html_ad11fe2412b2182365a662ff0e4639b48"><div class="ttname"><a href="namespaceSVF.html#ad11fe2412b2182365a662ff0e4639b48">SVF::SymID</a></div><div class="ttdeci">unsigned SymID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00091">SVFBasicTypes.h:91</a></div></div>
|
|
105
105
|
<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>
|
|
106
106
|
<div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
|