svf-tools 1.0.456 → 1.0.459
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/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Annotator_8h_source.html +2 -2
- 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 +4 -5
- 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 +7 -7
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +2 -2
- 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 +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +4 -5
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- 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 +3 -3
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +7 -7
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTA_8h_source.html +4 -5
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PCG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
- 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 +7 -7
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- 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 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
- 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 +7 -8
- package/SVF-doxygen/html/html/SVFUtil_8h.html +6 -3
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +15 -15
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +3 -4
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +18 -19
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +1 -1
- 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 +2 -2
- 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_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 +2 -2
- 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 +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +6 -6
- 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_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +13 -13
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +5 -5
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.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_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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- 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 +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -9
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +3 -3
- 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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +17 -18
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +6 -6
- 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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- 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 +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +14 -14
- 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 +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
- 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_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_1WPAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
- package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
- package/SVF-doxygen/html/html/cuddInt_8c.html +4 -2
- package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -1
- package/SVF-doxygen/html/html/cuddInt_8h.html +4 -2
- package/SVF-doxygen/html/html/functions_func_g.html +5 -5
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +5 -5
- package/SVF-doxygen/html/html/functions_s.html +1 -1
- package/SVF-doxygen/html/html/globals_s.html +7 -13
- package/SVF-doxygen/html/html/namespaceSVF.html +19 -37
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +111 -69
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +12 -12
- package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -3
- package/SVF-doxygen/html/html/search/all_13.js +7 -8
- package/SVF-doxygen/html/html/search/all_7.js +2 -2
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_6.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_11.js +0 -1
- 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 +1 -1
- 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_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/DDA/DDAPass.h +1 -1
- package/include/MTA/LockResultValidator.h +1 -1
- package/include/MTA/MTA.h +1 -1
- package/include/MTA/MTAAnnotator.h +1 -1
- package/include/MTA/MTAResultValidator.h +1 -1
- package/include/SVF-FE/BreakConstantExpr.h +2 -2
- package/include/Util/BasicTypes.h +3 -3
- package/include/Util/SVFBasicTypes.h +1 -1
- package/include/Util/SVFUtil.h +16 -1
- package/include/WPA/WPAPass.h +1 -1
- package/lib/MTA/LockResultValidator.cpp +2 -2
- package/lib/MTA/MTAResultValidator.cpp +2 -2
- package/lib/SVF-FE/DCHG.cpp +8 -8
- package/lib/Util/ExeState.cpp +2 -2
- package/lib/Util/PTAStat.cpp +11 -3
- package/lib/Util/SVFUtil.cpp +3 -3
- package/lib/Util/ThreadAPI.cpp +12 -4
- 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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -123,7 +123,7 @@ Functions</h2></td></tr>
|
|
|
123
123
|
<div class="fragment"><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span> (copy-><a class="code" href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">getInst</a>() == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = copy-><a class="code" href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">getInst</a>();</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *mdNode = inst->getMetadata(<a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">cppUtil::ctir::vtInitMDName</a>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span> (mdNode == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *type = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a>>(mdNode);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type != <span class="keyword">nullptr</span> && <span class="stringliteral">"TBHC: bad ctir.vt.init metadata"</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">return</span> dchg-><a class="code" href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">getCanonicalType</a>(type);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> }</div><div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a02b3f4190d325c921922c25e319dc8d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">SVF::cppUtil::ctir::vtInitMDName</a></div><div class="ttdeci">const std::string vtInitMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00119">CPPUtil.h:119</a></div></div>
|
|
124
124
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_aae94dd9031a6662d509627e602aef532"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#aae94dd9031a6662d509627e602aef532">SVF::StmtVFGNode::getInst</a></div><div class="ttdeci">const Instruction * getInst() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00185">VFGNode.h:185</a></div></div>
|
|
125
125
|
<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>
|
|
126
|
-
<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#
|
|
126
|
+
<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>
|
|
127
127
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a079feacdcc3783f4a9108a3b2d2aed2c"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a079feacdcc3783f4a9108a3b2d2aed2c">SVF::DCHGraph::getCanonicalType</a></div><div class="ttdeci">const DIType * getCanonicalType(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00713">DCHG.cpp:713</a></div></div>
|
|
128
128
|
<div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
129
129
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
@@ -148,7 +148,7 @@ $(function() {
|
|
|
148
148
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_abb37c5e4e6fa4742e8dbcf397aea086e"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">SVF::FlowSensitive::processAddr</a></div><div class="ttdeci">virtual bool processAddr(const AddrSVFGNode *addr)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00416">FlowSensitive.cpp:416</a></div></div>
|
|
149
149
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00099">PointerAnalysisImpl.h:99</a></div></div>
|
|
150
150
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_abcab6281cced08d90c92d67d43a37c2c"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#abcab6281cced08d90c92d67d43a37c2c">SVF::FlowSensitiveTBHC::analyze</a></div><div class="ttdeci">virtual void analyze() override</div><div class="ttdoc">Flow sensitive analysis with FSTBHC. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00029">FlowSensitiveTBHC.cpp:29</a></div></div>
|
|
151
|
-
<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#
|
|
151
|
+
<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>
|
|
152
152
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a045ffbf7eea276d154be2cf883ea71f7"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">SVF::FlowSensitiveTBHC::getTypeFromCTirMetadata</a></div><div class="ttdeci">const DIType * getTypeFromCTirMetadata(const SVFGNode *)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00628">FlowSensitiveTBHC.cpp:628</a></div></div>
|
|
153
153
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac5683fe2e24b393ccc5cb6d8bc92cf2b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">SVF::PointerAnalysis::setObjFieldInsensitive</a></div><div class="ttdeci">void setObjFieldInsensitive(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00354">PointerAnalysis.h:354</a></div></div>
|
|
154
154
|
<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>
|
|
@@ -229,7 +229,7 @@ $(function() {
|
|
|
229
229
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a76f6f19ac2b58ab4a10a2d7e6e24e42a"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a">SVF::FlowSensitive::memSSA</a></div><div class="ttdeci">SVFGBuilder memSSA</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00283">FlowSensitive.h:283</a></div></div>
|
|
230
230
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_aeea7089c6f54b44f0509d41686b649f6"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">SVF::TypeBasedHeapCloning::getOriginalObj</a></div><div class="ttdeci">NodeID getOriginalObj(NodeID c) const</div><div class="ttdoc">Returns the original object c is cloned from. If c is not a clone, returns itself. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00101">TypeBasedHeapCloning.cpp:101</a></div></div>
|
|
231
231
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a431ec4f85eb0f029e5740b92fd9ceb32"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">SVF::PointerAnalysis::initialize</a></div><div class="ttdeci">virtual void initialize()</div><div class="ttdoc">Initialization of a pointer analysis, including building symbol table and SVFIR etc. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00113">PointerAnalysis.cpp:113</a></div></div>
|
|
232
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
232
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
|
|
233
233
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_acb11d6879836e27195c85ca882df6d17"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#acb11d6879836e27195c85ca882df6d17">SVF::FlowSensitiveTBHC::updateInFromIn</a></div><div class="ttdeci">virtual bool updateInFromIn(const SVFGNode *srcStmt, NodeID srcVar, const SVFGNode *dstStmt, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00534">FlowSensitiveTBHC.cpp:534</a></div></div>
|
|
234
234
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html">SVF::TypeBasedHeapCloning</a></div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00021">TypeBasedHeapCloning.h:21</a></div></div>
|
|
235
235
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a642613e98982259183d3f34a97f05502"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">SVF::BVDataPTAImpl::getDFPTDataTy</a></div><div class="ttdeci">DFPTDataTy * getDFPTDataTy() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00185">PointerAnalysisImpl.h:185</a></div></div>
|
|
@@ -70,7 +70,7 @@ $(function() {
|
|
|
70
70
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_aabd833b8eca182f681462209c9f24f1a"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#aabd833b8eca182f681462209c9f24f1a">llvm::generic_bridge_gep_type_iterator::begin</a></div><div class="ttdeci">static generic_bridge_gep_type_iterator begin(Type *Ty, ItTy It)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00027">GEPTypeBridgeIterator.h:27</a></div></div>
|
|
71
71
|
<div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00131">CFLGraph.h:131</a></div></div>
|
|
72
72
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_a93f554395c6f42b26bea2ba3c70442c3"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#a93f554395c6f42b26bea2ba3c70442c3">llvm::generic_bridge_gep_type_iterator::generic_bridge_gep_type_iterator</a></div><div class="ttdeci">generic_bridge_gep_type_iterator()</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00024">GEPTypeBridgeIterator.h:24</a></div></div>
|
|
73
|
-
<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#
|
|
73
|
+
<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>
|
|
74
74
|
<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>
|
|
75
75
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_a68eed6927bf5fb5cd6a6637d6c9cb300"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#a68eed6927bf5fb5cd6a6637d6c9cb300">llvm::generic_bridge_gep_type_iterator::operator++</a></div><div class="ttdeci">generic_bridge_gep_type_iterator operator++(int)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00137">GEPTypeBridgeIterator.h:137</a></div></div>
|
|
76
76
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_a4616da5f93bb639271c23f634e6e647e"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#a4616da5f93bb639271c23f634e6e647e">llvm::generic_bridge_gep_type_iterator::operator++</a></div><div class="ttdeci">generic_bridge_gep_type_iterator & operator++()</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00104">GEPTypeBridgeIterator.h:104</a></div></div>
|
|
@@ -86,10 +86,10 @@ $(function() {
|
|
|
86
86
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_ab831157001de89b02c7df98a9b513e9c"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#ab831157001de89b02c7df98a9b513e9c">llvm::generic_bridge_gep_type_iterator::operator!=</a></div><div class="ttdeci">bool operator!=(const generic_bridge_gep_type_iterator &x) const</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00058">GEPTypeBridgeIterator.h:58</a></div></div>
|
|
87
87
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_a4d10570a7a3b75fbec9fbc9fc7d3e619"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#a4d10570a7a3b75fbec9fbc9fc7d3e619">llvm::generic_bridge_gep_type_iterator::begin</a></div><div class="ttdeci">static generic_bridge_gep_type_iterator begin(Type *Ty, unsigned AddrSpace, ItTy It)</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00035">GEPTypeBridgeIterator.h:35</a></div></div>
|
|
88
88
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_acc10ad7ecc64270225cb5e8f52689673"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#acc10ad7ecc64270225cb5e8f52689673">llvm::generic_bridge_gep_type_iterator::getIndexedType</a></div><div class="ttdeci">Type * getIndexedType() const</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00070">GEPTypeBridgeIterator.h:70</a></div></div>
|
|
89
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
89
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
|
|
90
90
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_a7407c9a10bc872bcf03a2a4e67c2c188"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#a7407c9a10bc872bcf03a2a4e67c2c188">llvm::generic_bridge_gep_type_iterator::operator-></a></div><div class="ttdeci">Type * operator->() const</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00093">GEPTypeBridgeIterator.h:93</a></div></div>
|
|
91
91
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html_a1f0e8716ad7ff580240f81db1228a690"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html#a1f0e8716ad7ff580240f81db1228a690">llvm::generic_bridge_gep_type_iterator::operator==</a></div><div class="ttdeci">bool operator==(const generic_bridge_gep_type_iterator &x) const</div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00053">GEPTypeBridgeIterator.h:53</a></div></div>
|
|
92
|
-
<div class="ttc" id="namespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
92
|
+
<div class="ttc" id="namespaceSVF_html_afc1b50355821e7299df03b026e36f1df"><div class="ttname"><a href="namespaceSVF.html#afc1b50355821e7299df03b026e36f1df">SVF::User</a></div><div class="ttdeci">llvm::User User</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
|
|
93
93
|
<div class="ttc" id="classllvm_1_1generic__bridge__gep__type__iterator_html"><div class="ttname"><a href="classllvm_1_1generic__bridge__gep__type__iterator.html">llvm::generic_bridge_gep_type_iterator</a></div><div class="ttdef"><b>Definition:</b> <a href="GEPTypeBridgeIterator_8h_source.html#l00017">GEPTypeBridgeIterator.h:17</a></div></div>
|
|
94
94
|
</div><!-- fragment --></div><!-- contents -->
|
|
95
95
|
<!-- start footer part -->
|
|
@@ -102,7 +102,7 @@ $(function() {
|
|
|
102
102
|
<div class="ttc" id="cuddInt_8c_html_a936a27e51e66afb57c2b3a12d78a238e"><div class="ttname"><a href="cuddInt_8c.html#a936a27e51e66afb57c2b3a12d78a238e">entry</a></div><div class="ttdeci">static int * entry</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l08422">cuddInt.c:8422</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1IntraICFGNode_html"><div class="ttname"><a href="classSVF_1_1IntraICFGNode.html">SVF::IntraICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00175">ICFGNode.h:175</a></div></div>
|
|
105
|
-
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
105
|
+
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00068">BasicTypes.h:68</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1RetCFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html">SVF::RetCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00216">ICFGEdge.h:216</a></div></div>
|
|
107
107
|
<div class="ttc" id="CFLGrammar_8txt_html_a017fa6c558fa1eff0a13180c8340aba8"><div class="ttname"><a href="CFLGrammar_8txt.html#a017fa6c558fa1eff0a13180c8340aba8">Addr</a></div><div class="ttdeci">V Addrbar Addr</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00010">CFLGrammar.txt:10</a></div></div>
|
|
108
108
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
|
|
@@ -89,11 +89,11 @@ $(function() {
|
|
|
89
89
|
<div class="ttc" id="classSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00251">ICFGNode.h:251</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1ICFGBuilder_html_ab1cc5de5c2ee7acf83e9ae51c7b38cb5"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#ab1cc5de5c2ee7acf83e9ae51c7b38cb5">SVF::ICFGBuilder::processFunBody</a></div><div class="ttdeci">void processFunBody(WorkList &worklist)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00080">ICFGBuilder.cpp:80</a></div></div>
|
|
92
|
-
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
92
|
+
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
93
93
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
94
|
-
<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#
|
|
94
|
+
<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>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1ICFGBuilder_html_a21ecc610b7ac35f4e64b2a4a45688359"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a21ecc610b7ac35f4e64b2a4a45688359">SVF::ICFGBuilder::processFunExit</a></div><div class="ttdeci">void processFunExit(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00144">ICFGBuilder.cpp:144</a></div></div>
|
|
96
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#
|
|
96
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1InterICFGNode_html"><div class="ttname"><a href="classSVF_1_1InterICFGNode.html">SVF::InterICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00213">ICFGNode.h:213</a></div></div>
|
|
98
98
|
<div class="ttc" id="classSVF_1_1ICFGBuilder_html_a1c07cce4cae9bfc8884b37cbda06d8ac"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#a1c07cce4cae9bfc8884b37cbda06d8ac">SVF::ICFGBuilder::getOrAddInterBlockICFGNode</a></div><div class="ttdeci">InterICFGNode * getOrAddInterBlockICFGNode(const Instruction *inst)</div><div class="ttdoc">Add/Get an inter block ICFGNode. </div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00166">ICFGBuilder.cpp:166</a></div></div>
|
|
99
99
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|