svf-tools 1.0.459 → 1.0.460
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/AndersenSFR_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +10 -10
- 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_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ExeState_8cpp.html +1 -0
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +26 -25
- package/SVF-doxygen/html/html/ExeState_8h_source.html +13 -13
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/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 +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +21 -21
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +10 -10
- 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 +8 -8
- 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 +46 -46
- package/SVF-doxygen/html/html/MHP_8h.html +1 -0
- package/SVF-doxygen/html/html/MHP_8h_source.html +102 -101
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +12 -12
- 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 +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- 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 +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +68 -50
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +51 -50
- 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 +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +46 -46
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +36 -36
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +19 -19
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFVariables_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +35 -32
- package/SVF-doxygen/html/html/SVFVariables_8h.html +0 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +140 -142
- 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 +6 -6
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +50 -50
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +95 -91
- package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +141 -143
- package/SVF-doxygen/html/html/TCT_8cpp.html +1 -0
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +41 -40
- package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
- 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 +5 -5
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +4 -4
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +61 -62
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8h_source.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_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +40 -40
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +183 -183
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +29 -29
- 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_1ICFGPrinter.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +177 -177
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +91 -91
- 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_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +98 -98
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +19 -19
- 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 +4 -4
- 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.html +62 -62
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +98 -106
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +224 -240
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +2 -2
- package/SVF-doxygen/html/html/functions_func_g.html +1 -1
- package/SVF-doxygen/html/html/functions_func_h.html +1 -1
- package/SVF-doxygen/html/html/functions_func_i.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +1 -1
- package/SVF-doxygen/html/html/functions_h.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +1 -1
- package/SVF-doxygen/html/html/globals_c.html +103 -100
- package/SVF-doxygen/html/html/globals_s.html +9 -7
- package/SVF-doxygen/html/html/globals_type.html +3 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +25 -43
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +14 -14
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +23 -23
- package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -3
- package/SVF-doxygen/html/html/search/all_13.js +3 -3
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +1 -1
- package/SVF-doxygen/html/html/search/all_8.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +1 -1
- package/SVF-doxygen/html/html/search/functions_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +14 -14
- 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 +4 -4
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/include/MTA/MHP.h +1 -0
- package/include/MemoryModel/SVFVariables.h +1 -8
- package/include/MemoryModel/SymbolTableInfo.h +2 -22
- package/include/SVF-FE/BasicTypes.h +1 -0
- package/include/Util/BasicTypes.h +0 -1
- package/lib/MTA/TCT.cpp +1 -0
- package/lib/MemoryModel/LocationSet.cpp +1 -0
- package/lib/MemoryModel/SVFVariables.cpp +10 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +26 -0
- package/lib/Util/ExeState.cpp +1 -0
- package/package.json +1 -1
|
@@ -674,7 +674,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
674
674
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
675
675
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00179">PointerAnalysis.h:179</a></div></div>
|
|
676
676
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0bddf297a2d8cd59ce9a232f0229f248"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">SVF::PointerAnalysis::getCallGraphSCC</a></div><div class="ttdeci">CallGraphSCC * getCallGraphSCC() const</div><div class="ttdoc">Return call graph SCC. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00184">PointerAnalysis.h:184</a></div></div>
|
|
677
|
-
<div class="ttc" id="classSVF_1_1TCT_html_ab86389b3bf292c5b3d2b29fc49a5d94d"><div class="ttname"><a href="classSVF_1_1TCT.html#ab86389b3bf292c5b3d2b29fc49a5d94d">SVF::TCT::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">Build TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
677
|
+
<div class="ttc" id="classSVF_1_1TCT_html_ab86389b3bf292c5b3d2b29fc49a5d94d"><div class="ttname"><a href="classSVF_1_1TCT.html#ab86389b3bf292c5b3d2b29fc49a5d94d">SVF::TCT::build</a></div><div class="ttdeci">void build()</div><div class="ttdoc">Build TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00387">TCT.cpp:387</a></div></div>
|
|
678
678
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ae25bca6e64ceedc56f1e2f1ae30f89eb"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ae25bca6e64ceedc56f1e2f1ae30f89eb">SVF::ThreadCallGraph::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PointerAnalysis *pta)</div><div class="ttdoc">Update call graph using pointer results. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00053">ThreadCallGraph.cpp:53</a></div></div>
|
|
679
679
|
<div class="ttc" id="classSVF_1_1TCT_html_a980de0593e41d18d2716aa5120d35d04"><div class="ttname"><a href="classSVF_1_1TCT.html#a980de0593e41d18d2716aa5120d35d04">SVF::TCT::pta</a></div><div class="ttdeci">PointerAnalysis * pta</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00398">TCT.h:398</a></div></div>
|
|
680
680
|
<div class="ttc" id="classSVF_1_1TCT_html_a30662928bafc97c1e7b123270ca69980"><div class="ttname"><a href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">SVF::TCT::tcgSCC</a></div><div class="ttdeci">ThreadCallGraphSCC * tcgSCC</div><div class="ttdoc">Procedures we care about during call graph traversing when creating TCT. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00543">TCT.h:543</a></div></div>
|
|
@@ -833,7 +833,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
833
833
|
<p>Add <a class="el" href="classSVF_1_1TCT.html">TCT</a> edge. </p>
|
|
834
834
|
|
|
835
835
|
<p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00415">415</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
|
|
836
|
-
<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">hasGraphEdge</a>(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  TCTEdge* edge = <span class="keyword">new</span> TCTEdge(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  dst->addIncomingEdge(edge);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  src->addOutgoingEdge(edge);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>++;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_adb2025048dc69f0689f526c58df29802"><div class="ttname"><a href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">SVF::TCT::hasGraphEdge</a></div><div class="ttdeci">TCTEdge * hasGraphEdge(TCTNode *src, TCTNode *dst, TCTEdge::CEDGEK kind) const</div><div class="ttdoc">Whether we have aleady created this call graph edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
836
|
+
<div class="fragment"><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">hasGraphEdge</a>(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  TCTEdge* edge = <span class="keyword">new</span> TCTEdge(src, dst, <a class="code" href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">TCTEdge::ThreadCreateEdge</a>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  dst->addIncomingEdge(edge);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  src->addOutgoingEdge(edge);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">TCTEdgeNum</a>++;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_adb2025048dc69f0689f526c58df29802"><div class="ttname"><a href="classSVF_1_1TCT.html#adb2025048dc69f0689f526c58df29802">SVF::TCT::hasGraphEdge</a></div><div class="ttdeci">TCTEdge * hasGraphEdge(TCTNode *src, TCTNode *dst, TCTEdge::CEDGEK kind) const</div><div class="ttdoc">Whether we have aleady created this call graph edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00567">TCT.cpp:567</a></div></div>
|
|
837
837
|
<div class="ttc" id="classSVF_1_1TCT_html_a862899f2e5fb35920adf8e763e1dba57"><div class="ttname"><a href="classSVF_1_1TCT.html#a862899f2e5fb35920adf8e763e1dba57">SVF::TCT::TCTEdgeNum</a></div><div class="ttdeci">u32_t TCTEdgeNum</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00400">TCT.h:400</a></div></div>
|
|
838
838
|
<div class="ttc" id="classSVF_1_1TCTEdge_html_a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8"><div class="ttname"><a href="classSVF_1_1TCTEdge.html#a18644ee9ae37b03254afb077dca5494fac7915e379517d9d17b770540adb577c8">SVF::TCTEdge::ThreadCreateEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00036">TCT.h:36</a></div></div>
|
|
839
839
|
</div><!-- fragment -->
|
|
@@ -900,9 +900,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
900
900
|
<p>Build <a class="el" href="classSVF_1_1TCT.html">TCT</a>. </p>
|
|
901
901
|
<p>Start building <a class="el" href="classSVF_1_1TCT.html">TCT</a> </p>
|
|
902
902
|
|
|
903
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
904
|
-
<div class="fragment"><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>();</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>  <a class="code" href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">collectLoopInfoForJoin</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="comment">// the fork site of main function is initialized with nullptr.</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="comment">// the context of main is initialized with empty</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// start routine is empty</span></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>  <a class="code" href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">collectEntryFunInCallGraph</a>();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">for</span> (FunSet::iterator it=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.begin(), eit=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(*it))</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* mainTCTNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt, <span class="keyword">nullptr</span>, cxt, *it);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> t(mainTCTNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), cxt, <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(t);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</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">while</span>(!<a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> ctp = <a class="code" href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">popFromCTPWorkList</a>();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(ctp.<a class="code" href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">getProc</a>());</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(cgNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">continue</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="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(),</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  ecit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>(); cit!=ecit; ++cit)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nTCT handling direct call:"</span> << **cit << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)->getCallSite()));</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(),</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  eind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>(); ind!=eind; ++ind)</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nTCT handling indirect call:"</span> << **ind << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)->getCallSite()));</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>  }</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> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">collectMultiForkedThreads</a>();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</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>  <a class="code" href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">print</a>();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">dump</a>(<span class="stringliteral">"tct"</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
905
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aac0c4c3f1c7cb1d89ebd2a3da2d49bd3"><div class="ttname"><a href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">SVF::TCT::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtThreadProc &ctp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
903
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00387">387</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
904
|
+
<div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">collectLoopInfoForJoin</a>();</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>  <span class="comment">// the fork site of main function is initialized with nullptr.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// the context of main is initialized with empty</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">// start routine is empty</span></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>  <a class="code" href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">collectEntryFunInCallGraph</a>();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">for</span> (FunSet::iterator it=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.begin(), eit=<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.end(); it!=eit; ++it)</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_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(*it))</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* mainTCTNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt, <span class="keyword">nullptr</span>, cxt, *it);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> t(mainTCTNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), cxt, <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(*it));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(t);</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> </div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1TCT.html#a80dad1dfdf64cb7a5805eb8bedf79226">ctpList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</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>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> ctp = <a class="code" href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">popFromCTPWorkList</a>();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgNode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(ctp.<a class="code" href="classSVF_1_1CxtProc.html#ab9ac6459c90873b7dea35e0a22700189">getProc</a>());</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(cgNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) == <span class="keyword">false</span>)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> </div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = cgNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* cgEdge = (*nit);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(),</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  ecit = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>(); cit!=ecit; ++cit)</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nTCT handling direct call:"</span> << **cit << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*cit)->getCallSite()));</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator ind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(),</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  eind = cgEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>(); ind!=eind; ++ind)</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\nTCT handling indirect call:"</span> << **ind << <span class="stringliteral">"\t"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">"-->"</span> << cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">handleCallRelation</a>(ctp,cgEdge,<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>((*ind)->getCallSite()));</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</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>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">collectMultiForkedThreads</a>();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</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>  <a class="code" href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">print</a>();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">dump</a>(<span class="stringliteral">"tct"</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
905
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aac0c4c3f1c7cb1d89ebd2a3da2d49bd3"><div class="ttname"><a href="classSVF_1_1TCT.html#aac0c4c3f1c7cb1d89ebd2a3da2d49bd3">SVF::TCT::handleCallRelation</a></div><div class="ttdeci">void handleCallRelation(CxtThreadProc &ctp, const PTACallGraphEdge *cgEdge, CallSite call)</div><div class="ttdoc">Handle call relations. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00224">TCT.cpp:224</a></div></div>
|
|
906
906
|
<div class="ttc" id="classSVF_1_1TCT_html_a002bac3dc928bc78b94de0ca97b1ec1d"><div class="ttname"><a href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">SVF::TCT::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtThreadProc &ctp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00514">TCT.h:514</a></div></div>
|
|
907
907
|
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
908
908
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
|
|
@@ -920,27 +920,27 @@ Additional Inherited Members</h2></td></tr>
|
|
|
920
920
|
<div class="ttc" id="classSVF_1_1TCT_html_ad84cdb0d192312f96d006f7b9e660da3"><div class="ttname"><a href="classSVF_1_1TCT.html#ad84cdb0d192312f96d006f7b9e660da3">SVF::TCT::popFromCTPWorkList</a></div><div class="ttdeci">CxtThreadProc popFromCTPWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00523">TCT.h:523</a></div></div>
|
|
921
921
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
|
|
922
922
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_acc4fcacefdc9be9a214dfcc455fe7970"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">SVF::PTACallGraphEdge::directCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00126">PTACallGraph.h:126</a></div></div>
|
|
923
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a276da0e6bbe3e4fe9d1dd051ddd8d81b"><div class="ttname"><a href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">SVF::TCT::collectLoopInfoForJoin</a></div><div class="ttdeci">void collectLoopInfoForJoin()</div><div class="ttdoc">Handle join site in loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
923
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a276da0e6bbe3e4fe9d1dd051ddd8d81b"><div class="ttname"><a href="classSVF_1_1TCT.html#a276da0e6bbe3e4fe9d1dd051ddd8d81b">SVF::TCT::collectLoopInfoForJoin</a></div><div class="ttdeci">void collectLoopInfoForJoin()</div><div class="ttdoc">Handle join site in loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00296">TCT.cpp:296</a></div></div>
|
|
924
924
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
|
|
925
925
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
926
926
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
927
927
|
<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>
|
|
928
928
|
<div class="ttc" id="classSVF_1_1TCT_html_aa69b82c888c8193e97f9e95c62ac99d4"><div class="ttname"><a href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">SVF::TCT::isCandidateFun</a></div><div class="ttdeci">bool isCandidateFun(const PTACallGraph::FunctionSet &callees) const</div><div class="ttdoc">Whether it is a candidate function for indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00249">TCT.h:249</a></div></div>
|
|
929
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a313962cab59c12057d4f780a918ed1e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">SVF::TCT::collectEntryFunInCallGraph</a></div><div class="ttdeci">void collectEntryFunInCallGraph()</div><div class="ttdoc">Get entry functions that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
929
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a313962cab59c12057d4f780a918ed1e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a313962cab59c12057d4f780a918ed1e8">SVF::TCT::collectEntryFunInCallGraph</a></div><div class="ttdeci">void collectEntryFunInCallGraph()</div><div class="ttdoc">Get entry functions that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00167">TCT.cpp:167</a></div></div>
|
|
930
930
|
<div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
|
|
931
931
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a750e50a9022451e406c4819979edffa5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">SVF::PTACallGraphEdge::directCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsBegin() const</div><div class="ttdoc">Iterators for direct and indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00122">PTACallGraph.h:122</a></div></div>
|
|
932
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
932
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
|
|
933
933
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
|
|
934
934
|
<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>
|
|
935
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a716c97a80c483c571ca7a03b9acce3e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">SVF::TCT::dump</a></div><div class="ttdeci">void dump(const std::string &filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
935
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a716c97a80c483c571ca7a03b9acce3e8"><div class="ttname"><a href="classSVF_1_1TCT.html#a716c97a80c483c571ca7a03b9acce3e8">SVF::TCT::dump</a></div><div class="ttdeci">void dump(const std::string &filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00546">TCT.cpp:546</a></div></div>
|
|
936
936
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
937
937
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
|
|
938
938
|
<div class="ttc" id="classSVF_1_1Options_html_a19758db674de8af8a1c80734a1c0fac8"><div class="ttname"><a href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">SVF::Options::TCTDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TCTDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00192">Options.h:192</a></div></div>
|
|
939
939
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_afbdb582d20ab953b2de1f3efacb74679"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">SVF::PTACallGraphEdge::indirectCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00131">PTACallGraph.h:131</a></div></div>
|
|
940
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
941
|
-
<div class="ttc" id="classSVF_1_1TCT_html_ad15753a9c20d738325e5c0edea6c9c56"><div class="ttname"><a href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">SVF::TCT::collectMultiForkedThreads</a></div><div class="ttdeci">void collectMultiForkedThreads()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
940
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00114">TCT.cpp:114</a></div></div>
|
|
941
|
+
<div class="ttc" id="classSVF_1_1TCT_html_ad15753a9c20d738325e5c0edea6c9c56"><div class="ttname"><a href="classSVF_1_1TCT.html#ad15753a9c20d738325e5c0edea6c9c56">SVF::TCT::collectMultiForkedThreads</a></div><div class="ttdeci">void collectMultiForkedThreads()</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00186">TCT.cpp:186</a></div></div>
|
|
942
942
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
943
|
-
<div class="ttc" id="classSVF_1_1TCT_html_abf2a992a66de9832915b1f959b8988e4"><div class="ttname"><a href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">SVF::TCT::print</a></div><div class="ttdeci">void print() const</div><div class="ttdoc">Print TCT information. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
943
|
+
<div class="ttc" id="classSVF_1_1TCT_html_abf2a992a66de9832915b1f959b8988e4"><div class="ttname"><a href="classSVF_1_1TCT.html#abf2a992a66de9832915b1f959b8988e4">SVF::TCT::print</a></div><div class="ttdeci">void print() const</div><div class="ttdoc">Print TCT information. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00555">TCT.cpp:555</a></div></div>
|
|
944
944
|
</div><!-- fragment -->
|
|
945
945
|
</div>
|
|
946
946
|
</div>
|
|
@@ -970,17 +970,17 @@ Additional Inherited Members</h2></td></tr>
|
|
|
970
970
|
<p>Get entry functions that are neither called by other functions nor extern functions. </p>
|
|
971
971
|
<p>Get Main function </p>
|
|
972
972
|
|
|
973
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
974
|
-
<div class="fragment"><div class="line"><a name="
|
|
973
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00167">167</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
974
|
+
<div class="fragment"><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">for</span>(<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> it = <a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>()-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = (*it);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(fun);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span> (!node-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>())</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.insert(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">entryFuncSet</a>.empty() && <span class="stringliteral">"Can't find any function in module!"</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</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>
|
|
975
975
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
|
|
976
976
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
977
977
|
<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>
|
|
978
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
978
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
979
979
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
980
980
|
<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>
|
|
981
981
|
<div class="ttc" id="classSVF_1_1TCT_html_aabc2c84e951ed9ae64207e379acb3074"><div class="ttname"><a href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">SVF::TCT::getSVFModule</a></div><div class="ttdeci">SVFModule * getSVFModule() const</div><div class="ttdoc">Get SVFFModule. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00161">TCT.h:161</a></div></div>
|
|
982
982
|
<div class="ttc" id="classSVF_1_1TCT_html_a140eaf9440ae9d52dbfb659967aa449a"><div class="ttname"><a href="classSVF_1_1TCT.html#a140eaf9440ae9d52dbfb659967aa449a">SVF::TCT::entryFuncSet</a></div><div class="ttdeci">FunSet entryFuncSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00541">TCT.h:541</a></div></div>
|
|
983
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
983
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
|
|
984
984
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
985
985
|
<div class="ttc" id="classSVF_1_1SVFModule_html_afcf2978f32e15127fb093405dc17d7f1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVF::SVFModule::const_iterator</a></div><div class="ttdeci">FunctionSetType::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
|
|
986
986
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
|
|
@@ -1014,10 +1014,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1014
1014
|
<p>collect loop info for join sites</p>
|
|
1015
1015
|
<p>Collect loop info for join sites the in-loop join site must be joined if the loop is executed </p>
|
|
1016
1016
|
|
|
1017
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1018
|
-
<div class="fragment"><div class="line"><a name="
|
|
1019
|
-
<div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
1020
|
-
<div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
1017
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00296">296</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1018
|
+
<div class="fragment"><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>  <span class="keywordflow">for</span>(ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it!=eit; ++it)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* join = (*it)->getCallSite();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* lp = <a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(join);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span>(lp && <a class="code" href="classSVF_1_1TCT.html#a65d0260b37ab60debb7fa84fa0b7a5d4">isJoinMustExecutedInLoop</a>(lp,join))</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>[join] = lp;</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> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(join))</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <a class="code" href="classSVF_1_1TCT.html#a1b3872361dc17aaea359db8ce0cc2431">inRecurJoinSites</a>.insert(join);</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> }</div><div class="ttc" id="classSVF_1_1TCT_html_a65d0260b37ab60debb7fa84fa0b7a5d4"><div class="ttname"><a href="classSVF_1_1TCT.html#a65d0260b37ab60debb7fa84fa0b7a5d4">SVF::TCT::isJoinMustExecutedInLoop</a></div><div class="ttdeci">bool isJoinMustExecutedInLoop(const Loop *lp, const Instruction *join)</div><div class="ttdoc">Return true if a join instruction must be executed inside a loop. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00272">TCT.cpp:272</a></div></div>
|
|
1019
|
+
<div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00071">TCT.cpp:71</a></div></div>
|
|
1020
|
+
<div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00349">TCT.cpp:349</a></div></div>
|
|
1021
1021
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
1022
1022
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
|
|
1023
1023
|
<div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
|
|
@@ -1053,8 +1053,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1053
1053
|
<p>Collect multi-forked threads whose 1, cxt is in loop or recursion; 2, parent thread is a multi-forked thread.</p>
|
|
1054
1054
|
<p>Collect all multi-forked threads </p>
|
|
1055
1055
|
|
|
1056
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1057
|
-
<div class="fragment"><div class="line"><a name="
|
|
1056
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00186">186</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1057
|
+
<div class="fragment"><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (this-><a class="code" href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">nodeNum</a> == 0 )</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<TCTNode*></a> worklist;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(<a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(0));</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> &ct = node-><a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</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">if</span>(ct.<a class="code" href="classSVF_1_1CxtThread.html#a54c95794963cb5a478db7c49c1b8c428">isIncycle</a>() || ct.<a class="code" href="classSVF_1_1CxtThread.html#a39230596cd1c927353eaaee071eb16c6">isInloop</a>())</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>  node-><a class="code" href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">setMultiforked</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span> (TCT::ThreadCreateEdgeSet::const_iterator it = node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it != eit;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  ++it)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> ((*it)->getSrcNode()->isMultiforked())</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  node-><a class="code" href="classSVF_1_1TCTNode.html#a0fafde34cdffde6d38bb9efca9b7a9a1">setMultiforked</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</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>  <span class="keywordflow">for</span> (TCT::ThreadCreateEdgeSet::const_iterator it = node-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().begin(), eit = node-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().end(); it != eit;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ++it)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*it)->getDstNode());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00186">GenericGraph.h:186</a></div></div>
|
|
1058
1058
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
1059
1059
|
<div class="ttc" id="classSVF_1_1CxtThread_html"><div class="ttname"><a href="classSVF_1_1CxtThread.html">SVF::CxtThread</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00188">CxtStmt.h:188</a></div></div>
|
|
1060
1060
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a38122734cbe71551a420dfb7fee2012e"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a38122734cbe71551a420dfb7fee2012e">SVF::GenericGraph::nodeNum</a></div><div class="ttdeci">u32_t nodeNum</div><div class="ttdoc">total num of edge </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00441">GenericGraph.h:441</a></div></div>
|
|
@@ -1120,8 +1120,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1120
1120
|
<p>Dump the graph. </p>
|
|
1121
1121
|
<p>Dump call graph into dot file </p>
|
|
1122
1122
|
|
|
1123
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1124
|
-
<div class="fragment"><div class="line"><a name="
|
|
1123
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00546">546</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1124
|
+
<div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">Options::TCTDotGraph</a>)</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), filename, <span class="keyword">this</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> }</div><div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &O, const std::string &GraphName, const GraphType &GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00058">GraphPrinter.h:58</a></div></div>
|
|
1125
1125
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
1126
1126
|
<div class="ttc" id="classSVF_1_1Options_html_a19758db674de8af8a1c80734a1c0fac8"><div class="ttname"><a href="classSVF_1_1Options.html#a19758db674de8af8a1c80734a1c0fac8">SVF::Options::TCTDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt< bool > TCTDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00192">Options.h:192</a></div></div>
|
|
1127
1127
|
</div><!-- fragment -->
|
|
@@ -1146,8 +1146,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1146
1146
|
<p>Dump calling context. </p>
|
|
1147
1147
|
<p>Dump calling context information </p>
|
|
1148
1148
|
|
|
1149
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1150
|
-
<div class="fragment"><div class="line"><a name="
|
|
1149
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00528">528</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1150
|
+
<div class="fragment"><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  std::string str;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  rawstr << <span class="stringliteral">"[:"</span>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">for</span>(CallStrCxt::const_iterator it = cxt.begin(), eit = cxt.end(); it!=eit; ++it)</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  rawstr << <span class="stringliteral">" ' "</span><< *it << <span class="stringliteral">" ' "</span>;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  rawstr << *(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(*it)-><a class="code" href="classSVF_1_1CallICFGNode.html#a674753d5ca0fbe28674acb25291f2bcf">getCallSite</a>());</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  rawstr << <span class="stringliteral">" call "</span> << <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">getCallSite</a>(*it)-><a class="code" href="classSVF_1_1CallICFGNode.html#a18f4077d42b23c3fed35efc793b6102e">getCaller</a>()-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">"-->"</span> << <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">getCalleeOfCallSite</a>(*it)-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">", \n"</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  rawstr << <span class="stringliteral">" ]"</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"max cxt = "</span> << cxt.size() << rawstr.str() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a16e0017ad3a2d36d7efbc4383e394154"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a16e0017ad3a2d36d7efbc4383e394154">SVF::PTACallGraph::getCallSite</a></div><div class="ttdeci">const CallICFGNode * getCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00363">PTACallGraph.h:363</a></div></div>
|
|
1151
1151
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aacd5f35171717cb4d758c17bef828a0f"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aacd5f35171717cb4d758c17bef828a0f">SVF::PTACallGraph::getCalleeOfCallSite</a></div><div class="ttdeci">const SVFFunction * getCalleeOfCallSite(CallSiteID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00371">PTACallGraph.h:371</a></div></div>
|
|
1152
1152
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
1153
1153
|
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
@@ -1333,8 +1333,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1333
1333
|
|
|
1334
1334
|
<p>Get dominator for a function. </p>
|
|
1335
1335
|
|
|
1336
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1337
|
-
<div class="fragment"><div class="line"><a name="
|
|
1336
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00356">356</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1337
|
+
<div class="fragment"><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="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">getDT</a>(fun);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_afb3864bae4ac95c7d3b731634c1abdab"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#afb3864bae4ac95c7d3b731634c1abdab">SVF::PTACFInfoBuilder::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const Function *f)</div><div class="ttdoc">Get dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00111">DataFlowUtil.cpp:111</a></div></div>
|
|
1338
1338
|
<div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
|
|
1339
1339
|
</div><!-- fragment -->
|
|
1340
1340
|
</div>
|
|
@@ -1404,8 +1404,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1404
1404
|
<p>Get call graph edge via nodes. </p>
|
|
1405
1405
|
<p>get CallGraph edge via nodes </p>
|
|
1406
1406
|
|
|
1407
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1408
|
-
<div class="fragment"><div class="line"><a name="
|
|
1407
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00584">584</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1408
|
+
<div class="fragment"><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">for</span> (TCTEdge::ThreadCreateEdgeSet::const_iterator iter = src-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(); iter != src-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); ++iter)</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_1TCTEdge.html">TCTEdge</a>* edge = (*iter);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == kind && edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() == dst-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> }</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
|
|
1409
1409
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00077">GenericGraph.h:77</a></div></div>
|
|
1410
1410
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
|
|
1411
1411
|
<div class="ttc" id="classSVF_1_1TCTEdge_html"><div class="ttname"><a href="classSVF_1_1TCTEdge.html">SVF::TCTEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00030">TCT.h:30</a></div></div>
|
|
@@ -1468,8 +1468,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1468
1468
|
<p>Get loop for an instruction. </p>
|
|
1469
1469
|
<p>Get loop for fork/join site </p>
|
|
1470
1470
|
|
|
1471
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1472
|
-
<div class="fragment"><div class="line"><a name="
|
|
1471
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00349">349</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1472
|
+
<div class="fragment"><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst->getParent()->getParent();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(fun)->getLoopFor(inst->getParent());</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> }</div><div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
1473
1473
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00075">DataFlowUtil.cpp:75</a></div></div>
|
|
1474
1474
|
<div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
|
|
1475
1475
|
</div><!-- fragment -->
|
|
@@ -1494,8 +1494,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1494
1494
|
<p>Get loop for fork/join site. </p>
|
|
1495
1495
|
<p>Get loop for fork/join site </p>
|
|
1496
1496
|
|
|
1497
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1498
|
-
<div class="fragment"><div class="line"><a name="
|
|
1497
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00369">369</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1498
|
+
<div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = bb->getParent();</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">getLoopInfo</a>(fun)->getLoopFor(bb);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> }</div><div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
1499
1499
|
<div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a418e6009760a7c9a048d2ffd9cd29956"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a418e6009760a7c9a048d2ffd9cd29956">SVF::PTACFInfoBuilder::getLoopInfo</a></div><div class="ttdeci">LoopInfo * getLoopInfo(const Function *f)</div><div class="ttdoc">Get loop info of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00075">DataFlowUtil.cpp:75</a></div></div>
|
|
1500
1500
|
<div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
|
|
1501
1501
|
</div><!-- fragment -->
|
|
@@ -1590,11 +1590,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1590
1590
|
<p>traverse to successive statements</p>
|
|
1591
1591
|
<p>if we are sitting at the loop header, then go inside the loop but ignore loop exit </p>
|
|
1592
1592
|
|
|
1593
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1594
|
-
<div class="fragment"><div class="line"><a name="
|
|
1595
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1596
|
-
<div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
1597
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a549a95aa04233c98732777ea210d8525"><div class="ttname"><a href="classSVF_1_1TCT.html#a549a95aa04233c98732777ea210d8525">SVF::TCT::isLoopHeaderOfJoinLoop</a></div><div class="ttdeci">bool isLoopHeaderOfJoinLoop(const BasicBlock *bb)</div><div class="ttdoc">Whether a given bb is a loop head of a inloop join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
1593
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00448">448</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1594
|
+
<div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</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>  instList.push_back(curInst->getNextNode());</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">else</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  it != ie; ++it)</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</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_1TCT.html#a549a95aa04233c98732777ea210d8525">isLoopHeaderOfJoinLoop</a>(BB) && !<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(BB)->contains(*it))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">continue</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>  instList.push_back(&((*it)->front()));</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>  }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00067">BasicTypes.h:67</a></div></div>
|
|
1595
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
|
|
1596
|
+
<div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00349">TCT.cpp:349</a></div></div>
|
|
1597
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a549a95aa04233c98732777ea210d8525"><div class="ttname"><a href="classSVF_1_1TCT.html#a549a95aa04233c98732777ea210d8525">SVF::TCT::isLoopHeaderOfJoinLoop</a></div><div class="ttdeci">bool isLoopHeaderOfJoinLoop(const BasicBlock *bb)</div><div class="ttdoc">Whether a given bb is a loop head of a inloop join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00315">TCT.cpp:315</a></div></div>
|
|
1598
1598
|
</div><!-- fragment -->
|
|
1599
1599
|
</div>
|
|
1600
1600
|
</div>
|
|
@@ -1761,8 +1761,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1761
1761
|
|
|
1762
1762
|
<p>Get dominator for a function. </p>
|
|
1763
1763
|
|
|
1764
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1765
|
-
<div class="fragment"><div class="line"><a name="
|
|
1764
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00362">362</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1765
|
+
<div class="fragment"><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">loopInfoBuilder</a>.<a class="code" href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">getPostDT</a>(fun);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> }</div><div class="ttc" id="classSVF_1_1PTACFInfoBuilder_html_a00e3339dab62325354e8ecd8251da0f1"><div class="ttname"><a href="classSVF_1_1PTACFInfoBuilder.html#a00e3339dab62325354e8ecd8251da0f1">SVF::PTACFInfoBuilder::getPostDT</a></div><div class="ttdeci">PostDominatorTree * getPostDT(const Function *f)</div><div class="ttdoc">Get post dominator tree of a function. </div><div class="ttdef"><b>Definition:</b> <a href="DataFlowUtil_8cpp_source.html#l00092">DataFlowUtil.cpp:92</a></div></div>
|
|
1766
1766
|
<div class="ttc" id="classSVF_1_1TCT_html_ae64d6203b41c92d4ca617b8e976b88b2"><div class="ttname"><a href="classSVF_1_1TCT.html#ae64d6203b41c92d4ca617b8e976b88b2">SVF::TCT::loopInfoBuilder</a></div><div class="ttdeci">PTACFInfoBuilder loopInfoBuilder</div><div class="ttdoc">Map a CxtThread to its start routine function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00549">TCT.h:549</a></div></div>
|
|
1767
1767
|
</div><!-- fragment -->
|
|
1768
1768
|
</div>
|
|
@@ -1816,8 +1816,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1816
1816
|
<p>Get SE for function. </p>
|
|
1817
1817
|
<p>Get SE for function </p>
|
|
1818
1818
|
|
|
1819
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
1820
|
-
<div class="fragment"><div class="line"><a name="
|
|
1819
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00378">378</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
1820
|
+
<div class="fragment"><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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = inst->getParent()->getParent();</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">MTA::getSE</a>(fun);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> }</div><div class="ttc" id="classSVF_1_1MTA_html_a7cb2fd230ed5839b59f650cc87de192e"><div class="ttname"><a href="classSVF_1_1MTA.html#a7cb2fd230ed5839b59f650cc87de192e">SVF::MTA::getSE</a></div><div class="ttdeci">static ScalarEvolution * getSE(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00073">MTA.h:73</a></div></div>
|
|
1821
1821
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
1822
1822
|
</div><!-- fragment -->
|
|
1823
1823
|
</div>
|
|
@@ -2148,14 +2148,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2148
2148
|
<p>Create spawnee <a class="el" href="classSVF_1_1TCT.html">TCT</a> node</p>
|
|
2149
2149
|
<p>Add <a class="el" href="classSVF_1_1TCT.html">TCT</a> nodes and edge </p>
|
|
2150
2150
|
|
|
2151
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2152
|
-
<div class="fragment"><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="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmcallee = callee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</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>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(ctp.<a class="code" href="classSVF_1_1CxtProc.html#a99b0f68b4cbd733f91eea33aa3e64eb7">getContext</a>());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> oldCxt = cxt;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(),llvmcallee);</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>  <span class="keywordflow">if</span>(cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">PTACallGraphEdge::CallRetEdge</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>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>(),cxt,callee);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process CallRet old ctp --"</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process CallRet new ctp --"</span>; newctp.dump());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</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> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a>)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* fork = SVFUtil::cast<CallInst>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* spawneeNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt,fork, oldCxt, llvmcallee);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(spawneeNode->getId(),cxt,callee);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">addTCTEdge</a>(this-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>()), spawneeNode))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Add TCT Edge from thread "</span> << ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  this-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>())->getCxtThread().dump();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" to thread "</span> << spawneeNode->getId() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  spawneeNode->getCxtThread().dump();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process Fork old ctp --"</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process Fork new ctp --"</span>; newctp.dump());</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>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> }</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
|
|
2151
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00224">224</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2152
|
+
<div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* llvmcallee = callee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> cxt(ctp.<a class="code" href="classSVF_1_1CxtProc.html#a99b0f68b4cbd733f91eea33aa3e64eb7">getContext</a>());</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> oldCxt = cxt;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>(),llvmcallee);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>(cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7aa968b68fb87a0135833105f4e6413c69">PTACallGraphEdge::CallRetEdge</a>)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>(),cxt,callee);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process CallRet old ctp --"</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process CallRet new ctp --"</span>; newctp.dump());</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>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cgEdge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* fork = SVFUtil::cast<CallInst>(cs.<a class="code" href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">getInstruction</a>());</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* spawneeNode = <a class="code" href="classSVF_1_1TCT.html#a787e815e9c7e53566ce56127dd31a3a9">getOrCreateTCTNode</a>(cxt,fork, oldCxt, llvmcallee);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classSVF_1_1CxtThreadProc.html">CxtThreadProc</a> newctp(spawneeNode->getId(),cxt,callee);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">pushToCTPWorkList</a>(newctp))</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">addTCTEdge</a>(this-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>()), spawneeNode))</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>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Add TCT Edge from thread "</span> << ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  this-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">getTid</a>())->getCxtThread().dump();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" to thread "</span> << spawneeNode->getId() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  spawneeNode->getCxtThread().dump();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n"</span> );</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process Fork old ctp --"</span>; ctp.<a class="code" href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">dump</a>());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TCT Process Fork new ctp --"</span>; newctp.dump());</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div><div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00081">GenericGraph.h:81</a></div></div>
|
|
2153
2153
|
<div class="ttc" id="classSVF_1_1TCT_html_a002bac3dc928bc78b94de0ca97b1ec1d"><div class="ttname"><a href="classSVF_1_1TCT.html#a002bac3dc928bc78b94de0ca97b1ec1d">SVF::TCT::pushToCTPWorkList</a></div><div class="ttdeci">bool pushToCTPWorkList(const CxtThreadProc &ctp)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00514">TCT.h:514</a></div></div>
|
|
2154
2154
|
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
2155
2155
|
<div class="ttc" id="classSVF_1_1TCT_html_aa87bfebf48f9e74655ab3db4ec1576b3"><div class="ttname"><a href="classSVF_1_1TCT.html#aa87bfebf48f9e74655ab3db4ec1576b3">SVF::TCT::addTCTEdge</a></div><div class="ttdeci">bool addTCTEdge(TCTNode *src, TCTNode *dst)</div><div class="ttdoc">Add TCT edge. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00415">TCT.h:415</a></div></div>
|
|
2156
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2157
|
-
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2158
|
-
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2156
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
2157
|
+
<div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00105">BasicTypes.h:105</a></div></div>
|
|
2158
|
+
<div class="ttc" id="classSVF_1_1CallSite_html_ab36a6a35eea673d4bdca615efc4336b1"><div class="ttname"><a href="classSVF_1_1CallSite.html#ab36a6a35eea673d4bdca615efc4336b1">SVF::CallSite::getInstruction</a></div><div class="ttdeci">CallBase * getInstruction() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00215">BasicTypes.h:215</a></div></div>
|
|
2159
2159
|
<div class="ttc" id="classSVF_1_1TCTNode_html"><div class="ttname"><a href="classSVF_1_1TCTNode.html">SVF::TCTNode</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00066">TCT.h:66</a></div></div>
|
|
2160
2160
|
<div class="ttc" id="classSVF_1_1CxtThreadProc_html_aed801cfecdbfcd690db2d78de5f8e0b5"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html#aed801cfecdbfcd690db2d78de5f8e0b5">SVF::CxtThreadProc::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtThreadProc. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00447">CxtStmt.h:447</a></div></div>
|
|
2161
2161
|
<div class="ttc" id="classSVF_1_1CxtThreadProc_html"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html">SVF::CxtThreadProc</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00394">CxtStmt.h:394</a></div></div>
|
|
@@ -2166,10 +2166,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2166
2166
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
2167
2167
|
<div class="ttc" id="classSVF_1_1CxtThreadProc_html_a61d950c7469f4bb9d2152b0e7d892ebf"><div class="ttname"><a href="classSVF_1_1CxtThreadProc.html#a61d950c7469f4bb9d2152b0e7d892ebf">SVF::CxtThreadProc::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current thread id. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00410">CxtStmt.h:410</a></div></div>
|
|
2168
2168
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
2169
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2169
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
|
|
2170
2170
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">SVF::PTACallGraphEdge::TDForkEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
|
|
2171
2171
|
<div class="ttc" id="classSVF_1_1CxtProc_html_a99b0f68b4cbd733f91eea33aa3e64eb7"><div class="ttname"><a href="classSVF_1_1CxtProc.html#a99b0f68b4cbd733f91eea33aa3e64eb7">SVF::CxtProc::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00330">CxtStmt.h:330</a></div></div>
|
|
2172
|
-
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2172
|
+
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00475">TCT.cpp:475</a></div></div>
|
|
2173
2173
|
<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>
|
|
2174
2174
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2175
2175
|
</div><!-- fragment -->
|
|
@@ -2210,8 +2210,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2210
2210
|
<p>Whether we have aleady created this call graph edge. </p>
|
|
2211
2211
|
<p>Whether we have already created this call graph edge </p>
|
|
2212
2212
|
|
|
2213
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2214
|
-
<div class="fragment"><div class="line"><a name="
|
|
2213
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00567">567</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2214
|
+
<div class="fragment"><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a> edge(src, dst, kind);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* outEdge = src-><a class="code" href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">hasOutgoingEdge</a>(&edge);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <a class="code" href="classSVF_1_1TCTEdge.html">TCTEdge</a>* inEdge = dst-><a class="code" href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">hasIncomingEdge</a>(&edge);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">if</span> (outEdge && inEdge)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(outEdge == inEdge && <span class="stringliteral">"edges not match"</span>);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">return</span> outEdge;</div><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">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span> }</div><div class="ttc" id="classSVF_1_1GenericNode_html_a06a7373b11143e709784de784fa476fe"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a06a7373b11143e709784de784fa476fe">SVF::GenericNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00194">GenericGraph.h:194</a></div></div>
|
|
2215
2215
|
<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>
|
|
2216
2216
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a0931220d7a38e03f206cbdc6465d32ad"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a0931220d7a38e03f206cbdc6465d32ad">SVF::GenericNode::hasOutgoingEdge</a></div><div class="ttdeci">bool hasOutgoingEdge() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00198">GenericGraph.h:198</a></div></div>
|
|
2217
2217
|
<div class="ttc" id="classSVF_1_1TCTEdge_html"><div class="ttname"><a href="classSVF_1_1TCTEdge.html">SVF::TCTEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00030">TCT.h:30</a></div></div>
|
|
@@ -2440,12 +2440,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2440
2440
|
<p>Whether an instruction is in a loop</p>
|
|
2441
2441
|
<p>An instruction i is in loop (1) the instruction i itself (2) all the callsites invoke the function where i resides in </p>
|
|
2442
2442
|
|
|
2443
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2444
|
-
<div class="fragment"><div class="line"><a name="
|
|
2443
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00025">25</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2444
|
+
<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(inst && <span class="stringliteral">"null value instruction!!"</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="classSVF_1_1TCT.html#a3238d12557309967f8bdfdfc275b6710">InstSet</a> insts;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const Instruction*></a> worklist;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(inst);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  insts.insert(inst);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(inst->getParent()->getParent()));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgnode-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = cgnode-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)->directCallsBegin(),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ecit = (*nit)->directCallsEnd(); cit!=ecit; ++cit)</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>  <span class="keywordflow">if</span>(insts.insert((*cit)->getCallSite()).second)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*cit)->getCallSite());</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>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)->indirectCallsBegin(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ecit = (*nit)->indirectCallsEnd(); cit!=ecit; ++cit)</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="keywordflow">if</span>(insts.insert((*cit)->getCallSite()).second)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*cit)->getCallSite());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">for</span>(InstSet::const_iterator it = insts.begin(), eit = insts.end(); it!=eit; ++it)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i = *it;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">getLoop</a>(i))</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</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> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
2445
2445
|
<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>
|
|
2446
2446
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
2447
2447
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
2448
|
-
<div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2448
|
+
<div class="ttc" id="classSVF_1_1TCT_html_add9104a3d7a821e9c2f266ae1810d2e3"><div class="ttname"><a href="classSVF_1_1TCT.html#add9104a3d7a821e9c2f266ae1810d2e3">SVF::TCT::getLoop</a></div><div class="ttdeci">const Loop * getLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00349">TCT.cpp:349</a></div></div>
|
|
2449
2449
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
2450
2450
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
2451
2451
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
@@ -2486,10 +2486,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2486
2486
|
<p>Whether an instruction is in a recursion. </p>
|
|
2487
2487
|
<p>An instruction i is in a recursion (1) the function f where i resides in is in a recursion (2) any caller function starting from the function f in is in a recursion </p>
|
|
2488
2488
|
|
|
2489
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2490
|
-
<div class="fragment"><div class="line"><a name="
|
|
2489
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00071">71</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2490
|
+
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* f = inst->getParent()->getParent();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const Function*></a> worklist;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Function*></a> visits;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(f);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  visits.insert(fun);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a30662928bafc97c1e7b123270ca69980">tcgSCC</a>-><a class="code" href="classSVF_1_1SCCDetection.html#a5d699af73b1e7ad4e3a5f6d26b8b6d15">isInCycle</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</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>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = cgnode-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = cgnode-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)->directCallsBegin(),</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  ecit = (*nit)->directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*cit)->getCallSite()->getParent()->getParent();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(visits.find(caller)==visits.end())</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</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="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (*nit)->indirectCallsBegin(),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  ecit = (*nit)->indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*cit)->getCallSite()->getParent()->getParent();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(visits.find(caller)==visits.end())</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
2491
2491
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
2492
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2492
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
2493
2493
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
2494
2494
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
2495
2495
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
@@ -2536,12 +2536,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2536
2536
|
<p>Return true if a join instruction must be executed inside a loop. </p>
|
|
2537
2537
|
<p>Return true if a join instruction must be executed inside a loop joinbb should post dominate the successive basic block of a loop header </p>
|
|
2538
2538
|
|
|
2539
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2540
|
-
<div class="fragment"><div class="line"><a name="
|
|
2539
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00272">272</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2540
|
+
<div class="fragment"><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* loopheadbb = lp->getHeader();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* joinbb = join->getParent();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(loopheadbb->getParent()==joinbb->getParent() && <span class="stringliteral">"should inside same function"</span>);</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="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">PostDominatorTree</a>* pdt = <a class="code" href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">getPostDT</a>(loopheadbb->getParent());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(loopheadbb), ie = succ_end(loopheadbb);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  it != ie; ++it)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span>(lp->contains(*it))</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>(pdt->dominates(joinbb,*it)==<span class="keyword">false</span>)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>  }</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00067">BasicTypes.h:67</a></div></div>
|
|
2541
2541
|
<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>
|
|
2542
|
-
<div class="ttc" id="classSVF_1_1TCT_html_ae4d26d2a77e45104523cfc481012bccc"><div class="ttname"><a href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">SVF::TCT::getPostDT</a></div><div class="ttdeci">const PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get dominator for a function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2543
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2544
|
-
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2542
|
+
<div class="ttc" id="classSVF_1_1TCT_html_ae4d26d2a77e45104523cfc481012bccc"><div class="ttname"><a href="classSVF_1_1TCT.html#ae4d26d2a77e45104523cfc481012bccc">SVF::TCT::getPostDT</a></div><div class="ttdeci">const PostDominatorTree * getPostDT(const Function *fun)</div><div class="ttdoc">Get dominator for a function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00362">TCT.cpp:362</a></div></div>
|
|
2543
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00120">BasicTypes.h:120</a></div></div>
|
|
2544
|
+
<div class="ttc" id="namespaceSVF_html_ab34383ee87cd45eb485fa29db482ffef"><div class="ttname"><a href="namespaceSVF.html#ab34383ee87cd45eb485fa29db482ffef">SVF::PostDominatorTree</a></div><div class="ttdeci">llvm::PostDominatorTree PostDominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00112">BasicTypes.h:112</a></div></div>
|
|
2545
2545
|
</div><!-- fragment -->
|
|
2546
2546
|
</div>
|
|
2547
2547
|
</div>
|
|
@@ -2607,8 +2607,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2607
2607
|
<p>Whether a given bb is an exit of a inloop join site. </p>
|
|
2608
2608
|
<p>Whether a given bb is an exit of a inloop join site </p>
|
|
2609
2609
|
|
|
2610
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2611
|
-
<div class="fragment"><div class="line"><a name="
|
|
2610
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00329">329</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2611
|
+
<div class="fragment"><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">for</span>(InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.begin(), eit = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  it->second->getExitBlocks(exitbbs);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span>(eb == bb)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00067">BasicTypes.h:67</a></div></div>
|
|
2612
2612
|
<div class="ttc" id="namespaceSVF_html_a02be4933b76c2baa7fdbe8b290e12bb3"><div class="ttname"><a href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SVF::SmallBBVector</a></div><div class="ttdeci">llvm::SmallVector< llvm::BasicBlock *, 8 > SmallBBVector</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00118">SVFBasicTypes.h:118</a></div></div>
|
|
2613
2613
|
<div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00550">TCT.h:550</a></div></div>
|
|
2614
2614
|
</div><!-- fragment -->
|
|
@@ -2641,8 +2641,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2641
2641
|
<p>Whether a given bb is a loop head of a inloop join site. </p>
|
|
2642
2642
|
<p>Return true if a given bb is a loop head of a inloop join site </p>
|
|
2643
2643
|
|
|
2644
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2645
|
-
<div class="fragment"><div class="line"><a name="
|
|
2644
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00315">315</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2645
|
+
<div class="fragment"><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>  <span class="keywordflow">for</span>(InstToLoopMap::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.begin(), eit = <a class="code" href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">joinSiteToLoopMap</a>.end(); it!=eit; ++it)</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">if</span>(it->second->getHeader() == bb)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> }</div><div class="ttc" id="classSVF_1_1TCT_html_a5b1f44ffa732607a7800728befa5bc57"><div class="ttname"><a href="classSVF_1_1TCT.html#a5b1f44ffa732607a7800728befa5bc57">SVF::TCT::joinSiteToLoopMap</a></div><div class="ttdeci">InstToLoopMap joinSiteToLoopMap</div><div class="ttdoc">map an inloop join to its loop class </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00550">TCT.h:550</a></div></div>
|
|
2646
2646
|
</div><!-- fragment -->
|
|
2647
2647
|
</div>
|
|
2648
2648
|
</div>
|
|
@@ -2701,8 +2701,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2701
2701
|
<p>Mark relevant procedures that are backward reachable from any fork/join site. </p>
|
|
2702
2702
|
<p>Mark relevant procedures that are backward reachable from any fork/join site </p>
|
|
2703
2703
|
|
|
2704
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2705
|
-
<div class="fragment"><div class="line"><a name="
|
|
2704
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00114">114</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2705
|
+
<div class="fragment"><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>  <span class="keywordflow">for</span> (ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>((*it)->getParent()->getParent());</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">for</span>(ThreadCallGraph::ForkEdgeSet::const_iterator nit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(*it), neit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(*it); nit!=neit; nit++)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* forkeeNode = (*nit)->getDstNode();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.insert(forkeeNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</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> </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> (ThreadCallGraph::CallSiteSet::const_iterator it = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>(), eit = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>(); it != eit; ++it)</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>  <a class="code" href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">markRelProcs</a>((*it)->getParent()->getParent());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.empty())</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"We didn't recognize any fork site, this is single thread program?"</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8721610a39212613ad55bbd46a35c576"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">SVF::ThreadCallGraph::getForkEdgeBegin</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeBegin(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00208">ThreadCallGraph.h:208</a></div></div>
|
|
2706
2706
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a1ebbd26c17cff1c1a1bee9caa9a8f825"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">SVF::ThreadCallGraph::forksitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00277">ThreadCallGraph.h:277</a></div></div>
|
|
2707
2707
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a8351e7ab445cb7faf0209d1fbc63fce1"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">SVF::ThreadCallGraph::getForkEdgeEnd</a></div><div class="ttdeci">ForkEdgeSet::const_iterator getForkEdgeEnd(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00214">ThreadCallGraph.h:214</a></div></div>
|
|
2708
2708
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a37f2e076713a9aeb0e4313fb05dfb92e"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">SVF::ThreadCallGraph::forksitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator forksitesBegin() const</div><div class="ttdoc">Fork sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00273">ThreadCallGraph.h:273</a></div></div>
|
|
@@ -2711,10 +2711,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2711
2711
|
<div class="ttc" id="classSVF_1_1TCT_html_a720a934088dddda2b134cabcc59ef43d"><div class="ttname"><a href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">SVF::TCT::candidateFuncSet</a></div><div class="ttdeci">FunSet candidateFuncSet</div><div class="ttdoc">Procedures that are neither called by other functions nor extern functions. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00542">TCT.h:542</a></div></div>
|
|
2712
2712
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a98ecfe14be2d38d292b5919716cdd29d"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">SVF::ThreadCallGraph::joinsitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator joinsitesBegin() const</div><div class="ttdoc">Join sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00285">ThreadCallGraph.h:285</a></div></div>
|
|
2713
2713
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
2714
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2714
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
|
|
2715
2715
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a50502f398e5eac9c6da3e26ea6052057"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">SVF::ThreadCallGraph::joinsitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator joinsitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00289">ThreadCallGraph.h:289</a></div></div>
|
|
2716
2716
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
2717
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2717
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a8bb7ffa8dd185c52e6c150f9bc995511"><div class="ttname"><a href="classSVF_1_1TCT.html#a8bb7ffa8dd185c52e6c150f9bc995511">SVF::TCT::markRelProcs</a></div><div class="ttdeci">void markRelProcs()</div><div class="ttdoc">Mark relevant procedures that are backward reachable from any fork/join site. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00114">TCT.cpp:114</a></div></div>
|
|
2718
2718
|
</div><!-- fragment -->
|
|
2719
2719
|
</div>
|
|
2720
2720
|
</div>
|
|
@@ -2742,10 +2742,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2742
2742
|
</table>
|
|
2743
2743
|
</div><div class="memdoc">
|
|
2744
2744
|
|
|
2745
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2746
|
-
<div class="fragment"><div class="line"><a name="
|
|
2745
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00140">140</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2746
|
+
<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const PTACallGraphNode*></a> worklist;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">PTACGNodeSet</a> visited;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  visited.insert(cgnode);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1TCT.html#a720a934088dddda2b134cabcc59ef43d">candidateFuncSet</a>.insert(node-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> nit = node-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), neit = node-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); nit!=neit; nit++)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* srcNode = (*nit)->getSrcNode();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(visited.find(srcNode)==visited.end())</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>  visited.insert(srcNode);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</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="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
2747
2747
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
2748
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2748
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
2749
2749
|
<div class="ttc" id="classSVF_1_1TCT_html_afb579a5bdcc0a1c6b075bb9aae36c237"><div class="ttname"><a href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">SVF::TCT::PTACGNodeSet</a></div><div class="ttdeci">Set< const PTACallGraphNode * > PTACGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00125">TCT.h:125</a></div></div>
|
|
2750
2750
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
2751
2751
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
@@ -2756,7 +2756,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2756
2756
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
|
|
2757
2757
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
2758
2758
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|
|
2759
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2759
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00148">BasicTypes.h:148</a></div></div>
|
|
2760
2760
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
2761
2761
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
|
|
2762
2762
|
</div><!-- fragment -->
|
|
@@ -2799,11 +2799,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2799
2799
|
<p>handle calling context for candidate functions only</p>
|
|
2800
2800
|
<p>partial match </p>
|
|
2801
2801
|
|
|
2802
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2803
|
-
<div class="fragment"><div class="line"><a name="
|
|
2802
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00497">497</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2803
|
+
<div class="fragment"><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call->getParent()->getParent();</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call), svfcallee);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span>(cxt.empty())</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller)),<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svfcallee))==<span class="keyword">false</span>)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span>(cxt.back() == csId)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  cxt.pop_back();</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
2804
2804
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
2805
2805
|
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
2806
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2806
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
2807
2807
|
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
2808
2808
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
2809
2809
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
@@ -2811,7 +2811,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2811
2811
|
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00268">TCT.h:268</a></div></div>
|
|
2812
2812
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
2813
2813
|
<div class="ttc" id="classSVF_1_1TCT_html_aa69b82c888c8193e97f9e95c62ac99d4"><div class="ttname"><a href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">SVF::TCT::isCandidateFun</a></div><div class="ttdeci">bool isCandidateFun(const PTACallGraph::FunctionSet &callees) const</div><div class="ttdoc">Whether it is a candidate function for indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00249">TCT.h:249</a></div></div>
|
|
2814
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2814
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00528">TCT.cpp:528</a></div></div>
|
|
2815
2815
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2816
2816
|
</div><!-- fragment -->
|
|
2817
2817
|
</div>
|
|
@@ -2863,8 +2863,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2863
2863
|
<p>Print <a class="el" href="classSVF_1_1TCT.html">TCT</a> information. </p>
|
|
2864
2864
|
<p>Print <a class="el" href="classSVF_1_1TCT.html">TCT</a> information </p>
|
|
2865
2865
|
|
|
2866
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2867
|
-
<div class="fragment"><div class="line"><a name="
|
|
2866
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00555">555</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2867
|
+
<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="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = this-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = this-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"TID "</span> << it->first << <span class="stringliteral">"\t"</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  it->second->getCxtThread().dump();</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> }</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>
|
|
2868
2868
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00343">GenericGraph.h:343</a></div></div>
|
|
2869
2869
|
<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>
|
|
2870
2870
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
@@ -2907,11 +2907,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2907
2907
|
<p>Push calling context </p>
|
|
2908
2908
|
<p>handle calling context for candidate functions only </p>
|
|
2909
2909
|
|
|
2910
|
-
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#
|
|
2911
|
-
<div class="fragment"><div class="line"><a name="
|
|
2910
|
+
<p class="definition">Definition at line <a class="el" href="TCT_8cpp_source.html#l00475">475</a> of file <a class="el" href="TCT_8cpp_source.html">TCT.cpp</a>.</p>
|
|
2911
|
+
<div class="fragment"><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = call->getParent()->getParent();</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = <a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = <a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">getCallSiteID</a>(<a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(call), svfcallee);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">inSameCallGraphSCC</a>(<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(caller)),<a class="code" href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(callee)))==<span class="keyword">false</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>  <a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,csId);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">dumpCxt</a>(cxt));</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> }</div><div class="ttc" id="classSVF_1_1PTACallGraph_html_a711bd8ad385f8454fbfcd20f134efe1b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a711bd8ad385f8454fbfcd20f134efe1b">SVF::PTACallGraph::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID(const CallICFGNode *cs, const SVFFunction *callee) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00344">PTACallGraph.h:344</a></div></div>
|
|
2912
2912
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
2913
2913
|
<div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
|
|
2914
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2914
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
2915
2915
|
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
2916
2916
|
<div class="ttc" id="classSVF_1_1TCT_html_ac9ddd6559e818f37c018ed5435182363"><div class="ttname"><a href="classSVF_1_1TCT.html#ac9ddd6559e818f37c018ed5435182363">SVF::TCT::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00397">TCT.h:397</a></div></div>
|
|
2917
2917
|
<div class="ttc" id="classSVF_1_1TCT_html_a21bcc063a406eb8650df42cf5ced68c9"><div class="ttname"><a href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">SVF::TCT::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdoc">Get SVFFuntion given Function. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00156">TCT.h:156</a></div></div>
|
|
@@ -2919,8 +2919,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2919
2919
|
<div class="ttc" id="classSVF_1_1TCT_html_a95cd490d37f8831edc6910f7ecdf413e"><div class="ttname"><a href="classSVF_1_1TCT.html#a95cd490d37f8831edc6910f7ecdf413e">SVF::TCT::inSameCallGraphSCC</a></div><div class="ttdeci">bool inSameCallGraphSCC(const PTACallGraphNode *src, const PTACallGraphNode *dst)</div><div class="ttdoc">Whether two functions in the same callgraph scc. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00268">TCT.h:268</a></div></div>
|
|
2920
2920
|
<div class="ttc" id="namespaceSVF_html_a03d88a0302bcd253387690f13f693f64"><div class="ttname"><a href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">SVF::CallSiteID</a></div><div class="ttdeci">unsigned CallSiteID</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
|
|
2921
2921
|
<div class="ttc" id="classSVF_1_1TCT_html_aa69b82c888c8193e97f9e95c62ac99d4"><div class="ttname"><a href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">SVF::TCT::isCandidateFun</a></div><div class="ttdeci">bool isCandidateFun(const PTACallGraph::FunctionSet &callees) const</div><div class="ttdoc">Whether it is a candidate function for indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00249">TCT.h:249</a></div></div>
|
|
2922
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2923
|
-
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
2922
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aa86c4422e17cf00408444f18687d555b"><div class="ttname"><a href="classSVF_1_1TCT.html#aa86c4422e17cf00408444f18687d555b">SVF::TCT::dumpCxt</a></div><div class="ttdeci">void dumpCxt(CallStrCxt &cxt)</div><div class="ttdoc">Dump calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00528">TCT.cpp:528</a></div></div>
|
|
2923
|
+
<div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00475">TCT.cpp:475</a></div></div>
|
|
2924
2924
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
2925
2925
|
</div><!-- fragment -->
|
|
2926
2926
|
</div>
|
|
@@ -3027,8 +3027,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
3027
3027
|
<p>main thread </p>
|
|
3028
3028
|
|
|
3029
3029
|
<p class="definition">Definition at line <a class="el" href="TCT_8h_source.html#l00485">485</a> of file <a class="el" href="TCT_8h_source.html">TCT.h</a>.</p>
|
|
3030
|
-
<div class="fragment"><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">if</span>(ct.getThread() != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  ct.setInloop(<a class="code" href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">isInLoopInstruction</a>(ct.getThread()));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  ct.setIncycle(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(ct.getThread()));</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  ct.setInloop(<span class="keyword">false</span>);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  ct.setIncycle(<span class="keyword">false</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
3031
|
-
<div class="ttc" id="classSVF_1_1TCT_html_a6bcf4c3c095830626423bf522653b306"><div class="ttname"><a href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">SVF::TCT::isInLoopInstruction</a></div><div class="ttdeci">bool isInLoopInstruction(const Instruction *inst)</div><div class="ttdoc">Multi-forked threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#
|
|
3030
|
+
<div class="fragment"><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">if</span>(ct.getThread() != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  ct.setInloop(<a class="code" href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">isInLoopInstruction</a>(ct.getThread()));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  ct.setIncycle(<a class="code" href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">isInRecursion</a>(ct.getThread()));</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  ct.setInloop(<span class="keyword">false</span>);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  ct.setIncycle(<span class="keyword">false</span>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_af7cd9f1862836818593685bc5105da52"><div class="ttname"><a href="classSVF_1_1TCT.html#af7cd9f1862836818593685bc5105da52">SVF::TCT::isInRecursion</a></div><div class="ttdeci">bool isInRecursion(const Instruction *inst) const</div><div class="ttdoc">Whether an instruction is in a recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00071">TCT.cpp:71</a></div></div>
|
|
3031
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a6bcf4c3c095830626423bf522653b306"><div class="ttname"><a href="classSVF_1_1TCT.html#a6bcf4c3c095830626423bf522653b306">SVF::TCT::isInLoopInstruction</a></div><div class="ttdeci">bool isInLoopInstruction(const Instruction *inst)</div><div class="ttdoc">Multi-forked threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00025">TCT.cpp:25</a></div></div>
|
|
3032
3032
|
</div><!-- fragment -->
|
|
3033
3033
|
</div>
|
|
3034
3034
|
</div>
|