svf-tools 1.0.458 → 1.0.461
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 +11 -11
- 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/BreakConstantExpr_8h_source.html +3 -4
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +14 -14
- 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 +16 -16
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
- 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 +19 -19
- 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/DDAPass_8h_source.html +2 -3
- 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_8cpp_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 +8 -8
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- 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 +6 -6
- 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 +13 -13
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +10 -10
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- 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 +15 -14
- 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 +10 -10
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- 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 +4 -4
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +10 -10
- 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 +4 -5
- 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/MutablePointsToDS_8h_source.html +2 -2
- 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 +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +21 -21
- 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/PersistentPointsToDS_8h_source.html +2 -2
- 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 +23 -23
- 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 +3 -4
- 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/SVFGEdge_8h_source.html +35 -41
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +52 -52
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
- 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 +6 -7
- package/SVF-doxygen/html/html/SVFUtil_8h.html +6 -3
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -12
- 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 +141 -143
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +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 +54 -54
- 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 +99 -95
- package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +144 -146
- 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 +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +6 -6
- 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 -4
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +67 -69
- 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 +2 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -4
- package/SVF-doxygen/html/html/classSVF_1_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 +11 -11
- 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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +20 -22
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +16 -20
- 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 +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
- 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 +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +10 -10
- 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 +10 -10
- 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_1IndirectSVFGEdge-members.html +31 -34
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +12 -100
- 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_1IntraIndSVFGEdge-members.html +17 -19
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +11 -15
- 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 +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +10 -11
- 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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +25 -26
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
- 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_1MergeFunctionRets-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +99 -99
- 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_1PTACallGraphEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +19 -21
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +17 -21
- 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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +62 -62
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +74 -74
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +99 -107
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
- 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 +84 -84
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +231 -247
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +17 -19
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +12 -16
- 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_1VFGEdge.html +1 -1
- 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 +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
- package/SVF-doxygen/html/html/cuddInt_8c.html +4 -2
- package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -1
- package/SVF-doxygen/html/html/cuddInt_8h.html +4 -2
- package/SVF-doxygen/html/html/functions_a.html +5 -8
- package/SVF-doxygen/html/html/functions_c.html +9 -5
- package/SVF-doxygen/html/html/functions_f.html +6 -4
- package/SVF-doxygen/html/html/functions_func.html +10 -13
- package/SVF-doxygen/html/html/functions_func_g.html +11 -12
- 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_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_g.html +11 -12
- 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/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +1 -4
- package/SVF-doxygen/html/html/functions_n.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +14 -14
- package/SVF-doxygen/html/html/functions_p.html +11 -11
- package/SVF-doxygen/html/html/functions_r.html +7 -5
- package/SVF-doxygen/html/html/functions_s.html +7 -7
- package/SVF-doxygen/html/html/functions_t.html +6 -4
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_m.html +0 -3
- package/SVF-doxygen/html/html/globals_c.html +103 -100
- package/SVF-doxygen/html/html/globals_s.html +6 -10
- package/SVF-doxygen/html/html/globals_type.html +3 -0
- package/SVF-doxygen/html/html/namespaceSVF.html +31 -67
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +105 -63
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +27 -27
- package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -6
- package/SVF-doxygen/html/html/search/all_1.js +0 -1
- package/SVF-doxygen/html/html/search/all_10.js +8 -8
- package/SVF-doxygen/html/html/search/all_12.js +3 -3
- package/SVF-doxygen/html/html/search/all_13.js +10 -11
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +4 -4
- 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/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +0 -1
- package/SVF-doxygen/html/html/search/all_e.js +6 -6
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/functions_0.js +0 -1
- package/SVF-doxygen/html/html/search/functions_10.js +3 -3
- package/SVF-doxygen/html/html/search/functions_6.js +4 -4
- 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/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +0 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_d.js +0 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- 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_01SVFG_01_5_01_4.html +2 -2
- 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/DDA/DDAPass.h +1 -1
- package/include/Graphs/SVFGEdge.h +0 -12
- package/include/MTA/LockResultValidator.h +1 -1
- package/include/MTA/MHP.h +1 -0
- package/include/MTA/MTA.h +1 -1
- package/include/MTA/MTAAnnotator.h +1 -1
- package/include/MTA/MTAResultValidator.h +1 -1
- package/include/MemoryModel/SVFVariables.h +1 -8
- package/include/MemoryModel/SymbolTableInfo.h +2 -22
- package/include/SVF-FE/BasicTypes.h +1 -0
- package/include/SVF-FE/BreakConstantExpr.h +2 -2
- package/include/Util/BasicTypes.h +1 -3
- package/include/Util/SVFBasicTypes.h +1 -1
- package/include/Util/SVFUtil.h +16 -1
- package/include/WPA/WPAPass.h +1 -1
- package/lib/MTA/LockResultValidator.cpp +2 -2
- package/lib/MTA/MTAResultValidator.cpp +2 -2
- package/lib/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/SVF-FE/DCHG.cpp +8 -8
- package/lib/Util/ExeState.cpp +1 -0
- package/lib/Util/PTAStat.cpp +11 -3
- package/lib/Util/SVFUtil.cpp +3 -3
- package/lib/Util/ThreadAPI.cpp +12 -4
- package/package.json +1 -1
|
@@ -259,7 +259,7 @@ Private Member Functions</h2></td></tr>
|
|
|
259
259
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
260
260
|
<div class="textblock"><p>This class serves as a base may-happen in parallel analysis for multithreaded program Given a statement under an abstract thread, it tells which abstract threads may be alive at the same time (May-happen-in-parallel). </p>
|
|
261
261
|
|
|
262
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
262
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00024">24</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
263
263
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
264
264
|
<a id="a28031502c4f8f0d4012c0827c57efb32"></a>
|
|
265
265
|
<h2 class="memtitle"><span class="permalink"><a href="#a28031502c4f8f0d4012c0827c57efb32">◆ </a></span>CxtThreadStmtSet</h2>
|
|
@@ -273,7 +273,7 @@ Private Member Functions</h2></td></tr>
|
|
|
273
273
|
</table>
|
|
274
274
|
</div><div class="memdoc">
|
|
275
275
|
|
|
276
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
276
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00032">32</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
277
277
|
|
|
278
278
|
</div>
|
|
279
279
|
</div>
|
|
@@ -289,7 +289,7 @@ Private Member Functions</h2></td></tr>
|
|
|
289
289
|
</table>
|
|
290
290
|
</div><div class="memdoc">
|
|
291
291
|
|
|
292
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
292
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00031">31</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
293
293
|
|
|
294
294
|
</div>
|
|
295
295
|
</div>
|
|
@@ -305,7 +305,7 @@ Private Member Functions</h2></td></tr>
|
|
|
305
305
|
</table>
|
|
306
306
|
</div><div class="memdoc">
|
|
307
307
|
|
|
308
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
308
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00038">38</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
309
309
|
|
|
310
310
|
</div>
|
|
311
311
|
</div>
|
|
@@ -321,7 +321,7 @@ Private Member Functions</h2></td></tr>
|
|
|
321
321
|
</table>
|
|
322
322
|
</div><div class="memdoc">
|
|
323
323
|
|
|
324
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
324
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00039">39</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
325
325
|
|
|
326
326
|
</div>
|
|
327
327
|
</div>
|
|
@@ -337,7 +337,7 @@ Private Member Functions</h2></td></tr>
|
|
|
337
337
|
</table>
|
|
338
338
|
</div><div class="memdoc">
|
|
339
339
|
|
|
340
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
340
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00028">28</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
341
341
|
|
|
342
342
|
</div>
|
|
343
343
|
</div>
|
|
@@ -353,7 +353,7 @@ Private Member Functions</h2></td></tr>
|
|
|
353
353
|
</table>
|
|
354
354
|
</div><div class="memdoc">
|
|
355
355
|
|
|
356
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
356
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00029">29</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
357
357
|
|
|
358
358
|
</div>
|
|
359
359
|
</div>
|
|
@@ -369,7 +369,7 @@ Private Member Functions</h2></td></tr>
|
|
|
369
369
|
</table>
|
|
370
370
|
</div><div class="memdoc">
|
|
371
371
|
|
|
372
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
372
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00034">34</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
373
373
|
|
|
374
374
|
</div>
|
|
375
375
|
</div>
|
|
@@ -385,7 +385,7 @@ Private Member Functions</h2></td></tr>
|
|
|
385
385
|
</table>
|
|
386
386
|
</div><div class="memdoc">
|
|
387
387
|
|
|
388
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
388
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00030">30</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
389
389
|
|
|
390
390
|
</div>
|
|
391
391
|
</div>
|
|
@@ -401,7 +401,7 @@ Private Member Functions</h2></td></tr>
|
|
|
401
401
|
</table>
|
|
402
402
|
</div><div class="memdoc">
|
|
403
403
|
|
|
404
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
404
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00036">36</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
405
405
|
|
|
406
406
|
</div>
|
|
407
407
|
</div>
|
|
@@ -417,7 +417,7 @@ Private Member Functions</h2></td></tr>
|
|
|
417
417
|
</table>
|
|
418
418
|
</div><div class="memdoc">
|
|
419
419
|
|
|
420
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
420
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00033">33</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
421
421
|
|
|
422
422
|
</div>
|
|
423
423
|
</div>
|
|
@@ -442,16 +442,16 @@ Private Member Functions</h2></td></tr>
|
|
|
442
442
|
<p>Constructor </p>
|
|
443
443
|
|
|
444
444
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00044">44</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
445
|
-
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  :<a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>(t-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()),<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>(t),<a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>(0),<a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>(0),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a>(0),<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a>(0)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">analyzeForkJoinPair</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
446
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
447
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
445
|
+
<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  :<a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>(t-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()),<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>(t),<a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>(0),<a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>(0),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a>(0),<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a>(0)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">analyzeForkJoinPair</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
446
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00264">MHP.h:264</a></div></div>
|
|
447
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00263">MHP.h:263</a></div></div>
|
|
448
448
|
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a16061e7c28e7a9177d9ab798c102b815"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">SVF::ForkJoinAnalysis::analyzeForkJoinPair</a></div><div class="ttdeci">void analyzeForkJoinPair()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00728">MHP.cpp:728</a></div></div>
|
|
449
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
450
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
449
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00262">MHP.h:262</a></div></div>
|
|
450
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00261">MHP.h:261</a></div></div>
|
|
451
451
|
<div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00167">TCT.h:167</a></div></div>
|
|
452
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
453
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
454
|
-
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html">SVF::ForkJoinAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
452
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
453
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
454
|
+
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html">SVF::ForkJoinAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00272">MHP.h:272</a></div></div>
|
|
455
455
|
</div><!-- fragment -->
|
|
456
456
|
</div>
|
|
457
457
|
</div>
|
|
@@ -482,7 +482,7 @@ Private Member Functions</h2></td></tr>
|
|
|
482
482
|
<p>Destructor </p>
|
|
483
483
|
|
|
484
484
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00054">54</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
485
|
-
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
485
|
+
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
486
486
|
</div><!-- fragment -->
|
|
487
487
|
</div>
|
|
488
488
|
</div>
|
|
@@ -523,10 +523,10 @@ Private Member Functions</h2></td></tr>
|
|
|
523
523
|
|
|
524
524
|
<p>Add/Remove interleaving thread for statement inst. </p>
|
|
525
525
|
|
|
526
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
527
|
-
<div class="fragment"><div class="line"><a name="
|
|
528
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
529
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
526
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00153">153</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
527
|
+
<div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr].test_and_set(tid))</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>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[tgr.getStmt()].insert(tgr);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</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="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00221">MHP.h:221</a></div></div>
|
|
528
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
529
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00256">MHP.h:256</a></div></div>
|
|
530
530
|
</div><!-- fragment -->
|
|
531
531
|
</div>
|
|
532
532
|
</div>
|
|
@@ -564,10 +564,10 @@ Private Member Functions</h2></td></tr>
|
|
|
564
564
|
</table>
|
|
565
565
|
</div><div class="memdoc">
|
|
566
566
|
|
|
567
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
568
|
-
<div class="fragment"><div class="line"><a name="
|
|
569
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
570
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
567
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00161">161</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
568
|
+
<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[src];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(changed)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[tgr.getStmt()].insert(tgr);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00221">MHP.h:221</a></div></div>
|
|
569
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
570
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00256">MHP.h:256</a></div></div>
|
|
571
571
|
</div><!-- fragment -->
|
|
572
572
|
</div>
|
|
573
573
|
</div>
|
|
@@ -592,7 +592,7 @@ Private Member Functions</h2></td></tr>
|
|
|
592
592
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00062">62</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
593
593
|
<div class="fragment"><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"MHP interleaving analysis\n"</span>));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</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>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">"MHP interleaving analysis\n"</span>));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> interleavingStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">analyzeInterleaving</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> interleavingEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a> += (interleavingEnd - interleavingStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><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>
|
|
594
594
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
|
|
595
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
595
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00263">MHP.h:263</a></div></div>
|
|
596
596
|
<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>
|
|
597
597
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
598
598
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00159">SVFBasicTypes.h:159</a></div></div>
|
|
@@ -650,20 +650,20 @@ Private Member Functions</h2></td></tr>
|
|
|
650
650
|
<div class="ttc" id="classSVF_1_1MHP_html_a6990ff8e3efe5af365c8205b7ced38ed"><div class="ttname"><a href="classSVF_1_1MHP.html#a6990ff8e3efe5af365c8205b7ced38ed">SVF::MHP::validateResults</a></div><div class="ttdeci">void validateResults()</div><div class="ttdoc">Use RCResultValidator to validate mhp results. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00638">MHP.cpp:638</a></div></div>
|
|
651
651
|
<div class="ttc" id="classSVF_1_1MHP_html_a76ac9d388529f090ab6dad5829dd0753"><div class="ttname"><a href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">SVF::MHP::handleRet</a></div><div class="ttdeci">void handleRet(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00314">MHP.cpp:314</a></div></div>
|
|
652
652
|
<div class="ttc" id="classSVF_1_1MHP_html_a22f7dc5043fed97f1b4b273b8b710415"><div class="ttname"><a href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">SVF::MHP::printInterleaving</a></div><div class="ttdeci">void printInterleaving()</div><div class="ttdoc">Print interleaving results. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00653">MHP.cpp:653</a></div></div>
|
|
653
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
654
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a71183ff98500d1ce49170bab61fe664e"><div class="ttname"><a href="classSVF_1_1MHP.html#a71183ff98500d1ce49170bab61fe664e">SVF::MHP::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet & getCallee(const Instruction *inst, PTACallGraph::FunctionSet &callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
653
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00254">MHP.h:254</a></div></div>
|
|
654
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a71183ff98500d1ce49170bab61fe664e"><div class="ttname"><a href="classSVF_1_1MHP.html#a71183ff98500d1ce49170bab61fe664e">SVF::MHP::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet & getCallee(const Instruction *inst, PTACallGraph::FunctionSet &callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00121">MHP.h:121</a></div></div>
|
|
655
655
|
<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>
|
|
656
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a653460ed316804bea377eecdde412d36"><div class="ttname"><a href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">SVF::MHP::getInterleavingThreads</a></div><div class="ttdeci">const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)</div><div class="ttdoc">Get interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
656
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a653460ed316804bea377eecdde412d36"><div class="ttname"><a href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">SVF::MHP::getInterleavingThreads</a></div><div class="ttdeci">const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)</div><div class="ttdoc">Get interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00092">MHP.h:92</a></div></div>
|
|
657
657
|
<div class="ttc" id="classSVF_1_1MHP_html_a8a95f8ae419b66310ce6f572caea2ca5"><div class="ttname"><a href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">SVF::MHP::handleFork</a></div><div class="ttdeci">void handleFork(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00205">MHP.cpp:205</a></div></div>
|
|
658
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
659
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ad8d3aa1a12fb1e8668eb4138fbe23b7d"><div class="ttname"><a href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">SVF::MHP::popFromCTSWorkList</a></div><div class="ttdeci">CxtThreadStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
658
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
659
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ad8d3aa1a12fb1e8668eb4138fbe23b7d"><div class="ttname"><a href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">SVF::MHP::popFromCTSWorkList</a></div><div class="ttdeci">CxtThreadStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00225">MHP.h:225</a></div></div>
|
|
660
660
|
<div class="ttc" id="classSVF_1_1MHP_html_a3a535274cd3349a05eeccf3c9231396a"><div class="ttname"><a href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">SVF::MHP::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00235">MHP.cpp:235</a></div></div>
|
|
661
661
|
<div class="ttc" id="classSVF_1_1MHP_html_ae9423c868ba4d26337428b96db9fc77b"><div class="ttname"><a href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">SVF::MHP::updateAncestorThreads</a></div><div class="ttdeci">void updateAncestorThreads(NodeID tid)</div><div class="ttdoc">Update Ancestor and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00375">MHP.cpp:375</a></div></div>
|
|
662
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aeabf2e9ec8b1ec874503c83cc65e1205"><div class="ttname"><a href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
663
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
662
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aeabf2e9ec8b1ec874503c83cc65e1205"><div class="ttname"><a href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00232">MHP.h:232</a></div></div>
|
|
663
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
664
664
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
665
665
|
<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>
|
|
666
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
666
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00237">MHP.h:237</a></div></div>
|
|
667
667
|
<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>
|
|
668
668
|
</div><!-- fragment -->
|
|
669
669
|
</div>
|
|
@@ -703,12 +703,12 @@ Private Member Functions</h2></td></tr>
|
|
|
703
703
|
</div><div class="memdoc">
|
|
704
704
|
|
|
705
705
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00616">616</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
706
|
-
<div class="fragment"><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts1 = *it1;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts2 = *it2;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a041392f704690e89d8acf5ec68d8682c"><div class="ttname"><a href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">SVF::MHP::isMultiForkedThread</a></div><div class="ttdeci">bool isMultiForkedThread(NodeID curTid)</div><div class="ttdoc">A thread is a multiForked thread if it is in a loop or recursion. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
706
|
+
<div class="fragment"><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts1 = *it1;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts2 = *it2;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a041392f704690e89d8acf5ec68d8682c"><div class="ttname"><a href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">SVF::MHP::isMultiForkedThread</a></div><div class="ttdeci">bool isMultiForkedThread(NodeID curTid)</div><div class="ttdoc">A thread is a multiForked thread if it is in a loop or recursion. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00198">MHP.h:198</a></div></div>
|
|
707
707
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
708
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
709
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
708
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00110">MHP.h:110</a></div></div>
|
|
709
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00032">MHP.h:32</a></div></div>
|
|
710
710
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
711
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
711
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00104">MHP.h:104</a></div></div>
|
|
712
712
|
</div><!-- fragment -->
|
|
713
713
|
</div>
|
|
714
714
|
</div>
|
|
@@ -746,9 +746,9 @@ Private Member Functions</h2></td></tr>
|
|
|
746
746
|
</table>
|
|
747
747
|
</div><div class="memdoc">
|
|
748
748
|
|
|
749
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
750
|
-
<div class="fragment"><div class="line"><a name="
|
|
751
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
749
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00121">121</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
750
|
+
<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">getCBN</a>(inst), callees);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> callees;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
751
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00066">MHP.h:66</a></div></div>
|
|
752
752
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a317e09edb29b110cf4273009551d31ec"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallICFGNode *cs, FunctionSet &callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
|
|
753
753
|
</div><!-- fragment -->
|
|
754
754
|
</div>
|
|
@@ -777,9 +777,9 @@ Private Member Functions</h2></td></tr>
|
|
|
777
777
|
</table>
|
|
778
778
|
</div><div class="memdoc">
|
|
779
779
|
|
|
780
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
781
|
-
<div class="fragment"><div class="line"><a name="
|
|
782
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
780
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00066">66</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
781
|
+
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><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>
|
|
782
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
783
783
|
</div><!-- fragment -->
|
|
784
784
|
</div>
|
|
785
785
|
</div>
|
|
@@ -823,7 +823,7 @@ Private Member Functions</h2></td></tr>
|
|
|
823
823
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00484">484</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
824
824
|
<div class="fragment"><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>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">getDirAndIndJoinedTid</a>(cs);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a34ec31a6859cd94b525bfa26e549d8c1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">SVF::ForkJoinAnalysis::getDirAndIndJoinedTid</a></div><div class="ttdeci">NodeBS getDirAndIndJoinedTid(const CxtStmt &cs)</div><div class="ttdoc">Get directly and indirectly joined threadIDs based on a context-sensitive join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00968">MHP.cpp:968</a></div></div>
|
|
825
825
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
826
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
826
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
827
827
|
</div><!-- fragment -->
|
|
828
828
|
</div>
|
|
829
829
|
</div>
|
|
@@ -853,8 +853,8 @@ Private Member Functions</h2></td></tr>
|
|
|
853
853
|
|
|
854
854
|
<p>Get interleaving thread for statement inst. </p>
|
|
855
855
|
|
|
856
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
857
|
-
<div class="fragment"><div class="line"><a name="
|
|
856
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00092">92</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
857
|
+
<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
858
858
|
</div><!-- fragment -->
|
|
859
859
|
</div>
|
|
860
860
|
</div>
|
|
@@ -894,9 +894,9 @@ Private Member Functions</h2></td></tr>
|
|
|
894
894
|
|
|
895
895
|
<p>Get the next instructions following control flow. </p>
|
|
896
896
|
|
|
897
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
898
|
-
<div class="fragment"><div class="line"><a name="
|
|
899
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
897
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00204">204</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
898
|
+
<div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">getNextInsts</a>(inst,instVec);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_a97c3081d0648a8d483b07f23bbd1b6bf"><div class="ttname"><a href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">SVF::TCT::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00448">TCT.cpp:448</a></div></div>
|
|
899
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
900
900
|
</div><!-- fragment -->
|
|
901
901
|
</div>
|
|
902
902
|
</div>
|
|
@@ -925,8 +925,8 @@ Private Member Functions</h2></td></tr>
|
|
|
925
925
|
|
|
926
926
|
<p>Get Thread Creation Tree. </p>
|
|
927
927
|
|
|
928
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
929
|
-
<div class="fragment"><div class="line"><a name="
|
|
928
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00060">60</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
929
|
+
<div class="fragment"><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
930
930
|
</div><!-- fragment -->
|
|
931
931
|
</div>
|
|
932
932
|
</div>
|
|
@@ -955,8 +955,8 @@ Private Member Functions</h2></td></tr>
|
|
|
955
955
|
|
|
956
956
|
<p>Get <a class="el" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>. </p>
|
|
957
957
|
|
|
958
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
959
|
-
<div class="fragment"><div class="line"><a name="
|
|
958
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00054">54</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
959
|
+
<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
960
960
|
</div><!-- fragment -->
|
|
961
961
|
</div>
|
|
962
962
|
</div>
|
|
@@ -986,9 +986,9 @@ Private Member Functions</h2></td></tr>
|
|
|
986
986
|
|
|
987
987
|
<p>Get/has ThreadStmt. </p>
|
|
988
988
|
|
|
989
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
990
|
-
<div class="fragment"><div class="line"><a name="
|
|
991
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
989
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00104">104</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
990
|
+
<div class="fragment"><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  InstToThreadStmtSetMap::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.find(inst);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.end() && <span class="stringliteral">"no thread access the instruction?"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
991
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00256">MHP.h:256</a></div></div>
|
|
992
992
|
</div><!-- fragment -->
|
|
993
993
|
</div>
|
|
994
994
|
</div>
|
|
@@ -1030,26 +1030,26 @@ Private Member Functions</h2></td></tr>
|
|
|
1030
1030
|
<p>Handle call instruction in the current thread scope (excluding any fork site) </p>
|
|
1031
1031
|
|
|
1032
1032
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00287">287</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1033
|
-
<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">getCBN</a>(call);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">getCallEdgeBegin</a>(cbn),</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">getCallEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,&(callee->getEntryBlock().front()));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1034
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1035
|
-
<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#
|
|
1036
|
-
<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#
|
|
1033
|
+
<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">getCBN</a>(call);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">getCallEdgeBegin</a>(cbn),</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">getCallEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* callee = svfcallee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,&(callee->getEntryBlock().front()));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1034
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00066">MHP.h:66</a></div></div>
|
|
1035
|
+
<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>
|
|
1036
|
+
<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>
|
|
1037
1037
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1038
1038
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1039
1039
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1040
1040
|
<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>
|
|
1041
1041
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a170a33ac22673dfd363c3e3b96987737"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">SVF::PTACallGraph::getCallEdgeEnd</a></div><div class="ttdeci">CallGraphEdgeSet::const_iterator getCallEdgeEnd(const CallICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00408">PTACallGraph.h:408</a></div></div>
|
|
1042
1042
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
1043
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1043
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
1044
1044
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1045
|
-
<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#
|
|
1045
|
+
<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>
|
|
1046
1046
|
<div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00167">TCT.h:167</a></div></div>
|
|
1047
1047
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a4ed2fd37007de9c873d5e197a0b3bd4e"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">SVF::PTACallGraph::getCallEdgeBegin</a></div><div class="ttdeci">CallGraphEdgeSet::const_iterator getCallEdgeBegin(const CallICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00401">PTACallGraph.h:401</a></div></div>
|
|
1048
1048
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_af8df9ca6d906453fa3f7168aa84fd087"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">SVF::PTACallGraph::hasCallGraphEdge</a></div><div class="ttdeci">bool hasCallGraphEdge(const CallICFGNode *inst) const</div><div class="ttdoc">Get call graph edge via call instruction. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00397">PTACallGraph.h:397</a></div></div>
|
|
1049
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1049
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1050
1050
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1051
1051
|
<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>
|
|
1052
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a67e2d43f0e35cc46eb7680ec66a4fe44"><div class="ttname"><a href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">SVF::MHP::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="MHP_8h_source.html#
|
|
1052
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a67e2d43f0e35cc46eb7680ec66a4fe44"><div class="ttname"><a href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">SVF::MHP::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="MHP_8h_source.html#l00209">MHP.h:209</a></div></div>
|
|
1053
1053
|
</div><!-- fragment -->
|
|
1054
1054
|
</div>
|
|
1055
1055
|
</div>
|
|
@@ -1091,14 +1091,14 @@ Private Member Functions</h2></td></tr>
|
|
|
1091
1091
|
<p>Handle fork </p>
|
|
1092
1092
|
|
|
1093
1093
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00205">205</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1094
|
-
<div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">isTDFork</a>(call));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">getCBN</a>(call);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</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> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(cbn),</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfroutine = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = svfroutine-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">pushCxt</a>(newCxt,call,routine);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt = &(routine->getEntryBlock().front());</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newcts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),ct.getContext(),stmt);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newcts,cts);</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>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1095
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1094
|
+
<div class="fragment"><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* call = SVFUtil::cast<CallInst>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>());</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">isTDFork</a>(call));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">getCBN</a>(call);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</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> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(cbn),</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfroutine = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = svfroutine-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">pushCxt</a>(newCxt,call,routine);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* stmt = &(routine->getEntryBlock().front());</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newcts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),ct.getContext(),stmt);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newcts,cts);</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>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1095
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00066">MHP.h:66</a></div></div>
|
|
1096
1096
|
<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>
|
|
1097
1097
|
<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>
|
|
1098
1098
|
<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>
|
|
1099
|
-
<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#
|
|
1099
|
+
<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>
|
|
1100
1100
|
<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>
|
|
1101
|
-
<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#
|
|
1101
|
+
<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>
|
|
1102
1102
|
<div class="ttc" id="classSVF_1_1MHP_html_af4d6f0884ce18ea5caf0dfd9799d1aae"><div class="ttname"><a href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">SVF::MHP::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00359">MHP.cpp:359</a></div></div>
|
|
1103
1103
|
<div class="ttc" id="classSVF_1_1TCT_html_a7b4ad0b052e1f8b6869733eef15f4e4d"><div class="ttname"><a href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">SVF::TCT::getTCTNode</a></div><div class="ttdeci">TCTNode * getTCTNode(NodeID id) const</div><div class="ttdoc">Get TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
1104
1104
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
@@ -1106,16 +1106,16 @@ Private Member Functions</h2></td></tr>
|
|
|
1106
1106
|
<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>
|
|
1107
1107
|
<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>
|
|
1108
1108
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
1109
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1109
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
1110
1110
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1111
|
-
<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#
|
|
1111
|
+
<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>
|
|
1112
1112
|
<div class="ttc" id="classSVF_1_1TCT_html_a1602d02773578bca73dcbd29b95c67d0"><div class="ttname"><a href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">SVF::TCT::getThreadCallGraph</a></div><div class="ttdeci">ThreadCallGraph * getThreadCallGraph() const</div><div class="ttdoc">Get TCG. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00167">TCT.h:167</a></div></div>
|
|
1113
1113
|
<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>
|
|
1114
1114
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_af8df9ca6d906453fa3f7168aa84fd087"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">SVF::PTACallGraph::hasCallGraphEdge</a></div><div class="ttdeci">bool hasCallGraphEdge(const CallICFGNode *inst) const</div><div class="ttdoc">Get call graph edge via call instruction. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00397">PTACallGraph.h:397</a></div></div>
|
|
1115
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aeabf2e9ec8b1ec874503c83cc65e1205"><div class="ttname"><a href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1116
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1115
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aeabf2e9ec8b1ec874503c83cc65e1205"><div class="ttname"><a href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00232">MHP.h:232</a></div></div>
|
|
1116
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1117
1117
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1118
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a67e2d43f0e35cc46eb7680ec66a4fe44"><div class="ttname"><a href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">SVF::MHP::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="MHP_8h_source.html#
|
|
1118
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a67e2d43f0e35cc46eb7680ec66a4fe44"><div class="ttname"><a href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">SVF::MHP::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="MHP_8h_source.html#l00209">MHP.h:209</a></div></div>
|
|
1119
1119
|
</div><!-- fragment -->
|
|
1120
1120
|
</div>
|
|
1121
1121
|
</div>
|
|
@@ -1148,11 +1148,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1148
1148
|
|
|
1149
1149
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00359">359</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1150
1150
|
<div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>(),nextInsts);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>(),*nit);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> }</div><div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1151
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a04357a2827d22e4e727d488d32eb5cb5"><div class="ttname"><a href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">SVF::MHP::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instVec)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1151
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a04357a2827d22e4e727d488d32eb5cb5"><div class="ttname"><a href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">SVF::MHP::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instVec)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00204">MHP.h:204</a></div></div>
|
|
1152
1152
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1153
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1153
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00030">MHP.h:30</a></div></div>
|
|
1154
1154
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
1155
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1155
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
1156
1156
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1157
1157
|
</div><!-- fragment -->
|
|
1158
1158
|
</div>
|
|
@@ -1200,25 +1200,25 @@ Private Member Functions</h2></td></tr>
|
|
|
1200
1200
|
<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>
|
|
1201
1201
|
<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>
|
|
1202
1202
|
<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>
|
|
1203
|
-
<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#
|
|
1203
|
+
<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>
|
|
1204
1204
|
<div class="ttc" id="classSVF_1_1MHP_html_af4d6f0884ce18ea5caf0dfd9799d1aae"><div class="ttname"><a href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">SVF::MHP::handleIntra</a></div><div class="ttdeci">void handleIntra(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle intra. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00359">MHP.cpp:359</a></div></div>
|
|
1205
1205
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1206
1206
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1207
1207
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1208
1208
|
<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>
|
|
1209
|
-
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3449439792a54c847c67b3041094db49"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">SVF::ForkJoinAnalysis::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1209
|
+
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a3449439792a54c847c67b3041094db49"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">SVF::ForkJoinAnalysis::getJoinLoop</a></div><div class="ttdeci">const Loop * getJoinLoop(const Instruction *inst)</div><div class="ttdoc">Get loop for join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00348">MHP.h:348</a></div></div>
|
|
1210
1210
|
<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>
|
|
1211
1211
|
<div class="ttc" id="classSVF_1_1MHP_html_afa0d341a2fb7b05522dc6e178eab7e8b"><div class="ttname"><a href="classSVF_1_1MHP.html#afa0d341a2fb7b05522dc6e178eab7e8b">SVF::MHP::isJoinInSymmetricLoop</a></div><div class="ttdeci">const Loop * isJoinInSymmetricLoop(const CallStrCxt &cxt, const Instruction *call) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00493">MHP.cpp:493</a></div></div>
|
|
1212
1212
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
1213
1213
|
<div class="ttc" id="classSVF_1_1MHP_html_a9b89800fe8089fd7521ef3f415f6eb12"><div class="ttname"><a href="classSVF_1_1MHP.html#a9b89800fe8089fd7521ef3f415f6eb12">SVF::MHP::getDirAndIndJoinedTid</a></div><div class="ttdeci">NodeBS getDirAndIndJoinedTid(const CallStrCxt &cxt, const Instruction *call)</div><div class="ttdoc">Return thread id(s) which are directly or indirectly joined at this join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00484">MHP.cpp:484</a></div></div>
|
|
1214
1214
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
1215
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1215
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
1216
1216
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1217
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1217
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
1218
1218
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1219
1219
|
<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>
|
|
1220
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1221
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a5546cb50ca769218a871cdda08a25d18"><div class="ttname"><a href="classSVF_1_1MHP.html#a5546cb50ca769218a871cdda08a25d18">SVF::MHP::rmInterleavingThread</a></div><div class="ttdeci">void rmInterleavingThread(const CxtThreadStmt &tgr, const NodeBS &tids, const Instruction *joinsite)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1220
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00237">MHP.h:237</a></div></div>
|
|
1221
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a5546cb50ca769218a871cdda08a25d18"><div class="ttname"><a href="classSVF_1_1MHP.html#a5546cb50ca769218a871cdda08a25d18">SVF::MHP::rmInterleavingThread</a></div><div class="ttdeci">void rmInterleavingThread(const CxtThreadStmt &tgr, const NodeBS &tids, const Instruction *joinsite)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00170">MHP.h:170</a></div></div>
|
|
1222
1222
|
</div><!-- fragment -->
|
|
1223
1223
|
</div>
|
|
1224
1224
|
</div>
|
|
@@ -1250,11 +1250,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1250
1250
|
<p>Handle call instruction in the current thread scope (excluding any fork site) </p>
|
|
1251
1251
|
|
|
1252
1252
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00184">184</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1253
|
-
<div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* curfun = curInst->getParent()->getParent();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(curInst == &(curfun->getEntryBlock().front()) && <span class="stringliteral">"curInst is not the entry of non candidate function."</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curfun));</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</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#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = node-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = (*nit)->getDstNode()->getFunction();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</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_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, &(callee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->getEntryBlock().front()));</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts, cts);</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>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1253
|
+
<div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* curfun = curInst->getParent()->getParent();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(curInst == &(curfun->getEntryBlock().front()) && <span class="stringliteral">"curInst is not the entry of non candidate function."</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* node = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(curfun));</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</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#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), neit = node-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); nit != neit; nit++)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = (*nit)->getDstNode()->getFunction();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</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_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, &(callee-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->getEntryBlock().front()));</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts, cts);</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>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1254
1254
|
<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>
|
|
1255
1255
|
<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>
|
|
1256
1256
|
<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>
|
|
1257
|
-
<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#
|
|
1257
|
+
<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>
|
|
1258
1258
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1259
1259
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1260
1260
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
@@ -1263,11 +1263,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1263
1263
|
<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>
|
|
1264
1264
|
<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>
|
|
1265
1265
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
1266
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1267
|
-
<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#
|
|
1266
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
1267
|
+
<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>
|
|
1268
1268
|
<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>
|
|
1269
1269
|
<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>
|
|
1270
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1270
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1271
1271
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1272
1272
|
<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>
|
|
1273
1273
|
</div><!-- fragment -->
|
|
@@ -1301,24 +1301,24 @@ Private Member Functions</h2></td></tr>
|
|
|
1301
1301
|
<p>Handle return instruction in the current thread scope (excluding any join site) </p>
|
|
1302
1302
|
|
|
1303
1303
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00314">314</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1304
|
-
<div class="fragment"><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>()->getParent()->getParent()));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ThreadForkEdge>(edge) || SVFUtil::isa<ThreadJoinEdge>(edge))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->directCallsBegin(),</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  ecit = (edge)->directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">matchCxt</a>(newCxt,(*cit)->getCallSite(),curFunNode-><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="l00328"></a><span class="lineno"> 328</span>  {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>((*cit)->getCallSite(),nextInsts);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</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="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</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>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->indirectCallsBegin(),</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  ecit = (edge)->indirectCallsEnd(); cit!=ecit; ++cit)</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>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">matchCxt</a>(newCxt,(*cit)->getCallSite(),curFunNode-><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="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>((*cit)->getCallSite(),nextInsts);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><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>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1304
|
+
<div class="fragment"><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>()->getParent()->getParent()));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ThreadForkEdge>(edge) || SVFUtil::isa<ThreadJoinEdge>(edge))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->directCallsBegin(),</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  ecit = (edge)->directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">matchCxt</a>(newCxt,(*cit)->getCallSite(),curFunNode-><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="l00328"></a><span class="lineno"> 328</span>  {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>((*cit)->getCallSite(),nextInsts);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</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="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</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>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->indirectCallsBegin(),</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  ecit = (edge)->indirectCallsEnd(); cit!=ecit; ++cit)</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>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">matchCxt</a>(newCxt,(*cit)->getCallSite(),curFunNode-><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="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>((*cit)->getCallSite(),nextInsts);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><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>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1305
1305
|
<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>
|
|
1306
1306
|
<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>
|
|
1307
1307
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1308
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a04357a2827d22e4e727d488d32eb5cb5"><div class="ttname"><a href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">SVF::MHP::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instVec)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1308
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a04357a2827d22e4e727d488d32eb5cb5"><div class="ttname"><a href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">SVF::MHP::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instVec)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00204">MHP.h:204</a></div></div>
|
|
1309
1309
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a5e8c4b10eb5c3240d2e21a020ed834a6"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">SVF::CxtStmt::getStmt</a></div><div class="ttdeci">const Instruction * getStmt() const</div><div class="ttdoc">Return current statement. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00062">CxtStmt.h:62</a></div></div>
|
|
1310
1310
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
1311
1311
|
<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>
|
|
1312
1312
|
<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>
|
|
1313
1313
|
<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>
|
|
1314
1314
|
<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>
|
|
1315
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1315
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00030">MHP.h:30</a></div></div>
|
|
1316
1316
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
1317
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1318
|
-
<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#
|
|
1319
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afee99dd3ca2ff68789864423fc9358e0"><div class="ttname"><a href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">SVF::MHP::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1317
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
1318
|
+
<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>
|
|
1319
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afee99dd3ca2ff68789864423fc9358e0"><div class="ttname"><a href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">SVF::MHP::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00214">MHP.h:214</a></div></div>
|
|
1320
1320
|
<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>
|
|
1321
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1321
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1322
1322
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1323
1323
|
</div><!-- fragment -->
|
|
1324
1324
|
</div>
|
|
@@ -1347,8 +1347,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1347
1347
|
</table>
|
|
1348
1348
|
</div><div class="memdoc">
|
|
1349
1349
|
|
|
1350
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1351
|
-
<div class="fragment"><div class="line"><a name="
|
|
1350
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00096">96</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1351
|
+
<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.find(cts)!=<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.end();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
1352
1352
|
</div><!-- fragment -->
|
|
1353
1353
|
</div>
|
|
1354
1354
|
</div>
|
|
@@ -1376,8 +1376,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1376
1376
|
</table>
|
|
1377
1377
|
</div><div class="memdoc">
|
|
1378
1378
|
|
|
1379
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1380
|
-
<div class="fragment"><div class="line"><a name="
|
|
1379
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00110">110</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1380
|
+
<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.find(inst)!=<a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.end();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00256">MHP.h:256</a></div></div>
|
|
1381
1381
|
</div><!-- fragment -->
|
|
1382
1382
|
</div>
|
|
1383
1383
|
</div>
|
|
@@ -1400,7 +1400,7 @@ Private Member Functions</h2></td></tr>
|
|
|
1400
1400
|
<p>Whether the function is connected from main function in thread call graph. </p>
|
|
1401
1401
|
|
|
1402
1402
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00509">509</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1403
|
-
<div class="fragment"><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const PTACallGraphNode*></a> worklist;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">TCT::PTACGNodeSet</a> visited;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  visited.insert(cgnode);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span>(<span class="stringliteral">"main"</span> == node-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>())</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</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="l00522"></a><span class="lineno"> 522</span>  {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</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="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">if</span> (visited.find(srcNode) == visited.end())</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  visited.insert(srcNode);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1403
|
+
<div class="fragment"><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* cgnode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(fun));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const PTACallGraphNode*></a> worklist;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">TCT::PTACGNodeSet</a> visited;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  visited.insert(cgnode);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">if</span>(<span class="stringliteral">"main"</span> == node-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>())</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</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="l00522"></a><span class="lineno"> 522</span>  {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</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="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">if</span> (visited.find(srcNode) == visited.end())</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  visited.insert(srcNode);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1404
1404
|
<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>
|
|
1405
1405
|
<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>
|
|
1406
1406
|
<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>
|
|
@@ -1413,7 +1413,7 @@ Private Member Functions</h2></td></tr>
|
|
|
1413
1413
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00252">SVFBasicTypes.h:252</a></div></div>
|
|
1414
1414
|
<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>
|
|
1415
1415
|
<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>
|
|
1416
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1416
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1417
1417
|
<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>
|
|
1418
1418
|
</div><!-- fragment -->
|
|
1419
1419
|
</div>
|
|
@@ -1456,8 +1456,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1456
1456
|
<p>Whether two thread t1 happens-fore t2 </p>
|
|
1457
1457
|
|
|
1458
1458
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00502">502</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1459
|
-
<div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">isHBPair</a>(tid1,tid2);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1460
|
-
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a86c68ce5fd8825b1593d92a5a5bad389"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">SVF::ForkJoinAnalysis::isHBPair</a></div><div class="ttdeci">bool isHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether thread t1 happens-before thread t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1459
|
+
<div class="fragment"><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">isHBPair</a>(tid1,tid2);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
1460
|
+
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a86c68ce5fd8825b1593d92a5a5bad389"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">SVF::ForkJoinAnalysis::isHBPair</a></div><div class="ttdeci">bool isHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether thread t1 happens-before thread t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00320">MHP.h:320</a></div></div>
|
|
1461
1461
|
</div><!-- fragment -->
|
|
1462
1462
|
</div>
|
|
1463
1463
|
</div>
|
|
@@ -1499,9 +1499,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1499
1499
|
<p>Whether a context-sensitive join satisfies symmetric loop pattern </p>
|
|
1500
1500
|
|
|
1501
1501
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00493">493</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1502
|
-
<div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4e058b920c3648f943f85099690ff44f">isJoinInSymmetricLoop</a>(cs);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4e058b920c3648f943f85099690ff44f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4e058b920c3648f943f85099690ff44f">SVF::ForkJoinAnalysis::isJoinInSymmetricLoop</a></div><div class="ttdeci">const Loop * isJoinInSymmetricLoop(const CxtStmt &cs) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1502
|
+
<div class="fragment"><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4e058b920c3648f943f85099690ff44f">isJoinInSymmetricLoop</a>(cs);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4e058b920c3648f943f85099690ff44f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4e058b920c3648f943f85099690ff44f">SVF::ForkJoinAnalysis::isJoinInSymmetricLoop</a></div><div class="ttdeci">const Loop * isJoinInSymmetricLoop(const CxtStmt &cs) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00312">MHP.h:312</a></div></div>
|
|
1503
1503
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
1504
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1504
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
1505
1505
|
</div><!-- fragment -->
|
|
1506
1506
|
</div>
|
|
1507
1507
|
</div>
|
|
@@ -1531,10 +1531,10 @@ Private Member Functions</h2></td></tr>
|
|
|
1531
1531
|
|
|
1532
1532
|
<p>A thread is a multiForked thread if it is in a loop or recursion. </p>
|
|
1533
1533
|
|
|
1534
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1535
|
-
<div class="fragment"><div class="line"><a name="
|
|
1534
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00198">198</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1535
|
+
<div class="fragment"><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(curTid)-><a class="code" href="classSVF_1_1TCTNode.html#a5dd0cf88e381438d191b275314117561">isMultiforked</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="ttc" id="classSVF_1_1TCTNode_html_a5dd0cf88e381438d191b275314117561"><div class="ttname"><a href="classSVF_1_1TCTNode.html#a5dd0cf88e381438d191b275314117561">SVF::TCTNode::isMultiforked</a></div><div class="ttdeci">bool isMultiforked() const</div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00101">TCT.h:101</a></div></div>
|
|
1536
1536
|
<div class="ttc" id="classSVF_1_1TCT_html_a7b4ad0b052e1f8b6869733eef15f4e4d"><div class="ttname"><a href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">SVF::TCT::getTCTNode</a></div><div class="ttdeci">TCTNode * getTCTNode(NodeID id) const</div><div class="ttdoc">Get TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
1537
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1537
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1538
1538
|
</div><!-- fragment -->
|
|
1539
1539
|
</div>
|
|
1540
1540
|
</div>
|
|
@@ -1576,11 +1576,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1576
1576
|
<p>A join site must join t if (1) t is not a multiforked thread (2) the join site of t is not in recursion </p>
|
|
1577
1577
|
|
|
1578
1578
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00475">475</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1579
|
-
<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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">isTDJoin</a>(joinsite) && <span class="stringliteral">"not a join site!"</span>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">return</span> !<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(curTid) && !<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a4ff016e5933a4d094989c600ad25dd99">isJoinSiteInRecursion</a>(joinsite);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a041392f704690e89d8acf5ec68d8682c"><div class="ttname"><a href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">SVF::MHP::isMultiForkedThread</a></div><div class="ttdeci">bool isMultiForkedThread(NodeID curTid)</div><div class="ttdoc">A thread is a multiForked thread if it is in a loop or recursion. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1579
|
+
<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>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">isTDJoin</a>(joinsite) && <span class="stringliteral">"not a join site!"</span>);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">return</span> !<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(curTid) && !<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a4ff016e5933a4d094989c600ad25dd99">isJoinSiteInRecursion</a>(joinsite);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a041392f704690e89d8acf5ec68d8682c"><div class="ttname"><a href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">SVF::MHP::isMultiForkedThread</a></div><div class="ttdeci">bool isMultiForkedThread(NodeID curTid)</div><div class="ttdoc">A thread is a multiForked thread if it is in a loop or recursion. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00198">MHP.h:198</a></div></div>
|
|
1580
1580
|
<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>
|
|
1581
1581
|
<div class="ttc" id="classSVF_1_1TCT_html_a4ff016e5933a4d094989c600ad25dd99"><div class="ttname"><a href="classSVF_1_1TCT.html#a4ff016e5933a4d094989c600ad25dd99">SVF::TCT::isJoinSiteInRecursion</a></div><div class="ttdeci">bool isJoinSiteInRecursion(const Instruction *join) const</div><div class="ttdoc">Whether a join site is in recursion. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00382">TCT.h:382</a></div></div>
|
|
1582
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1583
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1582
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1583
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00237">MHP.h:237</a></div></div>
|
|
1584
1584
|
</div><!-- fragment -->
|
|
1585
1585
|
</div>
|
|
1586
1586
|
</div>
|
|
@@ -1628,11 +1628,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1628
1628
|
<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>
|
|
1629
1629
|
<div class="ttc" id="classSVF_1_1TCT_html_a7b4ad0b052e1f8b6869733eef15f4e4d"><div class="ttname"><a href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">SVF::TCT::getTCTNode</a></div><div class="ttdeci">TCTNode * getTCTNode(NodeID id) const</div><div class="ttdoc">Get TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
1630
1630
|
<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>
|
|
1631
|
-
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab55532eefbcef639ced957ad82fbd340"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">SVF::ForkJoinAnalysis::isFullJoin</a></div><div class="ttdeci">bool isFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether t1 fully joins t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1631
|
+
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_ab55532eefbcef639ced957ad82fbd340"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">SVF::ForkJoinAnalysis::isFullJoin</a></div><div class="ttdeci">bool isFullJoin(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether t1 fully joins t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00329">MHP.h:329</a></div></div>
|
|
1632
1632
|
<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>
|
|
1633
1633
|
<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>
|
|
1634
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1635
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1634
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00253">MHP.h:253</a></div></div>
|
|
1635
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1636
1636
|
<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>
|
|
1637
1637
|
</div><!-- fragment -->
|
|
1638
1638
|
</div>
|
|
@@ -1663,9 +1663,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1663
1663
|
|
|
1664
1664
|
<p>Whether it is a fork site. </p>
|
|
1665
1665
|
|
|
1666
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1667
|
-
<div class="fragment"><div class="line"><a name="
|
|
1668
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1666
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00232">232</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1667
|
+
<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(call);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
|
|
1668
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1669
1669
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
|
|
1670
1670
|
</div><!-- fragment -->
|
|
1671
1671
|
</div>
|
|
@@ -1696,8 +1696,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1696
1696
|
|
|
1697
1697
|
<p>Whether it is a join site. </p>
|
|
1698
1698
|
|
|
1699
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1700
|
-
<div class="fragment"><div class="line"><a name="
|
|
1699
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00237">237</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1700
|
+
<div class="fragment"><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(call);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a4b73d112880ad940e078e801f8725799"><div class="ttname"><a href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">SVF::MHP::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdoc">TCG. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00251">MHP.h:251</a></div></div>
|
|
1701
1701
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
|
|
1702
1702
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html_a8cc5f9ff6039392ce1471cd830973c44"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">SVF::ThreadAPI::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *inst) const</div><div class="ttdoc">Return true if this call wait for a worker thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00223">ThreadAPI.h:223</a></div></div>
|
|
1703
1703
|
</div><!-- fragment -->
|
|
@@ -1745,9 +1745,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1745
1745
|
|
|
1746
1746
|
<p>Match context. </p>
|
|
1747
1747
|
|
|
1748
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1749
|
-
<div class="fragment"><div class="line"><a name="
|
|
1750
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1748
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00214">214</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1749
|
+
<div class="fragment"><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">matchCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_a9b6dda84d37afadaf80bc2e26986a52e"><div class="ttname"><a href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">SVF::TCT::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00497">TCT.cpp:497</a></div></div>
|
|
1750
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1751
1751
|
</div><!-- fragment -->
|
|
1752
1752
|
</div>
|
|
1753
1753
|
</div>
|
|
@@ -1788,9 +1788,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1788
1788
|
<p>Interface to query whether two instructions may happen-in-parallel. </p>
|
|
1789
1789
|
|
|
1790
1790
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00604">604</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1791
|
-
<div class="fragment"><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>++;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>());</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordtype">bool</span> mhp=<a class="code" href="classSVF_1_1MHP.html#a9a4b6d5c57552b61a62a4dd180aef40c">mayHappenInParallelCache</a>(i1,i2);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>());</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a> += (queryEnd - queryStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1791
|
+
<div class="fragment"><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>++;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryStart = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>());</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordtype">bool</span> mhp=<a class="code" href="classSVF_1_1MHP.html#a9a4b6d5c57552b61a62a4dd180aef40c">mayHappenInParallelCache</a>(i1,i2);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryEnd = <a class="code" href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">PTAStat::getClk</a>());</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a> += (queryEnd - queryStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00264">MHP.h:264</a></div></div>
|
|
1792
1792
|
<div class="ttc" id="classSVF_1_1MHP_html_a9a4b6d5c57552b61a62a4dd180aef40c"><div class="ttname"><a href="classSVF_1_1MHP.html#a9a4b6d5c57552b61a62a4dd180aef40c">SVF::MHP::mayHappenInParallelCache</a></div><div class="ttdeci">virtual bool mayHappenInParallelCache(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00582">MHP.cpp:582</a></div></div>
|
|
1793
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1793
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00261">MHP.h:261</a></div></div>
|
|
1794
1794
|
<div class="ttc" id="SVFBasicTypes_8h_html_a1aeda3370621dc00e9a0fe8e7aabc736"><div class="ttname"><a href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a></div><div class="ttdeci">#define TIMEINTERVAL</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00181">SVFBasicTypes.h:181</a></div></div>
|
|
1795
1795
|
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
|
|
1796
1796
|
<div class="ttc" id="classSVF_1_1PTAStat_html_a3c4eaa1695ea13405911ae1621f98edc"><div class="ttname"><a href="classSVF_1_1PTAStat.html#a3c4eaa1695ea13405911ae1621f98edc">SVF::PTAStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8cpp_source.html#l00114">PTAStat.cpp:114</a></div></div>
|
|
@@ -1832,12 +1832,12 @@ Private Member Functions</h2></td></tr>
|
|
|
1832
1832
|
</div><div class="memdoc">
|
|
1833
1833
|
|
|
1834
1834
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00582">582</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1835
|
-
<div class="fragment"><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(i1->getParent()->getParent()) &&!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(i2->getParent()->getParent()))</div><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>  <a class="code" href="classSVF_1_1MHP.html#a570f93674511a93cdf2afb96df4947b6">FuncPair</a> funpair = std::make_pair(i1->getParent()->getParent(), i2->getParent()->getParent());</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  FuncPairToBool::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.find(funpair);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">if</span> (it==<a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.end())</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">bool</span> mhp = <a class="code" href="classSVF_1_1MHP.html#a2faaa02abec3b8f8fca73e178cbdcb41">mayHappenInParallelInst</a>(i1, i2);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>[funpair] = mhp;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">if</span>(it->second)</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a2faaa02abec3b8f8fca73e178cbdcb41">mayHappenInParallelInst</a>(i1,i2);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a1f057ef082484a1997cb02287e063f00"><div class="ttname"><a href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">SVF::MHP::nonCandidateFuncMHPRelMap</a></div><div class="ttdeci">FuncPairToBool nonCandidateFuncMHPRelMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1836
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1835
|
+
<div class="fragment"><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(i1->getParent()->getParent()) &&!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(i2->getParent()->getParent()))</div><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>  <a class="code" href="classSVF_1_1MHP.html#a570f93674511a93cdf2afb96df4947b6">FuncPair</a> funpair = std::make_pair(i1->getParent()->getParent(), i2->getParent()->getParent());</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  FuncPairToBool::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.find(funpair);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">if</span> (it==<a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.end())</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">bool</span> mhp = <a class="code" href="classSVF_1_1MHP.html#a2faaa02abec3b8f8fca73e178cbdcb41">mayHappenInParallelInst</a>(i1, i2);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>[funpair] = mhp;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">if</span>(it->second)</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a2faaa02abec3b8f8fca73e178cbdcb41">mayHappenInParallelInst</a>(i1,i2);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a1f057ef082484a1997cb02287e063f00"><div class="ttname"><a href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">SVF::MHP::nonCandidateFuncMHPRelMap</a></div><div class="ttdeci">FuncPairToBool nonCandidateFuncMHPRelMap</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00257">MHP.h:257</a></div></div>
|
|
1836
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00262">MHP.h:262</a></div></div>
|
|
1837
1837
|
<div class="ttc" id="classSVF_1_1MHP_html_a2faaa02abec3b8f8fca73e178cbdcb41"><div class="ttname"><a href="classSVF_1_1MHP.html#a2faaa02abec3b8f8fca73e178cbdcb41">SVF::MHP::mayHappenInParallelInst</a></div><div class="ttdeci">virtual bool mayHappenInParallelInst(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00544">MHP.cpp:544</a></div></div>
|
|
1838
1838
|
<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>
|
|
1839
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a570f93674511a93cdf2afb96df4947b6"><div class="ttname"><a href="classSVF_1_1MHP.html#a570f93674511a93cdf2afb96df4947b6">SVF::MHP::FuncPair</a></div><div class="ttdeci">std::pair< const Function *, const Function * > FuncPair</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1840
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1839
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a570f93674511a93cdf2afb96df4947b6"><div class="ttname"><a href="classSVF_1_1MHP.html#a570f93674511a93cdf2afb96df4947b6">SVF::MHP::FuncPair</a></div><div class="ttdeci">std::pair< const Function *, const Function * > FuncPair</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00038">MHP.h:38</a></div></div>
|
|
1840
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1841
1841
|
</div><!-- fragment -->
|
|
1842
1842
|
</div>
|
|
1843
1843
|
</div>
|
|
@@ -1878,15 +1878,15 @@ Private Member Functions</h2></td></tr>
|
|
|
1878
1878
|
<p>TODO: Any instruction in dead function is assumed no <a class="el" href="classSVF_1_1MHP.html">MHP</a> with others </p>
|
|
1879
1879
|
|
|
1880
1880
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00544">544</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1881
|
-
<div class="fragment"><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</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_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts1 = *it1;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> l1 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts1);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts2 = *it2;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> l2 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts2);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span>(l1.test(ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()) && l2.test(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  }</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>  }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a041392f704690e89d8acf5ec68d8682c"><div class="ttname"><a href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">SVF::MHP::isMultiForkedThread</a></div><div class="ttdeci">bool isMultiForkedThread(NodeID curTid)</div><div class="ttdoc">A thread is a multiForked thread if it is in a loop or recursion. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1881
|
+
<div class="fragment"><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</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_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts1 = *it1;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> l1 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts1);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts2 = *it2;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> l2 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts2);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span>(l1.test(ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()) && l2.test(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  {</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  }</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>  }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a041392f704690e89d8acf5ec68d8682c"><div class="ttname"><a href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">SVF::MHP::isMultiForkedThread</a></div><div class="ttdeci">bool isMultiForkedThread(NodeID curTid)</div><div class="ttdoc">A thread is a multiForked thread if it is in a loop or recursion. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00198">MHP.h:198</a></div></div>
|
|
1882
1882
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1883
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1884
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1885
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a653460ed316804bea377eecdde412d36"><div class="ttname"><a href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">SVF::MHP::getInterleavingThreads</a></div><div class="ttdeci">const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)</div><div class="ttdoc">Get interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1883
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00262">MHP.h:262</a></div></div>
|
|
1884
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00110">MHP.h:110</a></div></div>
|
|
1885
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a653460ed316804bea377eecdde412d36"><div class="ttname"><a href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">SVF::MHP::getInterleavingThreads</a></div><div class="ttdeci">const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)</div><div class="ttdoc">Get interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00092">MHP.h:92</a></div></div>
|
|
1886
1886
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
1887
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1887
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00032">MHP.h:32</a></div></div>
|
|
1888
1888
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
1889
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1889
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00104">MHP.h:104</a></div></div>
|
|
1890
1890
|
</div><!-- fragment -->
|
|
1891
1891
|
</div>
|
|
1892
1892
|
</div>
|
|
@@ -1913,8 +1913,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1913
1913
|
</table>
|
|
1914
1914
|
</div><div class="memdoc">
|
|
1915
1915
|
|
|
1916
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1917
|
-
<div class="fragment"><div class="line"><a name="
|
|
1916
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00225">225</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1917
|
+
<div class="fragment"><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  CxtThreadStmt ctp = <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00254">MHP.h:254</a></div></div>
|
|
1918
1918
|
<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>
|
|
1919
1919
|
</div><!-- fragment -->
|
|
1920
1920
|
</div>
|
|
@@ -1941,7 +1941,7 @@ Private Member Functions</h2></td></tr>
|
|
|
1941
1941
|
<div class="fragment"><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">for</span>(ThreadStmtToThreadInterleav::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.begin(), eit = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.end(); it!=eit; ++it)</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"( t"</span> << it->first.getTid() << <span class="stringliteral">" , $"</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(it->first.getStmt()) << <span class="stringliteral">"$"</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(it->first.getStmt()) << <span class="stringliteral">" ) ==> ["</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">for</span> (NodeBS::iterator ii = it->second.begin(), ie = it->second.end();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  ii != ie; ii++)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" "</span> << *ii << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
|
|
1942
1942
|
<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>
|
|
1943
1943
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
|
|
1944
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1944
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
1945
1945
|
</div><!-- fragment -->
|
|
1946
1946
|
</div>
|
|
1947
1947
|
</div>
|
|
@@ -1987,9 +1987,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1987
1987
|
|
|
1988
1988
|
<p>Push calling context. </p>
|
|
1989
1989
|
|
|
1990
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1991
|
-
<div class="fragment"><div class="line"><a name="
|
|
1992
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1990
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00209">209</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1991
|
+
<div class="fragment"><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>  <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><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>
|
|
1992
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
1993
1993
|
</div><!-- fragment -->
|
|
1994
1994
|
</div>
|
|
1995
1995
|
</div>
|
|
@@ -2019,9 +2019,9 @@ Private Member Functions</h2></td></tr>
|
|
|
2019
2019
|
|
|
2020
2020
|
<p>WorkList helper functions. </p>
|
|
2021
2021
|
|
|
2022
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2023
|
-
<div class="fragment"><div class="line"><a name="
|
|
2024
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2022
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00221">221</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2023
|
+
<div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cs);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><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>
|
|
2024
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00254">MHP.h:254</a></div></div>
|
|
2025
2025
|
</div><!-- fragment -->
|
|
2026
2026
|
</div>
|
|
2027
2027
|
</div>
|
|
@@ -2065,10 +2065,10 @@ Private Member Functions</h2></td></tr>
|
|
|
2065
2065
|
</table>
|
|
2066
2066
|
</div><div class="memdoc">
|
|
2067
2067
|
|
|
2068
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2069
|
-
<div class="fragment"><div class="line"><a name="
|
|
2068
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00170">170</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2069
|
+
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> joinedTids;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span>(NodeBS::iterator it = tids.begin(), eit = tids.end(); it!=eit; ++it)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#acd5b010c22a6590f6ea1a5cedd8f43ba">isMustJoin</a>(tgr.getTid(),joinsite))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  joinedTids.set(*it);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr].intersectWithComplement(joinedTids))</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="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00221">MHP.h:221</a></div></div>
|
|
2070
2070
|
<div class="ttc" id="classSVF_1_1MHP_html_acd5b010c22a6590f6ea1a5cedd8f43ba"><div class="ttname"><a href="classSVF_1_1MHP.html#acd5b010c22a6590f6ea1a5cedd8f43ba">SVF::MHP::isMustJoin</a></div><div class="ttdeci">bool isMustJoin(const NodeID curTid, const Instruction *joinsite)</div><div class="ttdoc">Whether a join site must join a thread t. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00475">MHP.cpp:475</a></div></div>
|
|
2071
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2071
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
2072
2072
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
2073
2073
|
</div><!-- fragment -->
|
|
2074
2074
|
</div>
|
|
@@ -2106,18 +2106,18 @@ Private Member Functions</h2></td></tr>
|
|
|
2106
2106
|
<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>
|
|
2107
2107
|
<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>
|
|
2108
2108
|
<div class="ttc" id="classSVF_1_1CxtThread_html_a066ba29a83edc1042139641ca088b038"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">SVF::CxtThread::getThread</a></div><div class="ttdeci">const CallInst * getThread() const</div><div class="ttdoc">Return forksite. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00210">CxtStmt.h:210</a></div></div>
|
|
2109
|
-
<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#
|
|
2109
|
+
<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>
|
|
2110
2110
|
<div class="ttc" id="classSVF_1_1TCT_html_a7b4ad0b052e1f8b6869733eef15f4e4d"><div class="ttname"><a href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">SVF::TCT::getTCTNode</a></div><div class="ttdeci">TCTNode * getTCTNode(NodeID id) const</div><div class="ttdoc">Get TCT node. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00177">TCT.h:177</a></div></div>
|
|
2111
2111
|
<div class="ttc" id="classSVF_1_1TCTNode_html_a21591b19f6a9267151c31178f9543ee6"><div class="ttname"><a href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">SVF::TCTNode::getCxtThread</a></div><div class="ttdeci">const CxtThread & getCxtThread() const</div><div class="ttdoc">Get CxtThread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00082">TCT.h:82</a></div></div>
|
|
2112
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a04357a2827d22e4e727d488d32eb5cb5"><div class="ttname"><a href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">SVF::MHP::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instVec)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2112
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a04357a2827d22e4e727d488d32eb5cb5"><div class="ttname"><a href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">SVF::MHP::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instVec)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00204">MHP.h:204</a></div></div>
|
|
2113
2113
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
2114
2114
|
<div class="ttc" id="classSVF_1_1TCT_html_ab4bc72ca330b315df06f2d4d2c1a7b4f"><div class="ttname"><a href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">SVF::TCT::getCxtOfCxtThread</a></div><div class="ttdeci">const CallStrCxt & getCxtOfCxtThread(const CxtThread &ct) const</div><div class="ttdoc">get the context of a thread at its spawning site (fork site) </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00331">TCT.h:331</a></div></div>
|
|
2115
2115
|
<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>
|
|
2116
2116
|
<div class="ttc" id="classSVF_1_1TCT_html_a516578af1f8666ff672e6611e61d7152"><div class="ttname"><a href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">SVF::TCT::getParentThread</a></div><div class="ttdeci">NodeID getParentThread(NodeID tid) const</div><div class="ttdoc">Get parent thread. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00282">TCT.h:282</a></div></div>
|
|
2117
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2118
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2117
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a8fecc443c4d92a36a9c50ec6a4f5dea8"><div class="ttname"><a href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">SVF::MHP::InstVec</a></div><div class="ttdeci">TCT::InstVec InstVec</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00030">MHP.h:30</a></div></div>
|
|
2118
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
2119
2119
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
2120
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2120
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
2121
2121
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
2122
2122
|
<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>
|
|
2123
2123
|
</div><!-- fragment -->
|
|
@@ -2150,26 +2150,26 @@ Private Member Functions</h2></td></tr>
|
|
|
2150
2150
|
|
|
2151
2151
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00148">148</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2152
2152
|
<div class="fragment"><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>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = module-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = module-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *entryinst = &(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->getEntryBlock().front());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(entryinst))</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(entryinst);</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>  <span class="keywordflow">for</span> (CxtThreadStmtSet::const_iterator it1 = tsSet.begin(), eit1 = tsSet.end(); it1 != eit1; ++it1)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts = *it1;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a>& curCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()), EE = inst_end(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()); II != EE; ++II)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (inst == entryinst)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(), curCxt, inst);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[newCts] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[inst].insert(newCts);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
|
|
2153
|
-
<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#
|
|
2153
|
+
<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>
|
|
2154
2154
|
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
2155
|
-
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
2155
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
2156
2156
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
2157
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2157
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00110">MHP.h:110</a></div></div>
|
|
2158
2158
|
<div class="ttc" id="namespaceSVF_html_ab700523619b089b952498f39a7f5b6b1"><div class="ttname"><a href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">SVF::CallStrCxt</a></div><div class="ttdeci">std::vector< u32_t > CallStrCxt</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00130">SVFBasicTypes.h:130</a></div></div>
|
|
2159
2159
|
<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>
|
|
2160
2160
|
<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>
|
|
2161
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2161
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00255">MHP.h:255</a></div></div>
|
|
2162
2162
|
<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>
|
|
2163
2163
|
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00008">CFLGrammar.txt:8</a></div></div>
|
|
2164
2164
|
<div class="ttc" id="classSVF_1_1CxtStmt_html_a3ce19b8f2de2e199ed4165dbe9d21f28"><div class="ttname"><a href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">SVF::CxtStmt::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#l00057">CxtStmt.h:57</a></div></div>
|
|
2165
|
-
<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#
|
|
2165
|
+
<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>
|
|
2166
2166
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
|
|
2167
2167
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a709371b13dcf500277f8bc275bdb23c7"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVF::SVFModule::iterator</a></div><div class="ttdeci">FunctionSetType::iterator iterator</div><div class="ttdoc">Iterators type def. </div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00051">SVFModule.h:51</a></div></div>
|
|
2168
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2169
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2168
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00032">MHP.h:32</a></div></div>
|
|
2169
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
2170
2170
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
2171
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2172
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2171
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00256">MHP.h:256</a></div></div>
|
|
2172
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00104">MHP.h:104</a></div></div>
|
|
2173
2173
|
<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>
|
|
2174
2174
|
</div><!-- fragment -->
|
|
2175
2175
|
</div>
|
|
@@ -2216,9 +2216,9 @@ Private Member Functions</h2></td></tr>
|
|
|
2216
2216
|
<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>
|
|
2217
2217
|
<div class="ttc" id="classSVF_1_1TCT_html_a60e63f6ddfe78c4cf4fd3a70875b727f"><div class="ttname"><a href="classSVF_1_1TCT.html#a60e63f6ddfe78c4cf4fd3a70875b727f">SVF::TCT::getSiblingThread</a></div><div class="ttdeci">const NodeBS getSiblingThread(NodeID tid) const</div><div class="ttdoc">Get sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00312">TCT.h:312</a></div></div>
|
|
2218
2218
|
<div class="ttc" id="classSVF_1_1MHP_html_a0356a8ccc53999549fb369f67faad306"><div class="ttname"><a href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">SVF::MHP::isRecurFullJoin</a></div><div class="ttdeci">bool isRecurFullJoin(NodeID parentTid, NodeID curTid)</div><div class="ttdoc">Thread curTid can be fully joined by parentTid recurively. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00439">MHP.cpp:439</a></div></div>
|
|
2219
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2219
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00153">MHP.h:153</a></div></div>
|
|
2220
2220
|
<div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
|
|
2221
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2221
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00252">MHP.h:252</a></div></div>
|
|
2222
2222
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
2223
2223
|
<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>
|
|
2224
2224
|
</div><!-- fragment -->
|
|
@@ -2252,7 +2252,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2252
2252
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00638">638</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2253
2253
|
<div class="fragment"><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> </div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="comment">// Initialize the validator and perform validation.</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="classSVF_1_1MHPValidator.html">MHPValidator</a> validator(<span class="keyword">this</span>);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  validator.init(<a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()->getSVFModule());</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  validator.analyze();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html">MTAResultValidator</a> MTAValidator(<span class="keyword">this</span>);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  MTAValidator.analyze();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> }</div><div class="ttc" id="classSVF_1_1MTAResultValidator_html"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html">SVF::MTAResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00021">MTAResultValidator.h:21</a></div></div>
|
|
2254
2254
|
<div class="ttc" id="classSVF_1_1MHPValidator_html"><div class="ttname"><a href="classSVF_1_1MHPValidator.html">SVF::MHPValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00025">MHP.cpp:25</a></div></div>
|
|
2255
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a033936547612c54326a604f0ff1e39a6"><div class="ttname"><a href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">SVF::MHP::getTCT</a></div><div class="ttdeci">TCT * getTCT() const</div><div class="ttdoc">Get Thread Creation Tree. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2255
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a033936547612c54326a604f0ff1e39a6"><div class="ttname"><a href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">SVF::MHP::getTCT</a></div><div class="ttdeci">TCT * getTCT() const</div><div class="ttdoc">Get Thread Creation Tree. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00060">MHP.h:60</a></div></div>
|
|
2256
2256
|
</div><!-- fragment -->
|
|
2257
2257
|
</div>
|
|
2258
2258
|
</div>
|
|
@@ -2279,7 +2279,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2279
2279
|
|
|
2280
2280
|
<p><a class="el" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> worklist. </p>
|
|
2281
2281
|
|
|
2282
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2282
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00254">254</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2283
2283
|
|
|
2284
2284
|
</div>
|
|
2285
2285
|
</div>
|
|
@@ -2305,7 +2305,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2305
2305
|
|
|
2306
2306
|
<p>ForJoin Analysis. </p>
|
|
2307
2307
|
|
|
2308
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2308
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00253">253</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2309
2309
|
|
|
2310
2310
|
</div>
|
|
2311
2311
|
</div>
|
|
@@ -2332,7 +2332,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2332
2332
|
<p>Map a statement to its thread interleavings. </p>
|
|
2333
2333
|
<p>Map an instruction to its ThreadStmtSet </p>
|
|
2334
2334
|
|
|
2335
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2335
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00256">256</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2336
2336
|
|
|
2337
2337
|
</div>
|
|
2338
2338
|
</div>
|
|
@@ -2348,7 +2348,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2348
2348
|
</table>
|
|
2349
2349
|
</div><div class="memdoc">
|
|
2350
2350
|
|
|
2351
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2351
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00264">264</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2352
2352
|
|
|
2353
2353
|
</div>
|
|
2354
2354
|
</div>
|
|
@@ -2364,7 +2364,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2364
2364
|
</table>
|
|
2365
2365
|
</div><div class="memdoc">
|
|
2366
2366
|
|
|
2367
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2367
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00263">263</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2368
2368
|
|
|
2369
2369
|
</div>
|
|
2370
2370
|
</div>
|
|
@@ -2388,7 +2388,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2388
2388
|
</table>
|
|
2389
2389
|
</div><div class="memdoc">
|
|
2390
2390
|
|
|
2391
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2391
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00257">257</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2392
2392
|
|
|
2393
2393
|
</div>
|
|
2394
2394
|
</div>
|
|
@@ -2406,7 +2406,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2406
2406
|
|
|
2407
2407
|
<p>Number of queries are answered as may-happen-in-parallel. </p>
|
|
2408
2408
|
|
|
2409
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2409
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00262">262</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2410
2410
|
|
|
2411
2411
|
</div>
|
|
2412
2412
|
</div>
|
|
@@ -2424,7 +2424,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2424
2424
|
|
|
2425
2425
|
<p>Total number of queries. </p>
|
|
2426
2426
|
|
|
2427
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2427
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00261">261</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2428
2428
|
|
|
2429
2429
|
</div>
|
|
2430
2430
|
</div>
|
|
@@ -2450,7 +2450,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2450
2450
|
|
|
2451
2451
|
<p>TCG. </p>
|
|
2452
2452
|
|
|
2453
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2453
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00251">251</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2454
2454
|
|
|
2455
2455
|
</div>
|
|
2456
2456
|
</div>
|
|
@@ -2476,7 +2476,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2476
2476
|
|
|
2477
2477
|
<p><a class="el" href="classSVF_1_1TCT.html">TCT</a>. </p>
|
|
2478
2478
|
|
|
2479
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2479
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00252">252</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2480
2480
|
|
|
2481
2481
|
</div>
|
|
2482
2482
|
</div>
|
|
@@ -2500,7 +2500,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2500
2500
|
</table>
|
|
2501
2501
|
</div><div class="memdoc">
|
|
2502
2502
|
|
|
2503
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2503
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00255">255</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2504
2504
|
|
|
2505
2505
|
</div>
|
|
2506
2506
|
</div>
|