svf-tools 1.0.461 → 1.0.464
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
- 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 +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +23 -23
- package/SVF-doxygen/html/html/DCHG_8h_source.html +11 -11
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +7 -6
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +51 -50
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +28 -28
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- 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 +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +5 -5
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +12 -12
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +11 -12
- package/SVF-doxygen/html/html/Options_8h_source.html +11 -12
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +157 -67
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +72 -67
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +50 -43
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +43 -42
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +20 -22
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +45 -46
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/TCT_8h_source.html +8 -8
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp.html +3 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +45 -44
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +33 -33
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -12
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +71 -76
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
- 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 +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +2 -2
- 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_1ConstraintGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
- 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 +152 -152
- package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +117 -117
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_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 +9 -9
- 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_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +18 -18
- 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 +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +1 -1
- 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_1OfflineConsG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +79 -80
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +11 -37
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
- 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_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +94 -95
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +119 -160
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +56 -55
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +125 -81
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.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 +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +18 -18
- 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 +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- 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 +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +129 -129
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
- package/SVF-doxygen/html/html/functions_func_g.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +12 -15
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +18 -14
- package/SVF-doxygen/html/html/functions_s.html +13 -15
- package/SVF-doxygen/html/html/functions_t.html +1 -3
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_w.html +10 -6
- package/SVF-doxygen/html/html/globals_d.html +12 -0
- package/SVF-doxygen/html/html/globals_g.html +5 -2
- package/SVF-doxygen/html/html/globals_s.html +3 -3
- package/SVF-doxygen/html/html/globals_type.html +15 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +35 -131
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +42 -42
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +29 -29
- package/SVF-doxygen/html/html/namespacemembers_d.html +2 -14
- package/SVF-doxygen/html/html/namespacemembers_g.html +2 -5
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -15
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_13.js +12 -12
- package/SVF-doxygen/html/html/search/all_14.js +3 -3
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_4.js +4 -4
- package/SVF-doxygen/html/html/search/all_7.js +2 -3
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_3.js +4 -4
- package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_7.js +0 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- 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 +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/include/MemoryModel/SVFIR.h +0 -1
- package/include/SVF-FE/BasicTypes.h +6 -1
- package/include/SVF-FE/SVFIRBuilder.h +1 -0
- package/include/Util/BasicTypes.h +1 -9
- package/include/Util/Options.h +0 -3
- package/lib/MemoryModel/SVFIR.cpp +4 -28
- package/lib/SVF-FE/SVFIRBuilder.cpp +25 -2
- package/lib/Util/Options.cpp +0 -8
- package/lib/WPA/FlowSensitiveTBHC.cpp +1 -0
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/TypeBasedHeapCloning.cpp +1 -0
- package/package.json +1 -1
|
@@ -145,7 +145,7 @@ Public Member Functions</h2></td></tr>
|
|
|
145
145
|
<tr class="memitem:a3af0297eb75ac4009433be44bb286d30"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a3af0297eb75ac4009433be44bb286d30">expandFIObjs</a> (const <a class="el" href="classSVF_1_1PointsTo.html">PointsTo</a> &pts, <a class="el" href="classSVF_1_1PointsTo.html">PointsTo</a> &expandedPts) override</td></tr>
|
|
146
146
|
<tr class="memdesc:a3af0297eb75ac4009433be44bb286d30"><td class="mdescLeft"> </td><td class="mdescRight">Expand FI objects. <a href="#a3af0297eb75ac4009433be44bb286d30">More...</a><br /></td></tr>
|
|
147
147
|
<tr class="separator:a3af0297eb75ac4009433be44bb286d30"><td class="memSeparator" colspan="2"> </td></tr>
|
|
148
|
-
<tr class="memitem:a045ffbf7eea276d154be2cf883ea71f7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="
|
|
148
|
+
<tr class="memitem:a045ffbf7eea276d154be2cf883ea71f7"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a> (const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> *)</td></tr>
|
|
149
149
|
<tr class="separator:a045ffbf7eea276d154be2cf883ea71f7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
150
150
|
<tr class="inherit_header pub_methods_classSVF_1_1FlowSensitive"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classSVF_1_1FlowSensitive')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classSVF_1_1FlowSensitive.html">SVF::FlowSensitive</a></td></tr>
|
|
151
151
|
<tr class="memitem:aac88b67b49cbd72912ff586d30197ffb inherit pub_methods_classSVF_1_1FlowSensitive"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *_pag, <a class="el" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type=<a class="el" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">FSSPARSE_WPA</a>)</td></tr>
|
|
@@ -552,15 +552,15 @@ Protected Member Functions</h2></td></tr>
|
|
|
552
552
|
<tr class="separator:a0890235fa3725c23435ea3245c52c038 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
553
553
|
<tr class="memitem:a59a9c7b8a7ec392ac609f10c8dac8d7f inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a59a9c7b8a7ec392ac609f10c8dac8d7f">isBlkObjOrConstantObj</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) const</td></tr>
|
|
554
554
|
<tr class="separator:a59a9c7b8a7ec392ac609f10c8dac8d7f inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
555
|
-
<tr class="memitem:add00f1c20a524c0be903af679bd6f638 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#add00f1c20a524c0be903af679bd6f638">isBase</a> (const <a class="el" href="
|
|
555
|
+
<tr class="memitem:add00f1c20a524c0be903af679bd6f638 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#add00f1c20a524c0be903af679bd6f638">isBase</a> (const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *a, const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *b) const</td></tr>
|
|
556
556
|
<tr class="separator:add00f1c20a524c0be903af679bd6f638 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
557
557
|
<tr class="memitem:abce2ba326af69312c5971246cc4c10dc inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">isClone</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) const</td></tr>
|
|
558
558
|
<tr class="memdesc:abce2ba326af69312c5971246cc4c10dc inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if o is a clone. <a href="classSVF_1_1TypeBasedHeapCloning.html#abce2ba326af69312c5971246cc4c10dc">More...</a><br /></td></tr>
|
|
559
559
|
<tr class="separator:abce2ba326af69312c5971246cc4c10dc inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
560
|
-
<tr class="memitem:ac51cd735739a2499196a87323172a6a6 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">setType</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, const <a class="el" href="
|
|
560
|
+
<tr class="memitem:ac51cd735739a2499196a87323172a6a6 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">setType</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *t)</td></tr>
|
|
561
561
|
<tr class="memdesc:ac51cd735739a2499196a87323172a6a6 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="mdescLeft"> </td><td class="mdescRight">Sets the type (in objToType) of o. <a href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">More...</a><br /></td></tr>
|
|
562
562
|
<tr class="separator:ac51cd735739a2499196a87323172a6a6 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
563
|
-
<tr class="memitem:a219edef6c013a953ed12ee3c56bde6de inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="
|
|
563
|
+
<tr class="memitem:a219edef6c013a953ed12ee3c56bde6de inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o) const</td></tr>
|
|
564
564
|
<tr class="memdesc:a219edef6c013a953ed12ee3c56bde6de inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="mdescLeft"> </td><td class="mdescRight">Returns the type (from objToType) of o. Asserts existence. <a href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">More...</a><br /></td></tr>
|
|
565
565
|
<tr class="separator:a219edef6c013a953ed12ee3c56bde6de inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
566
566
|
<tr class="memitem:a006243a1416f4950de254d0d62ba40b0 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">setAllocationSite</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> site)</td></tr>
|
|
@@ -595,9 +595,9 @@ Protected Member Functions</h2></td></tr>
|
|
|
595
595
|
<tr class="separator:afe416f9ec57923f34ef1db3890a3f9e1 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
596
596
|
<tr class="memitem:aa175b5db473eb57c03b6f908791d1133 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">getGepObjClones</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base, unsigned offset)</td></tr>
|
|
597
597
|
<tr class="separator:aa175b5db473eb57c03b6f908791d1133 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
598
|
-
<tr class="memitem:a34064efe336ada815b31050f683c7ce1 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> loc, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> p, const <a class="el" href="
|
|
598
|
+
<tr class="memitem:a34064efe336ada815b31050f683c7ce1 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> loc, <a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> p, const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *tildet, bool reuse, bool gep=false)</td></tr>
|
|
599
599
|
<tr class="separator:a34064efe336ada815b31050f683c7ce1 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
600
|
-
<tr class="memitem:a11c3d1b7f10e4aad2525d428f5855db5 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a11c3d1b7f10e4aad2525d428f5855db5">cloneObject</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, const <a class="el" href="
|
|
600
|
+
<tr class="memitem:a11c3d1b7f10e4aad2525d428f5855db5 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a11c3d1b7f10e4aad2525d428f5855db5">cloneObject</a> (<a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o, const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *type, bool reuse)</td></tr>
|
|
601
601
|
<tr class="separator:a11c3d1b7f10e4aad2525d428f5855db5 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
602
602
|
<tr class="memitem:ac6ebb2fd24fc4272faf5db6ddd1e464b inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#ac6ebb2fd24fc4272faf5db6ddd1e464b">addCloneDummyObjNode</a> (const <a class="el" href="classSVF_1_1MemObj.html">MemObj</a> *mem)</td></tr>
|
|
603
603
|
<tr class="memdesc:ac6ebb2fd24fc4272faf5db6ddd1e464b inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="mdescLeft"> </td><td class="mdescRight">Add clone dummy object node to <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. <a href="classSVF_1_1TypeBasedHeapCloning.html#ac6ebb2fd24fc4272faf5db6ddd1e464b">More...</a><br /></td></tr>
|
|
@@ -608,7 +608,7 @@ Protected Member Functions</h2></td></tr>
|
|
|
608
608
|
<tr class="memitem:a83fb1e2a7b66d5f33fa34698a52250af inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a83fb1e2a7b66d5f33fa34698a52250af">addCloneFIObjNode</a> (const <a class="el" href="classSVF_1_1MemObj.html">MemObj</a> *mem)</td></tr>
|
|
609
609
|
<tr class="memdesc:a83fb1e2a7b66d5f33fa34698a52250af inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="mdescLeft"> </td><td class="mdescRight">Add clone FI object node to <a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. <a href="classSVF_1_1TypeBasedHeapCloning.html#a83fb1e2a7b66d5f33fa34698a52250af">More...</a><br /></td></tr>
|
|
610
610
|
<tr class="separator:a83fb1e2a7b66d5f33fa34698a52250af inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
611
|
-
<tr class="memitem:ac4565775cced4444ba007e310c4a02d8 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="
|
|
611
|
+
<tr class="memitem:ac4565775cced4444ba007e310c4a02d8 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#ac4565775cced4444ba007e310c4a02d8">getTypeFromCTirMetadata</a> (const <a class="el" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *)</td></tr>
|
|
612
612
|
<tr class="separator:ac4565775cced4444ba007e310c4a02d8 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
613
613
|
<tr class="memitem:ae42ec334a7dfc96a5ead2d2845ca3b22 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#ae42ec334a7dfc96a5ead2d2845ca3b22">validateTBHCTests</a> (<a class="el" href="classSVF_1_1SVFModule.html">SVFModule</a> *svfMod)</td></tr>
|
|
614
614
|
<tr class="separator:ae42ec334a7dfc96a5ead2d2845ca3b22 inherit pro_methods_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -943,7 +943,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
943
943
|
<tr class="memdesc:adc7f5c71efb9cd1bec4f5ca9127654c3 inherit pro_static_attribs_classSVF_1_1PointerAnalysis"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>. <a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">More...</a><br /></td></tr>
|
|
944
944
|
<tr class="separator:adc7f5c71efb9cd1bec4f5ca9127654c3 inherit pro_static_attribs_classSVF_1_1PointerAnalysis"><td class="memSeparator" colspan="2"> </td></tr>
|
|
945
945
|
<tr class="inherit_header pro_static_attribs_classSVF_1_1TypeBasedHeapCloning"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_classSVF_1_1TypeBasedHeapCloning')"><img src="closed.png" alt="-"/> Static Protected Attributes inherited from <a class="el" href="classSVF_1_1TypeBasedHeapCloning.html">SVF::TypeBasedHeapCloning</a></td></tr>
|
|
946
|
-
<tr class="memitem:a6363466e64eee4405806568d26206d2e inherit pro_static_attribs_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="
|
|
946
|
+
<tr class="memitem:a6363466e64eee4405806568d26206d2e inherit pro_static_attribs_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a> = nullptr</td></tr>
|
|
947
947
|
<tr class="memdesc:a6363466e64eee4405806568d26206d2e inherit pro_static_attribs_classSVF_1_1TypeBasedHeapCloning"><td class="mdescLeft"> </td><td class="mdescRight">The undefined type (•); void. <a href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">More...</a><br /></td></tr>
|
|
948
948
|
<tr class="separator:a6363466e64eee4405806568d26206d2e inherit pro_static_attribs_classSVF_1_1TypeBasedHeapCloning"><td class="memSeparator" colspan="2"> </td></tr>
|
|
949
949
|
<tr class="memitem:a03ef2decb80ba07f4d98cae0a4497212 inherit pro_static_attribs_classSVF_1_1TypeBasedHeapCloning"><td class="memItemLeft" align="right" valign="top">static const std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a03ef2decb80ba07f4d98cae0a4497212">derefFnName</a> = "deref"</td></tr>
|
|
@@ -986,8 +986,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
986
986
|
|
|
987
987
|
<p>Constructor. </p>
|
|
988
988
|
|
|
989
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
990
|
-
<div class="fragment"><div class="line"><a name="
|
|
989
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00021">21</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
990
|
+
<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  : <a class="code" href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">FlowSensitive</a>(_pag, type), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#af4d0abf53755a070478c142add3322d8">TypeBasedHeapCloning</a>(<span class="keyword">this</span>)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="comment">// Using `this` as the argument for TypeBasedHeapCloning is okay. As PointerAnalysis, it's</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="comment">// already constructed. TypeBasedHeapCloning also doesn't use pta in the constructor so it</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="comment">// just needs to be allocated, which it is.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a734e01c66832346c61d4cda38db84f4a">allReuse</a> = <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ac7ed9100533dc399c71cdf017bfa2462">storeReuse</a> = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a734e01c66832346c61d4cda38db84f4a">allReuse</a> || <a class="code" href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">Options::TBHCStoreReuse</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div><div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_af4d0abf53755a070478c142add3322d8"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#af4d0abf53755a070478c142add3322d8">SVF::TypeBasedHeapCloning::TypeBasedHeapCloning</a></div><div class="ttdeci">TypeBasedHeapCloning(BVDataPTAImpl *pta)</div><div class="ttdoc">Constructor. pta is the pointer analysis using this object (i.e. that which is extending). </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00022">TypeBasedHeapCloning.cpp:22</a></div></div>
|
|
991
991
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ac7ed9100533dc399c71cdf017bfa2462"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ac7ed9100533dc399c71cdf017bfa2462">SVF::FlowSensitiveTBHC::storeReuse</a></div><div class="ttdeci">bool storeReuse</div><div class="ttdoc">Whether to allow for reuse at stores. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00109">FlowSensitiveTBHC.h:109</a></div></div>
|
|
992
992
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aac88b67b49cbd72912ff586d30197ffb"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aac88b67b49cbd72912ff586d30197ffb">SVF::FlowSensitive::FlowSensitive</a></div><div class="ttdeci">FlowSensitive(SVFIR *_pag, PTATY type=FSSPARSE_WPA)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00061">FlowSensitive.h:61</a></div></div>
|
|
993
993
|
<div class="ttc" id="classSVF_1_1Options_html_a10cc9fa1d4e553865343d635cf84592e"><div class="ttname"><a href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">SVF::Options::TBHCStoreReuse</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TBHCStoreReuse</div><div class="ttdoc">Whether we allow reuse for TBHC. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00241">Options.h:241</a></div></div>
|
|
@@ -1053,8 +1053,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1053
1053
|
|
|
1054
1054
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive</a>.</p>
|
|
1055
1055
|
|
|
1056
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1057
|
-
<div class="fragment"><div class="line"><a name="
|
|
1056
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00030">30</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1057
|
+
<div class="fragment"><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>  <a class="code" href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">FlowSensitive::analyze</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a267f7198600dde3054feb40def7a6681"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a267f7198600dde3054feb40def7a6681">SVF::FlowSensitive::analyze</a></div><div class="ttdeci">virtual void analyze()</div><div class="ttdoc">Flow sensitive analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00086">FlowSensitive.cpp:86</a></div></div>
|
|
1058
1058
|
</div><!-- fragment -->
|
|
1059
1059
|
</div>
|
|
1060
1060
|
</div>
|
|
@@ -1085,17 +1085,17 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1085
1085
|
|
|
1086
1086
|
<p>Implements <a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a1d48cd7ccbcd9bdf1470a5d9aca3298d">SVF::TypeBasedHeapCloning</a>.</p>
|
|
1087
1087
|
|
|
1088
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1089
|
-
<div class="fragment"><div class="line"><a name="
|
|
1088
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00065">65</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1089
|
+
<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *cloneObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(clone);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cloneObj && <span class="stringliteral">"FSTBHC: clone does not exist in SVFIR?"</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a> *originalObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(clone));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(cloneObj && <span class="stringliteral">"FSTBHC: original object does not exist in SVFIR?"</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Check the original object too because when reuse of a gep occurs, the new object</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// is an FI object.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span> (SVFUtil::isa<CloneGepObjVar>(cloneObj) || SVFUtil::isa<GepObjVar>(originalObj))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Since getGepObjClones is updated, some GEP nodes need to be redone.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &retrievers = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">gepToSVFGRetrievers</a>[<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(clone)];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> r : retrievers)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">pushIntoWorklist</a>(r);</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>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<CloneFIObjVar>(cloneObj) || SVFUtil::isa<CloneDummyObjVar>(cloneObj))</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">pushIntoWorklist</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a5681d78630ca8770dd493ef3841ec683">getAllocationSite</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(clone)));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"FSTBHC: unexpected object type?"</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="ttc" id="classSVF_1_1WPASolver_html_a4af1c3e72f5af96c4facff672108da58"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a4af1c3e72f5af96c4facff672108da58">SVF::WPASolver::pushIntoWorklist</a></div><div class="ttdeci">virtual void pushIntoWorklist(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00162">WPASolver.h:162</a></div></div>
|
|
1090
1090
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1091
1091
|
<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>
|
|
1092
1092
|
<div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
|
|
1093
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a5681d78630ca8770dd493ef3841ec683"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a5681d78630ca8770dd493ef3841ec683">SVF::TypeBasedHeapCloning::getAllocationSite</a></div><div class="ttdeci">NodeID getAllocationSite(NodeID o) const</div><div class="ttdoc">Returns the allocation site (from objToAllocation) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1093
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a5681d78630ca8770dd493ef3841ec683"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a5681d78630ca8770dd493ef3841ec683">SVF::TypeBasedHeapCloning::getAllocationSite</a></div><div class="ttdeci">NodeID getAllocationSite(NodeID o) const</div><div class="ttdoc">Returns the allocation site (from objToAllocation) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00070">TypeBasedHeapCloning.cpp:70</a></div></div>
|
|
1094
1094
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1095
1095
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_acd6ade2b73c19d1eb7faf0e457becba6"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">SVF::FlowSensitiveTBHC::gepToSVFGRetrievers</a></div><div class="ttdeci">Map< NodeID, NodeBS > gepToSVFGRetrievers</div><div class="ttdoc">Maps GEP objects to the SVFG nodes that retrieved them with getGepObjClones. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00115">FlowSensitiveTBHC.h:115</a></div></div>
|
|
1096
1096
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1097
1097
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
|
|
1098
|
-
<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#
|
|
1098
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
1099
1099
|
</div><!-- fragment -->
|
|
1100
1100
|
</div>
|
|
1101
1101
|
</div>
|
|
@@ -1206,15 +1206,15 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1206
1206
|
|
|
1207
1207
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a94dc671f524ed3ed00f5a54b13f18e18">SVF::FlowSensitive</a>.</p>
|
|
1208
1208
|
|
|
1209
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1210
|
-
<div class="fragment"><div class="line"><a name="
|
|
1209
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00657">657</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1210
|
+
<div class="fragment"><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<std::pair<NodeID, NodeID></a>, <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>> filteredPts;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">for</span> (std::pair<NodeID, NodeID> locP : cmp)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(locP.first);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(locP.second);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &ptsFiltered = filteredPts[locP];</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">if</span> (filterSet.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(o)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  ptsFiltered.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(o);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">for</span> (std::pair<NodeID, NodeID> locPA : cmp)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &aPts = filteredPts[locPA];</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">for</span> (std::pair<NodeID, NodeID> locPB : cmp)</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span> (locPB == locPA) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &bPts = filteredPts[locPB];</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">switch</span> (<a class="code" href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">alias</a>(aPts, bPts))</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>:</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  ++(*noAliases);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>:</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  ++(*mayAliases);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="stringliteral">"Not May/NoAlias?"</span>);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1211
1211
|
<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>
|
|
1212
1212
|
<div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00109">SVFBasicTypes.h:109</a></div></div>
|
|
1213
1213
|
<div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00127">PointsTo.cpp:127</a></div></div>
|
|
1214
1214
|
<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>
|
|
1215
1215
|
<div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00198">SVFBasicTypes.h:198</a></div></div>
|
|
1216
1216
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00153">PointsTo.cpp:153</a></div></div>
|
|
1217
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1217
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00114">TypeBasedHeapCloning.cpp:114</a></div></div>
|
|
1218
1218
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_adaba5a41a60e32d18d964bdb8ae5b2df"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#adaba5a41a60e32d18d964bdb8ae5b2df">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00463">PointerAnalysisImpl.cpp:463</a></div></div>
|
|
1219
1219
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1220
1220
|
<div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">SVF::NoAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00197">SVFBasicTypes.h:197</a></div></div>
|
|
@@ -1246,14 +1246,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1246
1246
|
</div><div class="memdoc">
|
|
1247
1247
|
<p>Determines whether each GEP is for a load or not. Builds gepIsLoad map. This is a quick heuristic; if all destination nodes are loads, it's a load. </p>
|
|
1248
1248
|
|
|
1249
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1250
|
-
<div class="fragment"><div class="line"><a name="
|
|
1249
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00575">575</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1250
|
+
<div class="fragment"><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVFG::iterator</a> nI = <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nI != <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nI)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *svfgNode = nI->second;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a> *gep = SVFUtil::dyn_cast<GepSVFGNode>(svfgNode))</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="comment">// Only care about ctir nodes - they have the reuse problem.</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(gep))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordtype">bool</span> isLoad = <span class="keyword">true</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a> *e : gep->getOutEdges())</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a> *dst = e->getDstNode();</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="comment">// Loop on itself - don't care.</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span> (gep == dst) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<LoadSVFGNode>(dst))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  isLoad = <span class="keyword">false</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">if</span> (isLoad)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a5c96229c2da784a3db98ecbdd3137434">loadGeps</a>.set(gep->getId());</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1251
1251
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1252
1252
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
1253
1253
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a5c96229c2da784a3db98ecbdd3137434"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a5c96229c2da784a3db98ecbdd3137434">SVF::FlowSensitiveTBHC::loadGeps</a></div><div class="ttdeci">NodeBS loadGeps</div><div class="ttdoc">Maps whether a (SVFG) GEP node is a load or not. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00117">FlowSensitiveTBHC.h:117</a></div></div>
|
|
1254
1254
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
1255
1255
|
<div class="ttc" id="classSVF_1_1VFG_html_a241d0489bf0315460e2b07db87e7847c"><div class="ttname"><a href="classSVF_1_1VFG.html#a241d0489bf0315460e2b07db87e7847c">SVF::VFG::iterator</a></div><div class="ttdeci">VFGNodeIDToNodeMapTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00080">VFG.h:80</a></div></div>
|
|
1256
|
-
<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#
|
|
1256
|
+
<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#l00629">FlowSensitiveTBHC.cpp:629</a></div></div>
|
|
1257
1257
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
1258
1258
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
1259
1259
|
</div><!-- fragment -->
|
|
@@ -1298,10 +1298,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1298
1298
|
|
|
1299
1299
|
<p>Reimplemented from <a class="el" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl</a>.</p>
|
|
1300
1300
|
|
|
1301
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1302
|
-
<div class="fragment"><div class="line"><a name="
|
|
1301
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00643">643</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1302
|
+
<div class="fragment"><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  expandedPts = pts;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  expandedPts |= <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">while</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gepObj = SVFUtil::dyn_cast<GepObjVar>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(o)))</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  expandedPts |= <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  o = gepObj->getBaseNode();</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  }</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1303
1303
|
<div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00436">SVFVariables.h:436</a></div></div>
|
|
1304
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a56dc95bb4b6d48f82c87c6280237990a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1304
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a56dc95bb4b6d48f82c87c6280237990a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00530">FlowSensitiveTBHC.cpp:530</a></div></div>
|
|
1305
1305
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1306
1306
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
|
|
1307
1307
|
</div><!-- fragment -->
|
|
@@ -1335,11 +1335,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1335
1335
|
|
|
1336
1336
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>.</p>
|
|
1337
1337
|
|
|
1338
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1339
|
-
<div class="fragment"><div class="line"><a name="
|
|
1338
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00053">53</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1339
|
+
<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">FlowSensitive::finalize</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// ^ Will print call graph and alias stats.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">print_stat</a>)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a1a7b51e7d959795c00383721b013834d">dumpStats</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// getDFPTDataTy()->dumpPTData();</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>  <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae42ec334a7dfc96a5ead2d2845ca3b22">validateTBHCTests</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">svfMod</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_afed358369102f01f6fe88b1433e704c3"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00131">FlowSensitive.cpp:131</a></div></div>
|
|
1340
1340
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7e8b3f6843e5ea75fd189162d2cd60a5"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7e8b3f6843e5ea75fd189162d2cd60a5">SVF::PointerAnalysis::svfMod</a></div><div class="ttdeci">SVFModule * svfMod</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00149">PointerAnalysis.h:149</a></div></div>
|
|
1341
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a1a7b51e7d959795c00383721b013834d"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a1a7b51e7d959795c00383721b013834d">SVF::TypeBasedHeapCloning::dumpStats</a></div><div class="ttdeci">void dumpStats(void)</div><div class="ttdoc">Dump some statistics we tracked. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1342
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae42ec334a7dfc96a5ead2d2845ca3b22"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae42ec334a7dfc96a5ead2d2845ca3b22">SVF::TypeBasedHeapCloning::validateTBHCTests</a></div><div class="ttdeci">void validateTBHCTests(SVFModule *svfMod)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1341
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a1a7b51e7d959795c00383721b013834d"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a1a7b51e7d959795c00383721b013834d">SVF::TypeBasedHeapCloning::dumpStats</a></div><div class="ttdeci">void dumpStats(void)</div><div class="ttdoc">Dump some statistics we tracked. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00732">TypeBasedHeapCloning.cpp:732</a></div></div>
|
|
1342
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae42ec334a7dfc96a5ead2d2845ca3b22"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae42ec334a7dfc96a5ead2d2845ca3b22">SVF::TypeBasedHeapCloning::validateTBHCTests</a></div><div class="ttdeci">void validateTBHCTests(SVFModule *svfMod)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00563">TypeBasedHeapCloning.cpp:563</a></div></div>
|
|
1343
1343
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a3550ea3f087ec557a6fe076bc443b05d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a3550ea3f087ec557a6fe076bc443b05d">SVF::PointerAnalysis::print_stat</a></div><div class="ttdeci">bool print_stat</div><div class="ttdoc">User input flags. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00139">PointerAnalysis.h:139</a></div></div>
|
|
1344
1344
|
</div><!-- fragment -->
|
|
1345
1345
|
</div>
|
|
@@ -1369,8 +1369,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1369
1369
|
</div><div class="memdoc">
|
|
1370
1370
|
<p>Returns true if the given GEP is for loads, false otherwise. If the node ID is not for a GEP <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node, returns false. </p>
|
|
1371
1371
|
|
|
1372
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1373
|
-
<div class="fragment"><div class="line"><a name="
|
|
1372
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00609">609</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1373
|
+
<div class="fragment"><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="comment">// Handles when gep is not even a GEP; loadGeps only contains GEPs.</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a5c96229c2da784a3db98ecbdd3137434">loadGeps</a>.test(gep);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a5c96229c2da784a3db98ecbdd3137434"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a5c96229c2da784a3db98ecbdd3137434">SVF::FlowSensitiveTBHC::loadGeps</a></div><div class="ttdeci">NodeBS loadGeps</div><div class="ttdoc">Maps whether a (SVFG) GEP node is a load or not. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00117">FlowSensitiveTBHC.h:117</a></div></div>
|
|
1374
1374
|
</div><!-- fragment -->
|
|
1375
1375
|
</div>
|
|
1376
1376
|
</div>
|
|
@@ -1400,8 +1400,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1400
1400
|
|
|
1401
1401
|
<p>Reimplemented from <a class="el" href="classSVF_1_1PointerAnalysis.html#a5dddd53b4ca9d7cc23d88ed9f3de9fde">SVF::PointerAnalysis</a>.</p>
|
|
1402
1402
|
|
|
1403
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1404
|
-
<div class="fragment"><div class="line"><a name="
|
|
1403
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00530">530</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1404
|
+
<div class="fragment"><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#afe416f9ec57923f34ef1db3890a3f9e1">getGepObjs</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div><div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_afe416f9ec57923f34ef1db3890a3f9e1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#afe416f9ec57923f34ef1db3890a3f9e1">SVF::TypeBasedHeapCloning::getGepObjs</a></div><div class="ttdeci">const NodeBS & getGepObjs(NodeID base)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00138">TypeBasedHeapCloning.cpp:138</a></div></div>
|
|
1405
1405
|
</div><!-- fragment -->
|
|
1406
1406
|
</div>
|
|
1407
1407
|
</div>
|
|
@@ -1430,8 +1430,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1430
1430
|
</div><div class="memdoc">
|
|
1431
1431
|
<p>Returns raw ctir metadata of the instruction behind a <a class="el" href="classSVF_1_1SVFG.html">SVFG</a> node. Wraps <a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#a21d2fd8bbef0c6f6ddddb5387569a7fa" title="Returns raw ctir metadata of a Value. Returns null if it doesn't exist. ">getRawCTirMetadata(const Value *)</a>. Returns null if it doesn't exist. </p>
|
|
1432
1432
|
|
|
1433
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1434
|
-
<div class="fragment"><div class="line"><a name="
|
|
1433
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00615">615</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1434
|
+
<div class="fragment"><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a> *stmt = SVFUtil::dyn_cast<StmtSVFGNode>(s))</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *v = stmt->getInst() ? stmt->getInst() : stmt->getPAGEdge()->getValue();</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">if</span> (v != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a21d2fd8bbef0c6f6ddddb5387569a7fa">TypeBasedHeapCloning::getRawCTirMetadata</a>(v);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> </div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> }</div><div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a21d2fd8bbef0c6f6ddddb5387569a7fa"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a21d2fd8bbef0c6f6ddddb5387569a7fa">SVF::TypeBasedHeapCloning::getRawCTirMetadata</a></div><div class="ttdeci">static const MDNode * getRawCTirMetadata(const Value *)</div><div class="ttdoc">Returns raw ctir metadata of a Value. Returns null if it doesn&#39;t exist. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00484">TypeBasedHeapCloning.cpp:484</a></div></div>
|
|
1435
1435
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
1436
1436
|
<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>
|
|
1437
1437
|
</div><!-- fragment -->
|
|
@@ -1444,7 +1444,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1444
1444
|
<div class="memproto">
|
|
1445
1445
|
<table class="memname">
|
|
1446
1446
|
<tr>
|
|
1447
|
-
<td class="memname">const <a class="el" href="
|
|
1447
|
+
<td class="memname">const <a class="el" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> * FlowSensitiveTBHC::getTypeFromCTirMetadata </td>
|
|
1448
1448
|
<td>(</td>
|
|
1449
1449
|
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5dfa3fa5129bacdc0be0c051ccf386df">SVFGNode</a> * </td>
|
|
1450
1450
|
<td class="paramname"><em>s</em></td><td>)</td>
|
|
@@ -1454,9 +1454,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1454
1454
|
</div><div class="memdoc">
|
|
1455
1455
|
<p>Extracts the value from SVFGNode (if it exists), and calls <a class="el" href="classSVF_1_1TypeBasedHeapCloning.html#ac4565775cced4444ba007e310c4a02d8">getTypeFromCTirMetadata(const Value *)</a>. If no ctir type exists, returns null (void). </p>
|
|
1456
1456
|
|
|
1457
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1458
|
-
<div class="fragment"><div class="line"><a name="
|
|
1459
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ac4565775cced4444ba007e310c4a02d8"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ac4565775cced4444ba007e310c4a02d8">SVF::TypeBasedHeapCloning::getTypeFromCTirMetadata</a></div><div class="ttdeci">const DIType * getTypeFromCTirMetadata(const Value *)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1457
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00629">629</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1458
|
+
<div class="fragment"><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StmtVFGNode.html">StmtSVFGNode</a> *stmt = SVFUtil::dyn_cast<StmtSVFGNode>(s))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *v = stmt->getInst();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">if</span> (v != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  {</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ac4565775cced4444ba007e310c4a02d8">TypeBasedHeapCloning::getTypeFromCTirMetadata</a>(v);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> </div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
1459
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ac4565775cced4444ba007e310c4a02d8"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ac4565775cced4444ba007e310c4a02d8">SVF::TypeBasedHeapCloning::getTypeFromCTirMetadata</a></div><div class="ttdeci">const DIType * getTypeFromCTirMetadata(const Value *)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00520">TypeBasedHeapCloning.cpp:520</a></div></div>
|
|
1460
1460
|
<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>
|
|
1461
1461
|
</div><!-- fragment -->
|
|
1462
1462
|
</div>
|
|
@@ -1488,19 +1488,19 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1488
1488
|
|
|
1489
1489
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#ad6243c1317503bed39411dab47c83da7">SVF::FlowSensitive</a>.</p>
|
|
1490
1490
|
|
|
1491
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1492
|
-
<div class="fragment"><div class="line"><a name="
|
|
1491
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00035">35</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1492
|
+
<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a431ec4f85eb0f029e5740b92fd9ceb32">PointerAnalysis::initialize</a>();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1FlowSensitive.html#a5cfee013a1a5821ef0c449842dd8690d">ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a> = <a class="code" href="classSVF_1_1FlowSensitive.html#a76f6f19ac2b58ab4a10a2d7e6e24e42a">memSSA</a>.<a class="code" href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">buildFullSVFG</a>(ander);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="classSVF_1_1WPASolver.html#aa04deb39cd024c051f30ac43d1d62b34">setGraph</a>(<a class="code" href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">svfg</a>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html#a88f9752372eabb71f47f13a89e4d6d9c">FlowSensitiveStat</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="classSVF_1_1DCHGraph.html">DCHGraph</a> *<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a> = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1DCHGraph.html">DCHGraph</a>>(<a class="code" href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">getCHGraph</a>());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(dchg != <span class="keyword">nullptr</span> && <span class="stringliteral">"FSTBHC: DCHGraph required!"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aaaf50870e50b45b44d4ecaaaab662770">TypeBasedHeapCloning::setDCHG</a>(dchg);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a0890235fa3725c23435ea3245c52c038">TypeBasedHeapCloning::setPAG</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Populates loadGeps.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a80052c89d1a9f54cfbf8f9790110899d">determineWhichGepsAreLoads</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_aae032e5f5d53b131d0112dc8faa464a9"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aae032e5f5d53b131d0112dc8faa464a9">SVF::FlowSensitive::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00250">FlowSensitive.h:250</a></div></div>
|
|
1493
1493
|
<div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00052">SVFGBuilder.cpp:52</a></div></div>
|
|
1494
1494
|
<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>
|
|
1495
1495
|
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00419">Andersen.h:419</a></div></div>
|
|
1496
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a80052c89d1a9f54cfbf8f9790110899d"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a80052c89d1a9f54cfbf8f9790110899d">SVF::FlowSensitiveTBHC::determineWhichGepsAreLoads</a></div><div class="ttdeci">void determineWhichGepsAreLoads(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1496
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a80052c89d1a9f54cfbf8f9790110899d"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a80052c89d1a9f54cfbf8f9790110899d">SVF::FlowSensitiveTBHC::determineWhichGepsAreLoads</a></div><div class="ttdeci">void determineWhichGepsAreLoads(void)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00575">FlowSensitiveTBHC.cpp:575</a></div></div>
|
|
1497
1497
|
<div class="ttc" id="classSVF_1_1DCHGraph_html"><div class="ttname"><a href="classSVF_1_1DCHGraph.html">SVF::DCHGraph</a></div><div class="ttdoc">Dwarf based CHG. </div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00208">DCHG.h:208</a></div></div>
|
|
1498
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a0890235fa3725c23435ea3245c52c038"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a0890235fa3725c23435ea3245c52c038">SVF::TypeBasedHeapCloning::setPAG</a></div><div class="ttdeci">void setPAG(SVFIR *pag)</div><div class="ttdoc">SVFIR must be set by extending class once the SVFIR is available. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1498
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a0890235fa3725c23435ea3245c52c038"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a0890235fa3725c23435ea3245c52c038">SVF::TypeBasedHeapCloning::setPAG</a></div><div class="ttdeci">void setPAG(SVFIR *pag)</div><div class="ttdoc">SVFIR must be set by extending class once the SVFIR is available. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00032">TypeBasedHeapCloning.cpp:32</a></div></div>
|
|
1499
1499
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a88f9752372eabb71f47f13a89e4d6d9c"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a88f9752372eabb71f47f13a89e4d6d9c">SVF::FlowSensitive::FlowSensitiveStat</a></div><div class="ttdeci">friend class FlowSensitiveStat</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00051">FlowSensitive.h:51</a></div></div>
|
|
1500
1500
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a465e67781977e83526df7e36d576e539"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">SVF::TypeBasedHeapCloning::dchg</a></div><div class="ttdeci">DCHGraph * dchg</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00047">TypeBasedHeapCloning.h:47</a></div></div>
|
|
1501
1501
|
<div class="ttc" id="classSVF_1_1WPASolver_html_aa04deb39cd024c051f30ac43d1d62b34"><div class="ttname"><a href="classSVF_1_1WPASolver.html#aa04deb39cd024c051f30ac43d1d62b34">SVF::WPASolver::setGraph</a></div><div class="ttdeci">void setGraph(GraphType g)</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00082">WPASolver.h:82</a></div></div>
|
|
1502
1502
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00206">PointerAnalysis.h:206</a></div></div>
|
|
1503
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_aaaf50870e50b45b44d4ecaaaab662770"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#aaaf50870e50b45b44d4ecaaaab662770">SVF::TypeBasedHeapCloning::setDCHG</a></div><div class="ttdeci">void setDCHG(DCHGraph *dchg)</div><div class="ttdoc">DCHG must be set by extending class once the DCHG is available. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1503
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_aaaf50870e50b45b44d4ecaaaab662770"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#aaaf50870e50b45b44d4ecaaaab662770">SVF::TypeBasedHeapCloning::setDCHG</a></div><div class="ttdeci">void setDCHG(DCHGraph *dchg)</div><div class="ttdoc">DCHG must be set by extending class once the DCHG is available. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00027">TypeBasedHeapCloning.cpp:27</a></div></div>
|
|
1504
1504
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae2cc7cd0803dbd90639140e71b06b1b5"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae2cc7cd0803dbd90639140e71b06b1b5">SVF::PointerAnalysis::getCHGraph</a></div><div class="ttdeci">CommonCHGraph * getCHGraph() const</div><div class="ttdoc">get CHGraph </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00436">PointerAnalysis.h:436</a></div></div>
|
|
1505
1505
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1506
1506
|
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00430">Andersen.h:430</a></div></div>
|
|
@@ -1540,28 +1540,28 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1540
1540
|
|
|
1541
1541
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">SVF::FlowSensitive</a>.</p>
|
|
1542
1542
|
|
|
1543
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1544
|
-
<div class="fragment"><div class="line"><a name="
|
|
1543
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00218">218</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1544
|
+
<div class="fragment"><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</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>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcID = addr-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstID = addr-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span> (!addr-><a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-><a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1FlowSensitive.html#abb37c5e4e6fa4742e8dbcf397aea086e">FlowSensitive::processAddr</a>(addr);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *objType;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">isHeapMemObj</a>(srcID))</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  objType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(srcID))</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// Probably constants that have been merged into one.</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// We make it undefined even though it's technically a global</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// to keep in line with SVF's design.</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">// This will end up splitting into one for each type of constant.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  objType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// Stack/global.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  objType = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(addr);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">setType</a>(srcID, objType);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">setAllocationSite</a>(srcID, addr-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// All the typed versions of srcID. This handles back-propagation.</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &clones = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">getClones</a>(srcID);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> c : clones)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(dstID, c) || changed;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// No need for typing these are all clones; they are all typed.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">addrTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</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>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
|
|
1545
1545
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1546
1546
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a38f3ed35185addf701d4401bfdd5f29b"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a38f3ed35185addf701d4401bfdd5f29b">SVF::FlowSensitive::addrTime</a></div><div class="ttdeci">double addrTime</div><div class="ttdoc">time of handling address edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00312">FlowSensitive.h:312</a></div></div>
|
|
1547
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ac51cd735739a2499196a87323172a6a6"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">SVF::TypeBasedHeapCloning::setType</a></div><div class="ttdeci">void setType(NodeID o, const DIType *t)</div><div class="ttdoc">Sets the type (in objToType) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1547
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ac51cd735739a2499196a87323172a6a6"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ac51cd735739a2499196a87323172a6a6">SVF::TypeBasedHeapCloning::setType</a></div><div class="ttdeci">void setType(NodeID o, const DIType *t)</div><div class="ttdoc">Sets the type (in objToType) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00054">TypeBasedHeapCloning.cpp:54</a></div></div>
|
|
1548
1548
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00136">VFGNode.h:136</a></div></div>
|
|
1549
1549
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a5d15e4b09784f438568ebe61f8aa5156"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">SVF::SVFIR::isConstantObj</a></div><div class="ttdeci">bool isConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00395">SVFIR.h:395</a></div></div>
|
|
1550
1550
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a6363466e64eee4405806568d26206d2e"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">SVF::TypeBasedHeapCloning::undefType</a></div><div class="ttdeci">static const DIType * undefType</div><div class="ttdoc">The undefined type (•); void. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00027">TypeBasedHeapCloning.h:27</a></div></div>
|
|
1551
1551
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_af68485a2208553579f9c2e4b2cb20cff"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">SVF::BVDataPTAImpl::addPts</a></div><div class="ttdeci">virtual bool addPts(NodeID id, NodeID ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00132">PointerAnalysisImpl.h:132</a></div></div>
|
|
1552
1552
|
<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>
|
|
1553
|
-
<div class="ttc" id="
|
|
1553
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a8e2336cbb1db8aa093afbb3290d5ba05"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1554
|
+
<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#l00629">FlowSensitiveTBHC.cpp:629</a></div></div>
|
|
1554
1555
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
|
|
1555
1556
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1556
1557
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
1557
1558
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae6ea391ac44dffeb6899bb44323c5361"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">SVF::PointerAnalysis::isHeapMemObj</a></div><div class="ttdeci">bool isHeapMemObj(NodeID id) const</div><div class="ttdoc">Whether this object is heap or array. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00317">PointerAnalysis.h:317</a></div></div>
|
|
1558
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a006243a1416f4950de254d0d62ba40b0"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">SVF::TypeBasedHeapCloning::setAllocationSite</a></div><div class="ttdeci">void setAllocationSite(NodeID o, NodeID site)</div><div class="ttdoc">Sets the allocation site (in objToAllocation) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1559
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a006243a1416f4950de254d0d62ba40b0"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a006243a1416f4950de254d0d62ba40b0">SVF::TypeBasedHeapCloning::setAllocationSite</a></div><div class="ttdeci">void setAllocationSite(NodeID o, NodeID site)</div><div class="ttdoc">Sets the allocation site (in objToAllocation) of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00065">TypeBasedHeapCloning.cpp:65</a></div></div>
|
|
1559
1560
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
1560
1561
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1561
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_af127bed600087b1ace26088a76ca8998"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">SVF::TypeBasedHeapCloning::getClones</a></div><div class="ttdeci">const NodeBS & getClones(NodeID o)</div><div class="ttdoc">Returns all the clones of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1562
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_af127bed600087b1ace26088a76ca8998"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">SVF::TypeBasedHeapCloning::getClones</a></div><div class="ttdeci">const NodeBS & getClones(NodeID o)</div><div class="ttdoc">Returns all the clones of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00092">TypeBasedHeapCloning.cpp:92</a></div></div>
|
|
1562
1563
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0b6c03af568b70903da6b200ac86c951"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">SVF::SVFStmt::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00059">SVFStatements.cpp:59</a></div></div>
|
|
1563
1564
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1564
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1565
1565
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
1566
1566
|
</div><!-- fragment -->
|
|
1567
1567
|
</div>
|
|
@@ -1593,14 +1593,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1593
1593
|
|
|
1594
1594
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">SVF::FlowSensitive</a>.</p>
|
|
1595
1595
|
|
|
1596
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1597
|
-
<div class="fragment"><div class="line"><a name="
|
|
1596
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00517">517</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1597
|
+
<div class="fragment"><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *vtInitType = <a class="code" href="FlowSensitiveTBHC_8cpp.html#af72d866f4ffed004e104b686d4f94cb3">getVTInitType</a>(copy, <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span> (vtInitType != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// Setting the virtual table pointer.</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(copy-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), copy-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(), vtInitType, <span class="keyword">true</span>);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  }</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">FlowSensitive::processCopy</a>(copy) || changed;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_aa401cc90de4e1c6842f08a43a28c5aa1"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa401cc90de4e1c6842f08a43a28c5aa1">SVF::FlowSensitive::processCopy</a></div><div class="ttdeci">virtual bool processCopy(const CopySVFGNode *copy)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00433">FlowSensitive.cpp:433</a></div></div>
|
|
1598
1598
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a465e67781977e83526df7e36d576e539"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">SVF::TypeBasedHeapCloning::dchg</a></div><div class="ttdeci">DCHGraph * dchg</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00047">TypeBasedHeapCloning.h:47</a></div></div>
|
|
1599
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a8e2336cbb1db8aa093afbb3290d5ba05"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1599
1600
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
|
|
1600
1601
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
1601
|
-
<div class="ttc" id="FlowSensitiveTBHC_8cpp_html_af72d866f4ffed004e104b686d4f94cb3"><div class="ttname"><a href="FlowSensitiveTBHC_8cpp.html#af72d866f4ffed004e104b686d4f94cb3">getVTInitType</a></div><div class="ttdeci">static const DIType * getVTInitType(const CopySVFGNode *copy, DCHGraph *dchg)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1602
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1603
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1602
|
+
<div class="ttc" id="FlowSensitiveTBHC_8cpp_html_af72d866f4ffed004e104b686d4f94cb3"><div class="ttname"><a href="FlowSensitiveTBHC_8cpp.html#af72d866f4ffed004e104b686d4f94cb3">getVTInitType</a></div><div class="ttdeci">static const DIType * getVTInitType(const CopySVFGNode *copy, DCHGraph *dchg)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00504">FlowSensitiveTBHC.cpp:504</a></div></div>
|
|
1603
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00272">TypeBasedHeapCloning.cpp:272</a></div></div>
|
|
1604
1604
|
</div><!-- fragment -->
|
|
1605
1605
|
</div>
|
|
1606
1606
|
</div>
|
|
@@ -1631,11 +1631,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1631
1631
|
|
|
1632
1632
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#ae017c39ac471727d06868e0eacafd791">SVF::FlowSensitive</a>.</p>
|
|
1633
1633
|
|
|
1634
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1635
|
-
<div class="fragment"><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>  <span class="comment">// Copy of that in FlowSensitive.cpp + some changes.</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> q = gep->getPAGSrcNodeID();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(gep);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span> (tildet != <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">bool</span> reuse = <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a> || (<a class="code" href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">Options::TBHCStoreReuse</a> && !<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ad5b294dacf51a89306df9a22c6799bad">gepIsLoad</a>(gep->getId()));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(gep->getId(), q, tildet, reuse, <span class="keyword">true</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (!gep->getPAGEdge()->isPTAEdge())</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& qPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(q);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(gep->getId());</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> tmpDstPts;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> oq : qPts)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (filterSet.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(oq)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a59a9c7b8a7ec392ac609f10c8dac8d7f">TypeBasedHeapCloning::isBlkObjOrConstantObj</a>(oq))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  tmpDstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(oq);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepStmt = SVFUtil::cast<GepStmt>(gep->getPAGEdge());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">if</span> (gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(oq);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  tmpDstPts.set(oq);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *t = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(oq);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (t && (t->getTag() == dwarf::DW_TAG_array_type || t->getTag() == dwarf::DW_TAG_pointer_type))</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fieldClones = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">getGepObjClones</a>(oq, 1);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fc : fieldClones)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">gepToSVFGRetrievers</a>[<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(fc)].set(gep->getId());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  tmpDstPts.set(fc);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *baseType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(oq);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// Drop down to field insensitive.</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (baseType == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(oq);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fiObj = oq;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  tmpDstPts.set(fiObj);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">DCHGraph::isAgg</a>(baseType) && baseType->getTag() != dwarf::DW_TAG_array_type</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  && ((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</a>() >= <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-><a class="code" href="classSVF_1_1DCHGraph.html#a0788694fbff155949fc4f4d6487c223e">getNumFields</a>(baseType)))</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// If the field offset is too high for this object, it is killed. It seems that a</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// clone was made on this GEP but this is not the base (e.g. base->f1->f2), and SVF</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">// expects to operate on the base (hence the large offset). The base will have been</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="comment">// cloned at another GEP and back-propagated, thus it'll reach here safe and sound.</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="comment">// We ignore arrays/pointers because those are array accesses/pointer arithmetic we</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">// assume are correct.</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// Obviously, non-aggregates cannot have their fields taken so they are spurious.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  filterSet.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(oq);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// Operate on the field and all its clones.</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fieldClones = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">getGepObjClones</a>(oq, gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</a>());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fc : fieldClones)</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">gepToSVFGRetrievers</a>[<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(fc)].set(gep->getId());</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  tmpDstPts.set(fc);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(gep->getPAGDstNodeID(), tmpDstPts) || changed;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a0788694fbff155949fc4f4d6487c223e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0788694fbff155949fc4f4d6487c223e">SVF::DCHGraph::getNumFields</a></div><div class="ttdeci">unsigned getNumFields(const DIType *base)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00335">DCHG.h:335</a></div></div>
|
|
1634
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00270">270</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1635
|
+
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">// Copy of that in FlowSensitive.cpp + some changes.</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> q = gep->getPAGSrcNodeID();</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(gep);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (tildet != <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">bool</span> reuse = <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a> || (<a class="code" href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">Options::TBHCStoreReuse</a> && !<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ad5b294dacf51a89306df9a22c6799bad">gepIsLoad</a>(gep->getId()));</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(gep->getId(), q, tildet, reuse, <span class="keyword">true</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span> (!gep->getPAGEdge()->isPTAEdge())</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& qPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(q);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(gep->getId());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> tmpDstPts;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> oq : qPts)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span> (filterSet.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(oq)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a59a9c7b8a7ec392ac609f10c8dac8d7f">TypeBasedHeapCloning::isBlkObjOrConstantObj</a>(oq))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  tmpDstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(oq);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* gepStmt = SVFUtil::cast<GepStmt>(gep->getPAGEdge());</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">if</span> (gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(oq);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  tmpDstPts.set(oq);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *t = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(oq);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span> (t && (t->getTag() == dwarf::DW_TAG_array_type || t->getTag() == dwarf::DW_TAG_pointer_type))</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fieldClones = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">getGepObjClones</a>(oq, 1);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fc : fieldClones)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">gepToSVFGRetrievers</a>[<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(fc)].set(gep->getId());</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  tmpDstPts.set(fc);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *baseType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(oq);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// Drop down to field insensitive.</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">if</span> (baseType == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(oq);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fiObj = oq;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  tmpDstPts.set(fiObj);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">DCHGraph::isAgg</a>(baseType) && baseType->getTag() != dwarf::DW_TAG_array_type</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  && ((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</a>() >= <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">dchg</a>-><a class="code" href="classSVF_1_1DCHGraph.html#a0788694fbff155949fc4f4d6487c223e">getNumFields</a>(baseType)))</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// If the field offset is too high for this object, it is killed. It seems that a</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">// clone was made on this GEP but this is not the base (e.g. base->f1->f2), and SVF</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="comment">// expects to operate on the base (hence the large offset). The base will have been</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="comment">// cloned at another GEP and back-propagated, thus it'll reach here safe and sound.</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">// We ignore arrays/pointers because those are array accesses/pointer arithmetic we</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// assume are correct.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// Obviously, non-aggregates cannot have their fields taken so they are spurious.</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  filterSet.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(oq);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// Operate on the field and all its clones.</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fieldClones = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">getGepObjClones</a>(oq, gepStmt-><a class="code" href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">getConstantFieldIdx</a>());</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> fc : fieldClones)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">gepToSVFGRetrievers</a>[<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(fc)].set(gep->getId());</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  tmpDstPts.set(fc);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">gepTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">unionPts</a>(gep->getPAGDstNodeID(), tmpDstPts) || changed;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div><div class="ttc" id="classSVF_1_1DCHGraph_html_a0788694fbff155949fc4f4d6487c223e"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a0788694fbff155949fc4f4d6487c223e">SVF::DCHGraph::getNumFields</a></div><div class="ttdeci">unsigned getNumFields(const DIType *base)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8h_source.html#l00335">DCHG.h:335</a></div></div>
|
|
1636
1636
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1637
1637
|
<div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00414">SVFStatements.h:414</a></div></div>
|
|
1638
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a59a9c7b8a7ec392ac609f10c8dac8d7f"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a59a9c7b8a7ec392ac609f10c8dac8d7f">SVF::TypeBasedHeapCloning::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID o) const</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1638
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a59a9c7b8a7ec392ac609f10c8dac8d7f"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a59a9c7b8a7ec392ac609f10c8dac8d7f">SVF::TypeBasedHeapCloning::isBlkObjOrConstantObj</a></div><div class="ttdeci">bool isBlkObjOrConstantObj(NodeID o) const</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00037">TypeBasedHeapCloning.cpp:37</a></div></div>
|
|
1639
1639
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae7073c07bfd7912f888d54d4652c7cc2"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae7073c07bfd7912f888d54d4652c7cc2">SVF::BVDataPTAImpl::unionPts</a></div><div class="ttdeci">virtual bool unionPts(NodeID id, const PointsTo &target)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00124">PointerAnalysisImpl.h:124</a></div></div>
|
|
1640
1640
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
1641
1641
|
<div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00127">PointsTo.cpp:127</a></div></div>
|
|
@@ -1643,26 +1643,26 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1643
1643
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a465e67781977e83526df7e36d576e539"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a465e67781977e83526df7e36d576e539">SVF::TypeBasedHeapCloning::dchg</a></div><div class="ttdeci">DCHGraph * dchg</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00047">TypeBasedHeapCloning.h:47</a></div></div>
|
|
1644
1644
|
<div class="ttc" id="classSVF_1_1Options_html_a10cc9fa1d4e553865343d635cf84592e"><div class="ttname"><a href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">SVF::Options::TBHCStoreReuse</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TBHCStoreReuse</div><div class="ttdoc">Whether we allow reuse for TBHC. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00241">Options.h:241</a></div></div>
|
|
1645
1645
|
<div class="ttc" id="classSVF_1_1DCHGraph_html_a9d2be5aec5216cbc1d1709b41f79c44b"><div class="ttname"><a href="classSVF_1_1DCHGraph.html#a9d2be5aec5216cbc1d1709b41f79c44b">SVF::DCHGraph::isAgg</a></div><div class="ttdeci">static bool isAgg(const DIType *t)</div><div class="ttdef"><b>Definition:</b> <a href="DCHG_8cpp_source.html#l00342">DCHG.cpp:342</a></div></div>
|
|
1646
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ad5b294dacf51a89306df9a22c6799bad"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ad5b294dacf51a89306df9a22c6799bad">SVF::FlowSensitiveTBHC::gepIsLoad</a></div><div class="ttdeci">bool gepIsLoad(NodeID gep)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1646
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ad5b294dacf51a89306df9a22c6799bad"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ad5b294dacf51a89306df9a22c6799bad">SVF::FlowSensitiveTBHC::gepIsLoad</a></div><div class="ttdeci">bool gepIsLoad(NodeID gep)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00609">FlowSensitiveTBHC.cpp:609</a></div></div>
|
|
1647
1647
|
<div class="ttc" id="classSVF_1_1Options_html_a930ed87e35ba7502f9d00be6f17f902f"><div class="ttname"><a href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">SVF::Options::TBHCAllReuse</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TBHCAllReuse</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00242">Options.h:242</a></div></div>
|
|
1648
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a8e2336cbb1db8aa093afbb3290d5ba05"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1648
1649
|
<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>
|
|
1649
|
-
<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#
|
|
1650
|
+
<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#l00629">FlowSensitiveTBHC.cpp:629</a></div></div>
|
|
1650
1651
|
<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>
|
|
1651
1652
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1652
1653
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00153">PointsTo.cpp:153</a></div></div>
|
|
1653
1654
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
1654
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a219edef6c013a953ed12ee3c56bde6de"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">SVF::TypeBasedHeapCloning::getType</a></div><div class="ttdeci">const DIType * getType(NodeID o) const</div><div class="ttdoc">Returns the type (from objToType) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1655
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a219edef6c013a953ed12ee3c56bde6de"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">SVF::TypeBasedHeapCloning::getType</a></div><div class="ttdeci">const DIType * getType(NodeID o) const</div><div class="ttdoc">Returns the type (from objToType) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00059">TypeBasedHeapCloning.cpp:59</a></div></div>
|
|
1655
1656
|
<div class="ttc" id="classSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00465">SVFStatements.h:465</a></div></div>
|
|
1656
1657
|
<div class="ttc" id="classSVF_1_1GepStmt_html_a959a9c95d25f90fd7acc8e6e36056b56"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a959a9c95d25f90fd7acc8e6e36056b56">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00459">SVFStatements.h:459</a></div></div>
|
|
1657
1658
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1658
1659
|
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_acd6ade2b73c19d1eb7faf0e457becba6"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#acd6ade2b73c19d1eb7faf0e457becba6">SVF::FlowSensitiveTBHC::gepToSVFGRetrievers</a></div><div class="ttdeci">Map< NodeID, NodeBS > gepToSVFGRetrievers</div><div class="ttdoc">Maps GEP objects to the SVFG nodes that retrieved them with getGepObjClones. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00115">FlowSensitiveTBHC.h:115</a></div></div>
|
|
1659
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1660
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_aa175b5db473eb57c03b6f908791d1133"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">SVF::TypeBasedHeapCloning::getGepObjClones</a></div><div class="ttdeci">const NodeBS getGepObjClones(NodeID base, unsigned offset)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1660
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00114">TypeBasedHeapCloning.cpp:114</a></div></div>
|
|
1661
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_aa175b5db473eb57c03b6f908791d1133"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#aa175b5db473eb57c03b6f908791d1133">SVF::TypeBasedHeapCloning::getGepObjClones</a></div><div class="ttdeci">const NodeBS getGepObjClones(NodeID base, unsigned offset)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00143">TypeBasedHeapCloning.cpp:143</a></div></div>
|
|
1661
1662
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a282126e5b67ed4e19aa40c81180b8290"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a282126e5b67ed4e19aa40c81180b8290">SVF::FlowSensitive::gepTime</a></div><div class="ttdeci">double gepTime</div><div class="ttdoc">time of handling gep edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00314">FlowSensitive.h:314</a></div></div>
|
|
1662
1663
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1663
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1664
|
-
<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#
|
|
1665
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1664
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00272">TypeBasedHeapCloning.cpp:272</a></div></div>
|
|
1665
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
1666
1666
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
1667
1667
|
</div><!-- fragment -->
|
|
1668
1668
|
</div>
|
|
@@ -1697,33 +1697,33 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1697
1697
|
|
|
1698
1698
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a9968530b3dee876f55e6659530decf27">SVF::FlowSensitive</a>.</p>
|
|
1699
1699
|
|
|
1700
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1701
|
-
<div class="fragment"><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(load);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span> (tildet != <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(load-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(), tildet, <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// We want to perform the initialisation for non-pointer nodes but not process the load.</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span> (!load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-><a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar = load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>();</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& srcPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>());</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(load-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">// unionPtsFromIn is going to call getOriginalObj on ptd anyway.</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// This results in fewer loop iterations. o_t, o_s --> o.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> srcOriginalObjs;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> s : srcPts)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">if</span> (filterSet.test(s)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(s) || <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(s)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  srcOriginalObjs.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(s));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd : srcOriginalObjs)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// filterSet tests happened while building srcOriginalObjs.</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">unionPtsFromIn</a>(load, ptd, dstVar))</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">isFIObjNode</a>(ptd))</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &allFields = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">getAllFieldsObjVars</a>(ptd);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">unionPtsFromIn</a>(load, f, dstVar))</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
|
|
1700
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00365">365</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1701
|
+
<div class="fragment"><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(load);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">if</span> (tildet != <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>)</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(load-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(), tildet, <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="comment">// We want to perform the initialisation for non-pointer nodes but not process the load.</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">if</span> (!load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-><a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstVar = load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& srcPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(load-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(load-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// unionPtsFromIn is going to call getOriginalObj on ptd anyway.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// This results in fewer loop iterations. o_t, o_s --> o.</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> srcOriginalObjs;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> s : srcPts)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span> (filterSet.test(s)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(s) || <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(s)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  srcOriginalObjs.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(<a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(s));</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd : srcOriginalObjs)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// filterSet tests happened while building srcOriginalObjs.</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">unionPtsFromIn</a>(load, ptd, dstVar))</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">isFIObjNode</a>(ptd))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &allFields = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">getAllFieldsObjVars</a>(ptd);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields)</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">unionPtsFromIn</a>(load, f, dstVar))</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">loadTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
|
|
1702
1702
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_aab4f70210eb1e6447a24697d3b459067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aab4f70210eb1e6447a24697d3b459067">SVF::FlowSensitive::loadTime</a></div><div class="ttdeci">double loadTime</div><div class="ttdoc">time of load edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00315">FlowSensitive.h:315</a></div></div>
|
|
1703
1703
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1704
1704
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a4dd7615f42971da9b6ec1dc04f0ec4e6"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">SVF::StmtVFGNode::getPAGEdge</a></div><div class="ttdeci">const PAGEdge * getPAGEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00136">VFGNode.h:136</a></div></div>
|
|
1705
1705
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a5d15e4b09784f438568ebe61f8aa5156"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">SVF::SVFIR::isConstantObj</a></div><div class="ttdeci">bool isConstantObj(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00395">SVFIR.h:395</a></div></div>
|
|
1706
1706
|
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a6363466e64eee4405806568d26206d2e"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">SVF::TypeBasedHeapCloning::undefType</a></div><div class="ttdeci">static const DIType * undefType</div><div class="ttdoc">The undefined type (•); void. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8h_source.html#l00027">TypeBasedHeapCloning.h:27</a></div></div>
|
|
1707
1707
|
<div class="ttc" id="classSVF_1_1Options_html_a930ed87e35ba7502f9d00be6f17f902f"><div class="ttname"><a href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">SVF::Options::TBHCAllReuse</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TBHCAllReuse</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00242">Options.h:242</a></div></div>
|
|
1708
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a8e2336cbb1db8aa093afbb3290d5ba05"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1708
1709
|
<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>
|
|
1709
|
-
<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#
|
|
1710
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ad53c6aebdcfa9fa334ccff4c68efa8ae"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">SVF::FlowSensitiveTBHC::unionPtsFromIn</a></div><div class="ttdeci">virtual bool unionPtsFromIn(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1710
|
+
<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#l00629">FlowSensitiveTBHC.cpp:629</a></div></div>
|
|
1711
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_ad53c6aebdcfa9fa334ccff4c68efa8ae"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#ad53c6aebdcfa9fa334ccff4c68efa8ae">SVF::FlowSensitiveTBHC::unionPtsFromIn</a></div><div class="ttdeci">virtual bool unionPtsFromIn(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00549">FlowSensitiveTBHC.cpp:549</a></div></div>
|
|
1711
1712
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
|
|
1712
1713
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1713
1714
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00153">PointsTo.cpp:153</a></div></div>
|
|
1714
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a56dc95bb4b6d48f82c87c6280237990a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1715
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a56dc95bb4b6d48f82c87c6280237990a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00530">FlowSensitiveTBHC.cpp:530</a></div></div>
|
|
1715
1716
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
1716
1717
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_af90d2ccb01402c5ca9d7a059f345c816"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">SVF::PointerAnalysis::isFIObjNode</a></div><div class="ttdeci">bool isFIObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00334">PointerAnalysis.h:334</a></div></div>
|
|
1717
1718
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
1718
1719
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1719
1720
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0b6c03af568b70903da6b200ac86c951"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">SVF::SVFStmt::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00059">SVFStatements.cpp:59</a></div></div>
|
|
1720
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1721
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00114">TypeBasedHeapCloning.cpp:114</a></div></div>
|
|
1721
1722
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1722
1723
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1723
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1724
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#
|
|
1725
|
-
<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#
|
|
1726
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1724
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00272">TypeBasedHeapCloning.cpp:272</a></div></div>
|
|
1725
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00674">SVFIR.cpp:674</a></div></div>
|
|
1726
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
1727
1727
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
1728
1728
|
</div><!-- fragment -->
|
|
1729
1729
|
</div>
|
|
@@ -1755,8 +1755,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1755
1755
|
|
|
1756
1756
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">SVF::FlowSensitive</a>.</p>
|
|
1757
1757
|
|
|
1758
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1759
|
-
<div class="fragment"><div class="line"><a name="
|
|
1758
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00495">495</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1759
|
+
<div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span> (!phi-><a class="code" href="classSVF_1_1PHIVFGNode.html#a103e55e670ce614cabc13b8dc5b17b91">isPTANode</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">FlowSensitive::processPhi</a>(phi);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_aa36fd1387e948e83107431179d819067"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#aa36fd1387e948e83107431179d819067">SVF::FlowSensitive::processPhi</a></div><div class="ttdeci">virtual bool processPhi(const PHISVFGNode *phi)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00445">FlowSensitive.cpp:445</a></div></div>
|
|
1760
1760
|
<div class="ttc" id="classSVF_1_1PHIVFGNode_html_a103e55e670ce614cabc13b8dc5b17b91"><div class="ttname"><a href="classSVF_1_1PHIVFGNode.html#a103e55e670ce614cabc13b8dc5b17b91">SVF::PHIVFGNode::isPTANode</a></div><div class="ttdeci">bool isPTANode() const</div><div class="ttdoc">Whether this phi node is of pointer type (used for pointer analysis). </div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00649">VFGNode.h:649</a></div></div>
|
|
1761
1761
|
</div><!-- fragment -->
|
|
1762
1762
|
</div>
|
|
@@ -1793,8 +1793,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1793
1793
|
|
|
1794
1794
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#aa37d591d2d4f65957e840bef4d142a6a">SVF::FlowSensitive</a>.</p>
|
|
1795
1795
|
|
|
1796
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1797
|
-
<div class="fragment"><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(store);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span> (tildet != <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(), tildet, <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a> || <a class="code" href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">Options::TBHCStoreReuse</a>);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// Like processLoad: we want to perform initialisation for non-pointers but not the store.</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">if</span> (!store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-><a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// Pass through and return because there may be some pointer nodes</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="comment">// relying on this node's parents.</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">updateAllDFOutFromIn</a>(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), 0, <span class="keyword">false</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> & dstPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>());</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">if</span> (dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>()).<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd : dstPts)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">if</span> (filterSet.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(ptd)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(ptd) || <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(ptd))</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#adee98278cf3944e0b2b22e34aaecc4c5">unionPtsFromTop</a>(store, store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(), ptd))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordtype">double</span> updateStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// also merge the DFInSet to DFOutSet.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment"></span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">bool</span> isSU = <a class="code" href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">isStrongUpdate</a>(store, singleton);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">if</span> (isSU)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.set(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">strongUpdateOutFromIn</a>(store, singleton))</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.reset(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750">weakUpdateOutFromIn</a>(store))</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordtype">double</span> updateEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a> += (updateEnd - updateStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
|
|
1796
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00420">420</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1797
|
+
<div class="fragment"><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(store);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (tildet != <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a6363466e64eee4405806568d26206d2e">undefType</a>)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  changed = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">init</a>(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>(), tildet, <a class="code" href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">Options::TBHCAllReuse</a> || <a class="code" href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">Options::TBHCStoreReuse</a>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// Like processLoad: we want to perform initialisation for non-pointers but not the store.</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span> (!store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a4dd7615f42971da9b6ec1dc04f0ec4e6">getPAGEdge</a>()-><a class="code" href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">isPTAEdge</a>())</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="comment">// Pass through and return because there may be some pointer nodes</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="comment">// relying on this node's parents.</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  changed = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">updateAllDFOutFromIn</a>(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), 0, <span class="keyword">false</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> & dstPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">getPAGDstNodeID</a>());</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>()).<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>() == <span class="keyword">false</span>)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd : dstPts)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">if</span> (filterSet.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(ptd)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a5d15e4b09784f438568ebe61f8aa5156">isConstantObj</a>(ptd) || <a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">isNonPointerObj</a>(ptd))</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#adee98278cf3944e0b2b22e34aaecc4c5">unionPtsFromTop</a>(store, store-><a class="code" href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">getPAGSrcNodeID</a>(), ptd))</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">storeTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordtype">double</span> updateStart = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// also merge the DFInSet to DFOutSet.</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment"></span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> singleton;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordtype">bool</span> isSU = <a class="code" href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">isStrongUpdate</a>(store, singleton);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">if</span> (isSU)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.set(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">strongUpdateOutFromIn</a>(store, singleton))</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">svfgHasSU</a>.reset(store-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ab492c283e2264b4cbd4c192e805b7750">weakUpdateOutFromIn</a>(store))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordtype">double</span> updateEnd = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">updateTime</a> += (updateEnd - updateStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> }</div><div class="ttc" id="classSVF_1_1StmtVFGNode_html_a04986961ad507be9fcf141ab51787da8"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a04986961ad507be9fcf141ab51787da8">SVF::StmtVFGNode::getPAGDstNodeID</a></div><div class="ttdeci">NodeID getPAGDstNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00146">VFGNode.h:146</a></div></div>
|
|
1798
1798
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1799
1799
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a42a7e39e0e15576742f8ba7c32579ea2"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a42a7e39e0e15576742f8ba7c32579ea2">SVF::FlowSensitive::isStrongUpdate</a></div><div class="ttdeci">bool isStrongUpdate(const SVFGNode *node, NodeID &singleton)</div><div class="ttdoc">Return TRUE if this is a strong update STORE statement. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00621">FlowSensitive.cpp:621</a></div></div>
|
|
1800
1800
|
<div class="ttc" id="cuddInt_8c_html_a5beb39637a978181c7c17714ac96672e"><div class="ttname"><a href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a></div><div class="ttdeci">static DdNode * empty</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l28567">cuddInt.c:28567</a></div></div>
|
|
@@ -1806,26 +1806,26 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1806
1806
|
<div class="ttc" id="classSVF_1_1Options_html_a10cc9fa1d4e553865343d635cf84592e"><div class="ttname"><a href="classSVF_1_1Options.html#a10cc9fa1d4e553865343d635cf84592e">SVF::Options::TBHCStoreReuse</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TBHCStoreReuse</div><div class="ttdoc">Whether we allow reuse for TBHC. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00241">Options.h:241</a></div></div>
|
|
1807
1807
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a7e4ae809b40d55448de0103746254158"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a7e4ae809b40d55448de0103746254158">SVF::DFPTData::updateAllDFOutFromIn</a></div><div class="ttdeci">virtual bool updateAllDFOutFromIn(LocID loc, const Key &singleton, bool strongUpdates)=0</div><div class="ttdoc">For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). </div></div>
|
|
1808
1808
|
<div class="ttc" id="classSVF_1_1Options_html_a930ed87e35ba7502f9d00be6f17f902f"><div class="ttname"><a href="classSVF_1_1Options.html#a930ed87e35ba7502f9d00be6f17f902f">SVF::Options::TBHCAllReuse</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TBHCAllReuse</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00242">Options.h:242</a></div></div>
|
|
1809
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a8e2336cbb1db8aa093afbb3290d5ba05"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1809
1810
|
<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>
|
|
1810
|
-
<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#
|
|
1811
|
+
<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#l00629">FlowSensitiveTBHC.cpp:629</a></div></div>
|
|
1811
1812
|
<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>
|
|
1812
1813
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html_a791a01f5d3528f8a8bf19369b5c61c37"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html#a791a01f5d3528f8a8bf19369b5c61c37">SVF::StmtVFGNode::getPAGSrcNodeID</a></div><div class="ttdeci">NodeID getPAGSrcNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00141">VFGNode.h:141</a></div></div>
|
|
1813
1814
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
1814
1815
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a43e8ca2e69e6e8643c9abd1fa231d305"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a43e8ca2e69e6e8643c9abd1fa231d305">SVF::FlowSensitive::svfgHasSU</a></div><div class="ttdeci">NodeBS svfgHasSU</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00320">FlowSensitive.h:320</a></div></div>
|
|
1815
1816
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
1816
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_adee98278cf3944e0b2b22e34aaecc4c5"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#adee98278cf3944e0b2b22e34aaecc4c5">SVF::FlowSensitiveTBHC::unionPtsFromTop</a></div><div class="ttdeci">virtual bool unionPtsFromTop(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1817
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_adee98278cf3944e0b2b22e34aaecc4c5"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#adee98278cf3944e0b2b22e34aaecc4c5">SVF::FlowSensitiveTBHC::unionPtsFromTop</a></div><div class="ttdeci">virtual bool unionPtsFromTop(const SVFGNode *stmt, NodeID srcVar, NodeID dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00555">FlowSensitiveTBHC.cpp:555</a></div></div>
|
|
1817
1818
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
1818
1819
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a0b6c03af568b70903da6b200ac86c951"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">SVF::SVFStmt::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00059">SVFStatements.cpp:59</a></div></div>
|
|
1819
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1820
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00114">TypeBasedHeapCloning.cpp:114</a></div></div>
|
|
1820
1821
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1821
1822
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a82b76087363b26fbe749653935569de7"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a82b76087363b26fbe749653935569de7">SVF::FlowSensitive::storeTime</a></div><div class="ttdeci">double storeTime</div><div class="ttdoc">time of store edges </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00316">FlowSensitive.h:316</a></div></div>
|
|
1822
1823
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_a8ebe4342c1496b906ee1b6450558c3e8"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a8ebe4342c1496b906ee1b6450558c3e8">SVF::FlowSensitive::strongUpdateOutFromIn</a></div><div class="ttdeci">virtual bool strongUpdateOutFromIn(const SVFGNode *node, NodeID singleton)</div><div class="ttdoc">Handle strong updates. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00167">FlowSensitive.h:167</a></div></div>
|
|
1823
1824
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1824
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1825
|
-
<div class="ttc" id="classSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#
|
|
1825
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a34064efe336ada815b31050f683c7ce1"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a34064efe336ada815b31050f683c7ce1">SVF::TypeBasedHeapCloning::init</a></div><div class="ttdeci">bool init(NodeID loc, NodeID p, const DIType *tildet, bool reuse, bool gep=false)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00272">TypeBasedHeapCloning.cpp:272</a></div></div>
|
|
1826
|
+
<div class="ttc" id="classSVF_1_1SVFIR_html_a980e54129ece0757d7f0373f37428507"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a980e54129ece0757d7f0373f37428507">SVF::SVFIR::isNonPointerObj</a></div><div class="ttdeci">bool isNonPointerObj(NodeID id) const</div><div class="ttdoc">Whether an object can point to any other object or any of its fields is a pointer type...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00674">SVFIR.cpp:674</a></div></div>
|
|
1826
1827
|
<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>
|
|
1827
1828
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_af5a94d14096ae2bbc47b3b3b9f723226"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#af5a94d14096ae2bbc47b3b3b9f723226">SVF::FlowSensitive::updateTime</a></div><div class="ttdeci">double updateTime</div><div class="ttdoc">time of strong/weak updates. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8h_source.html#l00311">FlowSensitive.h:311</a></div></div>
|
|
1828
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1829
1829
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
1830
1830
|
</div><!-- fragment -->
|
|
1831
1831
|
</div>
|
|
@@ -1859,8 +1859,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1859
1859
|
|
|
1860
1860
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#ad3518931d3b8a0671cbeb975f853b956">SVF::FlowSensitive</a>.</p>
|
|
1861
1861
|
|
|
1862
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1863
|
-
<div class="fragment"><div class="line"><a name="
|
|
1862
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00185">185</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1863
|
+
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">double</span> start = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// If this is an actual-param or formal-ret, top-level pointer's pts must be</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// propagated from src to dst.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ActualParmVFGNode.html">ActualParmSVFGNode</a>* ap = SVFUtil::dyn_cast<ActualParmSVFGNode>(src))</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (!ap->getParam()->isPointer()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  changed = <a class="code" href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">propagateFromAPToFP</a>(ap, dst);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FormalRetVFGNode.html">FormalRetSVFGNode</a>* fp = SVFUtil::dyn_cast<FormalRetSVFGNode>(src))</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="keywordflow">if</span> (!fp->getRet()->isPointer()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  changed = <a class="code" href="classSVF_1_1FlowSensitive.html#a3abffe1434386b1ce349fbed0cfe0967">propagateFromFRToAR</a>(fp, dst);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">else</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="comment">// Direct SVFG edge links between def and use of a top-level pointer.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// There's no points-to information propagated along direct edge.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// Since the top-level pointer's value has been changed at src node,</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// return TRUE to put dst node into the work list.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">double</span> end = <a class="code" href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">stat</a>-><a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">getClk</a>();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1FlowSensitive.html#ae086de68233375be42185f0af706687a">directPropaTime</a> += (end - start) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> }</div><div class="ttc" id="classSVF_1_1FlowSensitive_html_a3574977acd161925cadcb05de6d3247d"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#a3574977acd161925cadcb05de6d3247d">SVF::FlowSensitive::propagateFromAPToFP</a></div><div class="ttdeci">virtual bool propagateFromAPToFP(const ActualParmSVFGNode *ap, const SVFGNode *dst)</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00326">FlowSensitive.cpp:326</a></div></div>
|
|
1864
1864
|
<div class="ttc" id="classSVF_1_1ActualParmVFGNode_html"><div class="ttname"><a href="classSVF_1_1ActualParmVFGNode.html">SVF::ActualParmVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00846">VFGNode.h:846</a></div></div>
|
|
1865
1865
|
<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>
|
|
1866
1866
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5ec3d9bf1fc81346c9df29638daedc0f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5ec3d9bf1fc81346c9df29638daedc0f">SVF::PointerAnalysis::stat</a></div><div class="ttdeci">PTAStat * stat</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00155">PointerAnalysis.h:155</a></div></div>
|
|
@@ -1905,30 +1905,30 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1905
1905
|
|
|
1906
1906
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#aeb1e002519123a67f8d18f78cda04bac">SVF::FlowSensitive</a>.</p>
|
|
1907
1907
|
|
|
1908
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1909
|
-
<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Get points-to targets may be used by next SVFG node.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// Propagate points-to set for node used in dst.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> & pts = edge-><a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Since the base Andersen's analysis does NOT perform type-based heap cloning,</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// it uses only the base objects; we want to account for clones too.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> edgePtsAndClones;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// TODO: the conditional bool may be unnecessary.</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Adding all clones is redundant, and introduces too many calls to propVarPts...</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// This introduces performance and precision penalties.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// We should filter out according to src.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">bool</span> isStore = <span class="keyword">false</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *tildet = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> storePts;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a> *store = SVFUtil::dyn_cast<StoreSVFGNode>(src))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(store);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  isStore = <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  storePts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store->getPAGDstNodeID());</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="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span> (!filterSet.test(o))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  edgePtsAndClones.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(o);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> c : <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">getClones</a>(o))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (!isStore)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (!filterSet.test(c))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  edgePtsAndClones.set(c);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></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>  <span class="keywordflow">if</span> (storePts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(c) && !filterSet.test(c))</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  edgePtsAndClones.set(c);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gep = SVFUtil::dyn_cast<GepObjVar>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(o)))</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// Want the geps which are at the same "level" as this one (same mem obj, same offset).</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &geps = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad043ab95900849a5a894ca4bada4e032">getGepObjsFromMemObj</a>(gep->getMemObj(), gep->getConstantFieldIdx());</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> g : geps)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">DIType</a> *gepType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(g);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (!isStore || gepType || <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#add00f1c20a524c0be903af679bd6f638">isBase</a>(tildet, gepType))</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>  <span class="keywordflow">if</span> (!filterSet.test(g))</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  edgePtsAndClones.set(g);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</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>  }</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> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : edgePtsAndClones)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(o, src, dst))</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  changed = <span class="keyword">true</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>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">isFIObjNode</a>(o))</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &allFields = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(f, src, dst))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
|
|
1908
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00092">92</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1909
|
+
<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dst = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</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>  <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</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>  <span class="comment">// Get points-to targets may be used by next SVFG node.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Propagate points-to set for node used in dst.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> & pts = edge-><a class="code" href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">getPointsTo</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Since the base Andersen's analysis does NOT perform type-based heap cloning,</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// it uses only the base objects; we want to account for clones too.</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> edgePtsAndClones;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// TODO: the conditional bool may be unnecessary.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Adding all clones is redundant, and introduces too many calls to propVarPts...</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// This introduces performance and precision penalties.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// We should filter out according to src.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">bool</span> isStore = <span class="keyword">false</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *tildet = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> storePts;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreVFGNode.html">StoreSVFGNode</a> *store = SVFUtil::dyn_cast<StoreSVFGNode>(src))</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  tildet = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a045ffbf7eea276d154be2cf883ea71f7">getTypeFromCTirMetadata</a>(store);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  isStore = <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  storePts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(store->getPAGDstNodeID());</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> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &filterSet = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">getFilterSet</a>(src-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (!filterSet.test(o))</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>  edgePtsAndClones.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(o);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> c : <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">getClones</a>(o))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span> (!isStore)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (!filterSet.test(c))</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>  edgePtsAndClones.set(c);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span> (storePts.<a class="code" href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">test</a>(c) && !filterSet.test(c))</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  edgePtsAndClones.set(c);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</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>  }</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">if</span> (<a class="code" href="classSVF_1_1GepObjVar.html">GepObjVar</a> *gep = SVFUtil::dyn_cast<GepObjVar>(<a class="code" href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(o)))</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>  <span class="comment">// Want the geps which are at the same "level" as this one (same mem obj, same offset).</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &geps = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#ad043ab95900849a5a894ca4bada4e032">getGepObjsFromMemObj</a>(gep->getMemObj(), gep->getConstantFieldIdx());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> g : geps)</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>  <span class="keyword">const</span> <a class="code" href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a> *gepType = <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">getType</a>(g);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (!isStore || gepType || <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#add00f1c20a524c0be903af679bd6f638">isBase</a>(tildet, gepType))</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">if</span> (!filterSet.test(g))</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>  edgePtsAndClones.set(g);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</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>  }</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>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : edgePtsAndClones)</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">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(o, src, dst))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">isFIObjNode</a>(o))</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &allFields = <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">propVarPtsFromSrcToDst</a>(f, src, dst))</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="ttc" id="classSVF_1_1StoreVFGNode_html"><div class="ttname"><a href="classSVF_1_1StoreVFGNode.html">SVF::StoreVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00240">VFGNode.h:240</a></div></div>
|
|
1910
1910
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1911
1911
|
<div class="ttc" id="classSVF_1_1PointsTo_html_af61271fefa574c39f405fdfee59a8b3f"><div class="ttname"><a href="classSVF_1_1PointsTo.html#af61271fefa574c39f405fdfee59a8b3f">SVF::PointsTo::test</a></div><div class="ttdeci">bool test(u32_t n) const</div><div class="ttdoc">Returns true if n is in this set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00127">PointsTo.cpp:127</a></div></div>
|
|
1912
1912
|
<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>
|
|
1913
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a8e2336cbb1db8aa093afbb3290d5ba05"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a8e2336cbb1db8aa093afbb3290d5ba05">DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00096">BasicTypes.h:96</a></div></div>
|
|
1913
1914
|
<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>
|
|
1914
|
-
<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#
|
|
1915
|
+
<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#l00629">FlowSensitiveTBHC.cpp:629</a></div></div>
|
|
1915
1916
|
<div class="ttc" id="classSVF_1_1GepObjVar_html"><div class="ttname"><a href="classSVF_1_1GepObjVar.html">SVF::GepObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00436">SVFVariables.h:436</a></div></div>
|
|
1916
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ad043ab95900849a5a894ca4bada4e032"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ad043ab95900849a5a894ca4bada4e032">SVF::TypeBasedHeapCloning::getGepObjsFromMemObj</a></div><div class="ttdeci">const NodeBS & getGepObjsFromMemObj(const MemObj *memObj, unsigned offset)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1917
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ad043ab95900849a5a894ca4bada4e032"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ad043ab95900849a5a894ca4bada4e032">SVF::TypeBasedHeapCloning::getGepObjsFromMemObj</a></div><div class="ttdeci">const NodeBS & getGepObjsFromMemObj(const MemObj *memObj, unsigned offset)</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00133">TypeBasedHeapCloning.cpp:133</a></div></div>
|
|
1917
1918
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
|
|
1918
1919
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00153">PointsTo.cpp:153</a></div></div>
|
|
1919
|
-
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a56dc95bb4b6d48f82c87c6280237990a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1920
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_add00f1c20a524c0be903af679bd6f638"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#add00f1c20a524c0be903af679bd6f638">SVF::TypeBasedHeapCloning::isBase</a></div><div class="ttdeci">bool isBase(const DIType *a, const DIType *b) const</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1921
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a219edef6c013a953ed12ee3c56bde6de"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">SVF::TypeBasedHeapCloning::getType</a></div><div class="ttdeci">const DIType * getType(NodeID o) const</div><div class="ttdoc">Returns the type (from objToType) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1920
|
+
<div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html_a56dc95bb4b6d48f82c87c6280237990a"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html#a56dc95bb4b6d48f82c87c6280237990a">SVF::FlowSensitiveTBHC::getAllFieldsObjVars</a></div><div class="ttdeci">virtual const NodeBS & getAllFieldsObjVars(NodeID id) override</div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8cpp_source.html#l00530">FlowSensitiveTBHC.cpp:530</a></div></div>
|
|
1921
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_add00f1c20a524c0be903af679bd6f638"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#add00f1c20a524c0be903af679bd6f638">SVF::TypeBasedHeapCloning::isBase</a></div><div class="ttdeci">bool isBase(const DIType *a, const DIType *b) const</div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00043">TypeBasedHeapCloning.cpp:43</a></div></div>
|
|
1922
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_a219edef6c013a953ed12ee3c56bde6de"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#a219edef6c013a953ed12ee3c56bde6de">SVF::TypeBasedHeapCloning::getType</a></div><div class="ttdeci">const DIType * getType(NodeID o) const</div><div class="ttdoc">Returns the type (from objToType) of o. Asserts existence. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00059">TypeBasedHeapCloning.cpp:59</a></div></div>
|
|
1922
1923
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_af90d2ccb01402c5ca9d7a059f345c816"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#af90d2ccb01402c5ca9d7a059f345c816">SVF::PointerAnalysis::isFIObjNode</a></div><div class="ttdeci">bool isFIObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00334">PointerAnalysis.h:334</a></div></div>
|
|
1923
1924
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
1924
1925
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1925
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_af127bed600087b1ace26088a76ca8998"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">SVF::TypeBasedHeapCloning::getClones</a></div><div class="ttdeci">const NodeBS & getClones(NodeID o)</div><div class="ttdoc">Returns all the clones of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1926
|
-
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#
|
|
1926
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_af127bed600087b1ace26088a76ca8998"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#af127bed600087b1ace26088a76ca8998">SVF::TypeBasedHeapCloning::getClones</a></div><div class="ttdeci">const NodeBS & getClones(NodeID o)</div><div class="ttdoc">Returns all the clones of o. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00092">TypeBasedHeapCloning.cpp:92</a></div></div>
|
|
1927
|
+
<div class="ttc" id="classSVF_1_1TypeBasedHeapCloning_html_ae520e0551e63223a908f92a6b9667356"><div class="ttname"><a href="classSVF_1_1TypeBasedHeapCloning.html#ae520e0551e63223a908f92a6b9667356">SVF::TypeBasedHeapCloning::getFilterSet</a></div><div class="ttdeci">PointsTo & getFilterSet(NodeID loc)</div><div class="ttdoc">Returns the filter set of a location. Not const; could create empty PointsTo. </div><div class="ttdef"><b>Definition:</b> <a href="TypeBasedHeapCloning_8cpp_source.html#l00114">TypeBasedHeapCloning.cpp:114</a></div></div>
|
|
1927
1928
|
<div class="ttc" id="classSVF_1_1FlowSensitive_html_ae571767cc5936cf631a44976d8277e91"><div class="ttname"><a href="classSVF_1_1FlowSensitive.html#ae571767cc5936cf631a44976d8277e91">SVF::FlowSensitive::propVarPtsFromSrcToDst</a></div><div class="ttdeci">virtual bool propVarPtsFromSrcToDst(NodeID var, const SVFGNode *src, const SVFGNode *dst)</div><div class="ttdoc">Propagate points-to information of a certain variable from src to dst. </div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitive_8cpp_source.html#l00397">FlowSensitive.cpp:397</a></div></div>
|
|
1928
1929
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_adc7f5c71efb9cd1bec4f5ca9127654c3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#adc7f5c71efb9cd1bec4f5ca9127654c3">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static SVFIR * pag</div><div class="ttdoc">SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1929
1930
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00391">GenericGraph.h:391</a></div></div>
|
|
1930
1931
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1931
|
-
<div class="ttc" id="namespaceSVF_html_ad127b0ad478640ede3d426e3a58d2632"><div class="ttname"><a href="namespaceSVF.html#ad127b0ad478640ede3d426e3a58d2632">SVF::DIType</a></div><div class="ttdeci">llvm::DIType DIType</div><div class="ttdoc">LLVM debug information. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1932
1932
|
<div class="ttc" id="classSVF_1_1IndirectSVFGEdge_html_a30aca718d25924f1babdf348bb0ace71"><div class="ttname"><a href="classSVF_1_1IndirectSVFGEdge.html#a30aca718d25924f1babdf348bb0ace71">SVF::IndirectSVFGEdge::getPointsTo</a></div><div class="ttdeci">const NodeBS & getPointsTo() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFGEdge_8h_source.html#l00060">SVFGEdge.h:60</a></div></div>
|
|
1933
1933
|
<div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>
|
|
1934
1934
|
</div><!-- fragment -->
|
|
@@ -1982,10 +1982,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1982
1982
|
|
|
1983
1983
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a3be364754863bbbee6dfd0b5490dec47">SVF::FlowSensitive</a>.</p>
|
|
1984
1984
|
|
|
1985
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
1986
|
-
<div class="fragment"><div class="line"><a name="
|
|
1985
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00561">561</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
1986
|
+
<div class="fragment"><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">// IN sets are only based on the original object.</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a506a2be8f909663d59245254bddea00b">updateAllDFInFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(srcVar),</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(dstVar));</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> }</div><div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
1987
1987
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a506a2be8f909663d59245254bddea00b"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a506a2be8f909663d59245254bddea00b">SVF::DFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div></div>
|
|
1988
|
-
<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#
|
|
1988
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
1989
1989
|
<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>
|
|
1990
1990
|
</div><!-- fragment -->
|
|
1991
1991
|
</div>
|
|
@@ -2038,10 +2038,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2038
2038
|
|
|
2039
2039
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a5e97c3fe32f60b0e8e96323ceb9a10cf">SVF::FlowSensitive</a>.</p>
|
|
2040
2040
|
|
|
2041
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
2042
|
-
<div class="fragment"><div class="line"><a name="
|
|
2041
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00568">568</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
2042
|
+
<div class="fragment"><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="comment">// OUT/IN sets only have original objects.</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a96a5d7e867095b3c215c73599fd31c19">updateAllDFInFromOut</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(srcVar),</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(dstVar));</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> }</div><div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
2043
2043
|
<div class="ttc" id="classSVF_1_1DFPTData_html_a96a5d7e867095b3c215c73599fd31c19"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a96a5d7e867095b3c215c73599fd31c19">SVF::DFPTData::updateAllDFInFromOut</a></div><div class="ttdeci">virtual bool updateAllDFInFromOut(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above...</div></div>
|
|
2044
|
-
<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#
|
|
2044
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
2045
2045
|
<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>
|
|
2046
2046
|
</div><!-- fragment -->
|
|
2047
2047
|
</div>
|
|
@@ -2119,10 +2119,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2119
2119
|
|
|
2120
2120
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a16d757abf69ad77951b808dc18ca2999">SVF::FlowSensitive</a>.</p>
|
|
2121
2121
|
|
|
2122
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
2123
|
-
<div class="fragment"><div class="line"><a name="
|
|
2122
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00549">549</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
2123
|
+
<div class="fragment"><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="comment">// IN sets only have original objects.</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#aaa6f67ff5daf7d71a3ad62316a7dd872">updateTLVPts</a>(stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(srcVar), dstVar);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> }</div><div class="ttc" id="classSVF_1_1DFPTData_html_aaa6f67ff5daf7d71a3ad62316a7dd872"><div class="ttname"><a href="classSVF_1_1DFPTData.html#aaa6f67ff5daf7d71a3ad62316a7dd872">SVF::DFPTData::updateTLVPts</a></div><div class="ttdeci">virtual bool updateTLVPts(LocID srcLoc, const Key &srcVar, const Key &dstVar)=0</div><div class="ttdoc">Update points-to set of top-level pointers with IN[srcLoc:srcVar]. </div></div>
|
|
2124
2124
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
2125
|
-
<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#
|
|
2125
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
2126
2126
|
<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>
|
|
2127
2127
|
</div><!-- fragment -->
|
|
2128
2128
|
</div>
|
|
@@ -2169,10 +2169,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2169
2169
|
|
|
2170
2170
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a49104435f8d20015907a1c8f58a76577">SVF::FlowSensitive</a>.</p>
|
|
2171
2171
|
|
|
2172
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
2173
|
-
<div class="fragment"><div class="line"><a name="
|
|
2172
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00555">555</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
2173
|
+
<div class="fragment"><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// OUT sets only have original objects.</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a09bc4b7eef592af2c2c84b60029b5b52">updateATVPts</a>(srcVar, stmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(dstVar));</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> }</div><div class="ttc" id="classSVF_1_1DFPTData_html_a09bc4b7eef592af2c2c84b60029b5b52"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a09bc4b7eef592af2c2c84b60029b5b52">SVF::DFPTData::updateATVPts</a></div><div class="ttdeci">virtual bool updateATVPts(const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. </div></div>
|
|
2174
2174
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
2175
|
-
<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#
|
|
2175
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
2176
2176
|
<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>
|
|
2177
2177
|
</div><!-- fragment -->
|
|
2178
2178
|
</div>
|
|
@@ -2225,10 +2225,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2225
2225
|
|
|
2226
2226
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#a88120b9cec26620d4982798ea530353a">SVF::FlowSensitive</a>.</p>
|
|
2227
2227
|
|
|
2228
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
2229
|
-
<div class="fragment"><div class="line"><a name="
|
|
2228
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00535">535</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
2229
|
+
<div class="fragment"><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// IN sets are only based on the original object.</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a88cf9cd48ee5c1b8b3c71b379f23ab6b">updateDFInFromIn</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(srcVar),</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(dstVar));</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> }</div><div class="ttc" id="classSVF_1_1DFPTData_html_a88cf9cd48ee5c1b8b3c71b379f23ab6b"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a88cf9cd48ee5c1b8b3c71b379f23ab6b">SVF::DFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div></div>
|
|
2230
2230
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
2231
|
-
<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#
|
|
2231
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
2232
2232
|
<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>
|
|
2233
2233
|
</div><!-- fragment -->
|
|
2234
2234
|
</div>
|
|
@@ -2281,10 +2281,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2281
2281
|
|
|
2282
2282
|
<p>Reimplemented from <a class="el" href="classSVF_1_1FlowSensitive.html#af5d90b4bd5c16dd64cd10afea6b3be93">SVF::FlowSensitive</a>.</p>
|
|
2283
2283
|
|
|
2284
|
-
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#
|
|
2285
|
-
<div class="fragment"><div class="line"><a name="
|
|
2284
|
+
<p class="definition">Definition at line <a class="el" href="FlowSensitiveTBHC_8cpp_source.html#l00542">542</a> of file <a class="el" href="FlowSensitiveTBHC_8cpp_source.html">FlowSensitiveTBHC.cpp</a>.</p>
|
|
2285
|
+
<div class="fragment"><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// OUT/IN sets only have original objects.</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a642613e98982259183d3f34a97f05502">getDFPTDataTy</a>()-><a class="code" href="classSVF_1_1DFPTData.html#a2ec4fb73d87f10c86fac34b3500532b3">updateDFInFromOut</a>(srcStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(srcVar),</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  dstStmt-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), <a class="code" href="classSVF_1_1TypeBasedHeapCloning.html#aeea7089c6f54b44f0509d41686b649f6">getOriginalObj</a>(dstVar));</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> }</div><div class="ttc" id="classSVF_1_1DFPTData_html_a2ec4fb73d87f10c86fac34b3500532b3"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a2ec4fb73d87f10c86fac34b3500532b3">SVF::DFPTData::updateDFInFromOut</a></div><div class="ttdeci">virtual bool updateDFInFromOut(LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar)=0</div><div class="ttdoc">Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). </div></div>
|
|
2286
2286
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
2287
|
-
<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#
|
|
2287
|
+
<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#l00102">TypeBasedHeapCloning.cpp:102</a></div></div>
|
|
2288
2288
|
<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>
|
|
2289
2289
|
</div><!-- fragment -->
|
|
2290
2290
|
</div>
|