svf-tools 1.0.467 → 1.0.470
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +37 -30
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +14 -16
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +18 -16
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +10 -8
- package/SVF-doxygen/html/html/CFLGrammarDev_8txt.html +253 -0
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +22 -15
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +55 -42
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +140 -22
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +16 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +17 -9
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +9 -18
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +8 -17
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/ContextDDA_8h.html +0 -1
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +22 -25
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/DCHG_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ExeState_8cpp.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +3 -3
- 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.html +0 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +20 -23
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/Graph2Json_8h.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8h_source.html +3 -3
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +53 -50
- package/SVF-doxygen/html/html/ICFG_8h.html +1 -0
- package/SVF-doxygen/html/html/ICFG_8h_source.html +65 -56
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp.html +85 -0
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +109 -0
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h.html +96 -0
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +88 -0
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +18 -20
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +47 -100
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +51 -74
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/MHP_8h_source.html +13 -13
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +8 -8
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MTA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +3 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +3 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/PCG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +71 -53
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +54 -53
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +63 -60
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +73 -73
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFLoop_8h.html +95 -0
- package/SVF-doxygen/html/html/SVFLoop_8h_source.html +115 -0
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp.html +8 -9
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +40 -39
- package/SVF-doxygen/html/html/SVFUtil_8h.html +46 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +61 -28
- package/SVF-doxygen/html/html/SVFVariables_8cpp.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +39 -39
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/TCT_8h_source.html +101 -101
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -3
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +56 -57
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/VFG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +142 -140
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +9 -12
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +125 -194
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +29 -28
- package/SVF-doxygen/html/html/classSVF_1_1CFLGramGraphChecker-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLGramGraphChecker.html +13 -7
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +48 -41
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +140 -126
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +25 -32
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +37 -202
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder-members.html +15 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +354 -18
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +36 -34
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +78 -79
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +53 -82
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +49 -49
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +86 -87
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +36 -65
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +30 -17
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +559 -114
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +48 -41
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +358 -143
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +49 -43
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +24 -8
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
- 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_1IntraICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +85 -0
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +319 -0
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +2 -0
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +52 -0
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +221 -218
- package/SVF-doxygen/html/html/classSVF_1_1SVFLoop-members.html +111 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFLoop.html +1024 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +218 -218
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
- package/SVF-doxygen/html/html/classes.html +100 -102
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -1
- package/SVF-doxygen/html/html/cuddInt_8c.html +17 -17
- package/SVF-doxygen/html/html/cuddInt_8c_source.html +3 -3
- package/SVF-doxygen/html/html/cuddInt_8h.html +5 -5
- package/SVF-doxygen/html/html/cudd_8h.html +9 -9
- package/SVF-doxygen/html/html/cudd_8h_source.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_5840dc76920ee0f379cd88b55fa041fd.html +2 -0
- package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +2 -0
- package/SVF-doxygen/html/html/dir_eef3a4ca6ca2cab0eb5fbea30ec32c1a.html +2 -0
- package/SVF-doxygen/html/html/files.html +14 -11
- package/SVF-doxygen/html/html/functions_0x7e.html +7 -1
- package/SVF-doxygen/html/html/functions_a.html +24 -9
- package/SVF-doxygen/html/html/functions_b.html +20 -4
- package/SVF-doxygen/html/html/functions_c.html +4 -4
- package/SVF-doxygen/html/html/functions_d.html +1 -1
- package/SVF-doxygen/html/html/functions_e.html +13 -4
- package/SVF-doxygen/html/html/functions_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func.html +22 -7
- package/SVF-doxygen/html/html/functions_func_0x7e.html +7 -1
- package/SVF-doxygen/html/html/functions_func_b.html +16 -3
- package/SVF-doxygen/html/html/functions_func_c.html +3 -3
- package/SVF-doxygen/html/html/functions_func_d.html +1 -1
- package/SVF-doxygen/html/html/functions_func_e.html +10 -4
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +49 -18
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +44 -14
- package/SVF-doxygen/html/html/functions_func_k.html +76 -0
- package/SVF-doxygen/html/html/functions_func_l.html +5 -2
- package/SVF-doxygen/html/html/functions_func_o.html +8 -2
- package/SVF-doxygen/html/html/functions_func_s.html +34 -13
- package/SVF-doxygen/html/html/functions_g.html +48 -17
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +62 -16
- package/SVF-doxygen/html/html/functions_k.html +13 -3
- package/SVF-doxygen/html/html/functions_l.html +20 -10
- package/SVF-doxygen/html/html/functions_n.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +24 -13
- package/SVF-doxygen/html/html/functions_p.html +16 -18
- package/SVF-doxygen/html/html/functions_s.html +54 -35
- package/SVF-doxygen/html/html/functions_t.html +11 -11
- package/SVF-doxygen/html/html/functions_type_i.html +7 -0
- package/SVF-doxygen/html/html/functions_type_k.html +3 -1
- package/SVF-doxygen/html/html/functions_type_p.html +2 -4
- package/SVF-doxygen/html/html/functions_type_s.html +5 -2
- package/SVF-doxygen/html/html/functions_vars_a.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_c.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_e.html +4 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +9 -0
- package/SVF-doxygen/html/html/functions_vars_k.html +6 -3
- package/SVF-doxygen/html/html/functions_vars_l.html +12 -5
- package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_s.html +3 -6
- package/SVF-doxygen/html/html/functions_vars_t.html +4 -4
- package/SVF-doxygen/html/html/functions_w.html +6 -10
- package/SVF-doxygen/html/html/globals.html +3 -0
- package/SVF-doxygen/html/html/globals_a.html +7 -2
- package/SVF-doxygen/html/html/globals_c.html +105 -102
- package/SVF-doxygen/html/html/globals_e.html +6 -5
- package/SVF-doxygen/html/html/globals_f.html +5 -0
- package/SVF-doxygen/html/html/globals_func.html +6 -0
- package/SVF-doxygen/html/html/globals_func_f.html +3 -1
- package/SVF-doxygen/html/html/globals_g.html +4 -3
- package/SVF-doxygen/html/html/globals_r.html +3 -3
- package/SVF-doxygen/html/html/globals_s.html +4 -10
- package/SVF-doxygen/html/html/globals_type.html +3 -0
- package/SVF-doxygen/html/html/globals_vars.html +16 -3
- package/SVF-doxygen/html/html/hierarchy.html +130 -128
- package/SVF-doxygen/html/html/menudata.js +1 -0
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +29 -43
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +387 -395
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +32 -32
- package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_func.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_i.html +2 -2
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -3
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_0.js +1 -0
- package/SVF-doxygen/html/html/search/all_1.js +9 -3
- package/SVF-doxygen/html/html/search/all_10.js +10 -10
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +26 -18
- package/SVF-doxygen/html/html/search/all_14.js +8 -8
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +3 -1
- package/SVF-doxygen/html/html/search/all_2.js +8 -3
- package/SVF-doxygen/html/html/search/all_3.js +6 -5
- package/SVF-doxygen/html/html/search/all_4.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +8 -5
- package/SVF-doxygen/html/html/search/all_6.js +3 -3
- package/SVF-doxygen/html/html/search/all_7.js +21 -11
- package/SVF-doxygen/html/html/search/all_8.js +3 -3
- package/SVF-doxygen/html/html/search/all_9.js +21 -9
- package/SVF-doxygen/html/html/search/all_b.js +4 -2
- package/SVF-doxygen/html/html/search/all_c.js +10 -5
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +5 -5
- package/SVF-doxygen/html/html/search/all_f.js +6 -3
- package/SVF-doxygen/html/html/search/classes_9.js +1 -0
- package/SVF-doxygen/html/html/search/classes_f.js +1 -0
- package/SVF-doxygen/html/html/search/files_2.js +1 -0
- package/SVF-doxygen/html/html/search/files_8.js +2 -0
- package/SVF-doxygen/html/html/search/files_d.js +1 -0
- package/SVF-doxygen/html/html/search/functions_0.js +8 -1
- package/SVF-doxygen/html/html/search/functions_1.js +6 -2
- package/SVF-doxygen/html/html/search/functions_10.js +121 -219
- package/SVF-doxygen/html/html/search/functions_11.js +226 -32
- package/SVF-doxygen/html/html/search/functions_12.js +32 -37
- package/SVF-doxygen/html/html/search/functions_13.js +37 -68
- package/SVF-doxygen/html/html/search/functions_14.js +68 -12
- package/SVF-doxygen/html/html/search/functions_15.js +12 -25
- package/SVF-doxygen/html/html/search/functions_16.js +25 -146
- package/SVF-doxygen/html/html/search/functions_17.html +26 -0
- package/SVF-doxygen/html/html/search/functions_17.js +151 -0
- package/SVF-doxygen/html/html/search/functions_2.js +3 -3
- package/SVF-doxygen/html/html/search/functions_3.js +1 -1
- package/SVF-doxygen/html/html/search/functions_4.js +5 -3
- package/SVF-doxygen/html/html/search/functions_5.js +3 -3
- package/SVF-doxygen/html/html/search/functions_6.js +20 -10
- package/SVF-doxygen/html/html/search/functions_7.js +3 -3
- package/SVF-doxygen/html/html/search/functions_8.js +15 -7
- package/SVF-doxygen/html/html/search/functions_a.js +1 -19
- package/SVF-doxygen/html/html/search/functions_b.js +20 -88
- package/SVF-doxygen/html/html/search/functions_c.js +88 -20
- package/SVF-doxygen/html/html/search/functions_d.js +20 -41
- package/SVF-doxygen/html/html/search/functions_e.js +43 -129
- package/SVF-doxygen/html/html/search/functions_f.js +129 -121
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_11.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_8.js +3 -1
- package/SVF-doxygen/html/html/search/typedefs_a.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
- package/SVF-doxygen/html/html/search/variables_0.js +1 -0
- package/SVF-doxygen/html/html/search/variables_1.js +3 -2
- package/SVF-doxygen/html/html/search/variables_13.js +1 -2
- package/SVF-doxygen/html/html/search/variables_14.js +5 -5
- package/SVF-doxygen/html/html/search/variables_2.js +1 -0
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +3 -2
- package/SVF-doxygen/html/html/search/variables_6.js +2 -1
- package/SVF-doxygen/html/html/search/variables_7.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +3 -0
- package/SVF-doxygen/html/html/search/variables_b.js +2 -1
- package/SVF-doxygen/html/html/search/variables_c.js +4 -2
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/SVF-doxygen/html/html/search/variables_f.js +1 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -17
- 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_01ICFG_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +2 -2
- 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 +5 -5
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/CFL/CFGNormalizer.h +11 -18
- package/include/CFL/CFLAlias.h +8 -7
- package/include/CFL/CFLGramGraphChecker.h +19 -12
- package/include/CFL/CFLGrammar.h +81 -25
- package/include/CFL/CFLGrammar.txt +9 -1
- package/include/CFL/CFLGrammarDev.txt +16 -0
- package/include/CFL/CFLGraphBuilder.h +51 -11
- package/include/CFL/CFLSolver.h +2 -0
- package/include/DDA/ContextDDA.h +0 -2
- package/include/DDA/FlowDDA.h +0 -2
- package/include/Graphs/CFLGraph.h +5 -29
- package/include/Graphs/ICFG.h +33 -3
- package/include/MTA/TCT.h +0 -1
- package/include/MemoryModel/SVFLoop.h +163 -0
- package/include/SVF-FE/BasicTypes.h +1 -0
- package/include/SVF-FE/Graph2Json.h +1 -1
- package/include/SVF-FE/LLVMLoopAnalysis.h +59 -0
- package/include/SVF-FE/LLVMUtil.h +0 -122
- package/include/Util/BasicTypes.h +0 -1
- package/include/Util/Options.h +4 -0
- package/include/Util/SVFUtil.h +124 -0
- package/lib/CFL/CFGNormalizer.cpp +84 -124
- package/lib/CFL/CFLGrammar.cpp +53 -29
- package/lib/CFL/CFLGraphBuilder.cpp +54 -12
- package/lib/CFL/GrammarBuilder.cpp +13 -13
- package/lib/DDA/ContextDDA.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +1 -1
- package/lib/Graphs/CFLGraph.cpp +0 -58
- package/lib/Graphs/ICFG.cpp +17 -0
- package/lib/Graphs/PTACallGraph.cpp +1 -1
- package/lib/Graphs/SVFG.cpp +1 -1
- package/lib/Graphs/VFG.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/SVFVariables.cpp +1 -1
- package/lib/SVF-FE/CallGraphBuilder.cpp +1 -1
- package/lib/SVF-FE/LLVMLoopAnalysis.cpp +164 -0
- package/lib/SVF-FE/LLVMUtil.cpp +0 -8
- package/lib/SVF-FE/SVFIRBuilder.cpp +6 -0
- package/lib/Util/ExeState.cpp +1 -1
- package/lib/Util/Options.cpp +11 -0
- package/lib/Util/SVFUtil.cpp +9 -1
- package/lib/WPA/Andersen.cpp +1 -1
- package/package.json +1 -1
- package/tools/WPA/wpa.cpp +1 -1
|
@@ -448,7 +448,7 @@ Private Member Functions</h2></td></tr>
|
|
|
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
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
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
|
-
<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#
|
|
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#l00166">TCT.h:166</a></div></div>
|
|
452
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
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
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>
|
|
@@ -591,7 +591,7 @@ Private Member Functions</h2></td></tr>
|
|
|
591
591
|
|
|
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
|
-
<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#
|
|
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#l00100">SVFUtil.cpp:100</a></div></div>
|
|
595
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>
|
|
@@ -625,9 +625,9 @@ Private Member Functions</h2></td></tr>
|
|
|
625
625
|
<p>update non-candidate functions' interleaving </p>
|
|
626
626
|
|
|
627
627
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00077">77</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
628
|
-
<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& ct = it->second->getCxtThread();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it->first;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">getStartRoutineOfCxtThread</a>(ct);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> rootcts(rootTid,ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),&(routine->getEntryBlock().front()));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(rootcts,rootTid);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">updateAncestorThreads</a>(rootTid);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">updateSiblingThreads</a>(rootTid);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts = <a class="code" href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">popFromCTSWorkList</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"-----\nMHP analysis root thread: "</span> << rootTid << <span class="stringliteral">" "</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a735d71af28b26d9576f679e53141e303">dump</a>());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"current thread interleaving: < "</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</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#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(cts)));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" >\n-----\n"</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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>(curInst->getParent()->getParent()))</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">handleNonCandidateFun</a>(cts);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">isTDFork</a>(curInst))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(cts,rootTid);</div><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">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">isTDJoin</a>(curInst))</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<CallInst>(curInst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(curInst))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</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>(<a class="code" href="classSVF_1_1MHP.html#a71183ff98500d1ce49170bab61fe664e">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(curInst))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(cts);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">updateNonCandidateFunInterleaving</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa3e6c78eb346a52bbaaac2610573604a">Options::PrintInterLev</a>)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">printInterleaving</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1MHP.html#a6990ff8e3efe5af365c8205b7ced38ed">validateResults</a>();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="ttc" id="classSVF_1_1TCT_html_a7ccacac1c673b38215b90e4eb480581f"><div class="ttname"><a href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">SVF::TCT::getStartRoutineOfCxtThread</a></div><div class="ttdeci">const Function * getStartRoutineOfCxtThread(const CxtThread &ct) const</div><div class="ttdoc">get the start routine function of a thread </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00339">TCT.h:339</a></div></div>
|
|
628
|
+
<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">TCT::const_iterator</a> it = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& ct = it->second->getCxtThread();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it->first;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">getStartRoutineOfCxtThread</a>(ct);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> rootcts(rootTid,ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),&(routine->getEntryBlock().front()));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(rootcts,rootTid);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">updateAncestorThreads</a>(rootTid);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">updateSiblingThreads</a>(rootTid);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">while</span>(!<a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts = <a class="code" href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">popFromCTSWorkList</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</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="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"-----\nMHP analysis root thread: "</span> << rootTid << <span class="stringliteral">" "</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a735d71af28b26d9576f679e53141e303">dump</a>());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"current thread interleaving: < "</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</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#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(cts)));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" >\n-----\n"</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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>(curInst->getParent()->getParent()))</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">handleNonCandidateFun</a>(cts);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">isTDFork</a>(curInst))</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(cts,rootTid);</div><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">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">isTDJoin</a>(curInst))</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<CallInst>(curInst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#aad27a96075234ad2182a84e0e9d31a45">isExtCall</a>(curInst))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</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>(<a class="code" href="classSVF_1_1MHP.html#a71183ff98500d1ce49170bab61fe664e">getCallee</a>(curInst, callees)))</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(curInst))</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(cts);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">updateNonCandidateFunInterleaving</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa3e6c78eb346a52bbaaac2610573604a">Options::PrintInterLev</a>)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">printInterleaving</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1MHP.html#a6990ff8e3efe5af365c8205b7ced38ed">validateResults</a>();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="ttc" id="classSVF_1_1TCT_html_a7ccacac1c673b38215b90e4eb480581f"><div class="ttname"><a href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">SVF::TCT::getStartRoutineOfCxtThread</a></div><div class="ttdeci">const Function * getStartRoutineOfCxtThread(const CxtThread &ct) const</div><div class="ttdoc">get the start routine function of a thread </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00338">TCT.h:338</a></div></div>
|
|
629
629
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
630
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#
|
|
630
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00148">SVFUtil.cpp:148</a></div></div>
|
|
631
631
|
<div class="ttc" id="classSVF_1_1CxtThread_html_a93d75593046e26eafcf1af3a596bba4a"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">SVF::CxtThread::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return context of the thread. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00205">CxtStmt.h:205</a></div></div>
|
|
632
632
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a735d71af28b26d9576f679e53141e303"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a735d71af28b26d9576f679e53141e303">SVF::CxtThreadStmt::dump</a></div><div class="ttdeci">void dump() const</div><div class="ttdoc">Dump CxtThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00175">CxtStmt.h:175</a></div></div>
|
|
633
633
|
<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>
|
|
@@ -644,6 +644,7 @@ Private Member Functions</h2></td></tr>
|
|
|
644
644
|
<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#l00070">BasicTypes.h:70</a></div></div>
|
|
645
645
|
<div class="ttc" id="classSVF_1_1MHP_html_af769afe6ba6baccda5a497df181c9fb0"><div class="ttname"><a href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">SVF::MHP::handleCall</a></div><div class="ttdeci">void handleCall(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle call. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00287">MHP.cpp:287</a></div></div>
|
|
646
646
|
<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#l00073">BasicTypes.h:73</a></div></div>
|
|
647
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aad27a96075234ad2182a84e0e9d31a45"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aad27a96075234ad2182a84e0e9d31a45">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00069">LLVMUtil.h:69</a></div></div>
|
|
647
648
|
<div class="ttc" id="classSVF_1_1MHP_html_a23ab5a03b7c00ba0ebac65568a83a5cc"><div class="ttname"><a href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">SVF::MHP::updateSiblingThreads</a></div><div class="ttdeci">void updateSiblingThreads(NodeID tid)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00410">MHP.cpp:410</a></div></div>
|
|
648
649
|
<div class="ttc" id="classSVF_1_1Options_html_aa3e6c78eb346a52bbaaac2610573604a"><div class="ttname"><a href="classSVF_1_1Options.html#aa3e6c78eb346a52bbaaac2610573604a">SVF::Options::PrintInterLev</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PrintInterLev</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00174">Options.h:174</a></div></div>
|
|
649
650
|
<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>
|
|
@@ -652,7 +653,7 @@ Private Member Functions</h2></td></tr>
|
|
|
652
653
|
<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
654
|
<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
655
|
<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
|
-
<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#
|
|
656
|
+
<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#l00248">TCT.h:248</a></div></div>
|
|
656
657
|
<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
658
|
<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
659
|
<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>
|
|
@@ -664,7 +665,6 @@ Private Member Functions</h2></td></tr>
|
|
|
664
665
|
<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
666
|
<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
667
|
<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
|
-
<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>
|
|
670
670
|
</div>
|
|
@@ -778,7 +778,7 @@ Private Member Functions</h2></td></tr>
|
|
|
778
778
|
</div><div class="memdoc">
|
|
779
779
|
|
|
780
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#
|
|
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#l00150">TCT.h:150</a></div></div>
|
|
782
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>
|
|
@@ -1030,25 +1030,25 @@ 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#
|
|
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#aad27a96075234ad2182a84e0e9d31a45">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
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#
|
|
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#
|
|
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#l00127">BasicTypes.h:127</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#l00104">BasicTypes.h:104</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#l00070">BasicTypes.h:70</a></div></div>
|
|
1041
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aad27a96075234ad2182a84e0e9d31a45"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aad27a96075234ad2182a84e0e9d31a45">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00069">LLVMUtil.h:69</a></div></div>
|
|
1041
1042
|
<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
1043
|
<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
1044
|
<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
1045
|
<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#
|
|
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#
|
|
1046
|
+
<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#l00143">BasicTypes.h:143</a></div></div>
|
|
1047
|
+
<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#l00166">TCT.h:166</a></div></div>
|
|
1047
1048
|
<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
1049
|
<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
1050
|
<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
1051
|
<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
|
-
<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
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>
|
|
@@ -1096,11 +1096,11 @@ Private Member Functions</h2></td></tr>
|
|
|
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#l00127">BasicTypes.h:127</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#l00104">BasicTypes.h:104</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
|
-
<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#
|
|
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#l00176">TCT.h:176</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>
|
|
1105
1105
|
<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>
|
|
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#l00070">BasicTypes.h:70</a></div></div>
|
|
@@ -1108,8 +1108,8 @@ Private Member Functions</h2></td></tr>
|
|
|
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
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#
|
|
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#
|
|
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#l00143">BasicTypes.h:143</a></div></div>
|
|
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#l00166">TCT.h:166</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
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>
|
|
@@ -1200,7 +1200,7 @@ 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#l00104">BasicTypes.h:104</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>
|
|
@@ -1209,7 +1209,7 @@ Private Member Functions</h2></td></tr>
|
|
|
1209
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
|
-
<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#
|
|
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#l00391">SVFUtil.cpp:391</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
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>
|
|
@@ -1250,26 +1250,26 @@ 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#
|
|
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#aad27a96075234ad2182a84e0e9d31a45">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#l00127">BasicTypes.h:127</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>
|
|
1261
|
-
<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#
|
|
1261
|
+
<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#l00155">TCT.h:155</a></div></div>
|
|
1262
1262
|
<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#l00070">BasicTypes.h:70</a></div></div>
|
|
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#l00073">BasicTypes.h:73</a></div></div>
|
|
1264
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aad27a96075234ad2182a84e0e9d31a45"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aad27a96075234ad2182a84e0e9d31a45">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00069">LLVMUtil.h:69</a></div></div>
|
|
1264
1265
|
<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
1266
|
<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
1267
|
<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#
|
|
1268
|
+
<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#l00143">BasicTypes.h:143</a></div></div>
|
|
1268
1269
|
<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
1270
|
<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
1271
|
<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
1272
|
<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
|
-
<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 -->
|
|
1274
1274
|
</div>
|
|
1275
1275
|
</div>
|
|
@@ -1308,14 +1308,14 @@ Private Member Functions</h2></td></tr>
|
|
|
1308
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
|
-
<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#
|
|
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#l00155">TCT.h:155</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
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
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#
|
|
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#l00143">BasicTypes.h:143</a></div></div>
|
|
1319
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
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>
|
|
@@ -1403,9 +1403,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1403
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
|
-
<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#
|
|
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#l00124">TCT.h:124</a></div></div>
|
|
1407
1407
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
1408
|
-
<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#
|
|
1408
|
+
<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#l00155">TCT.h:155</a></div></div>
|
|
1409
1409
|
<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>
|
|
1410
1410
|
<div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00218">GenericGraph.h:218</a></div></div>
|
|
1411
1411
|
<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>
|
|
@@ -1532,8 +1532,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1532
1532
|
<p>A thread is a multiForked thread if it is in a loop or recursion. </p>
|
|
1533
1533
|
|
|
1534
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#
|
|
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#
|
|
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#l00100">TCT.h:100</a></div></div>
|
|
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#l00176">TCT.h:176</a></div></div>
|
|
1537
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>
|
|
@@ -1578,7 +1578,7 @@ Private Member Functions</h2></td></tr>
|
|
|
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
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
|
-
<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#
|
|
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#l00381">TCT.h:381</a></div></div>
|
|
1582
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
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 -->
|
|
@@ -1625,8 +1625,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1625
1625
|
<div class="fragment"><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span>(parentTid==curTid)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* curNode = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(curTid);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const TCTNode*></a> worklist;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(curNode);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1TCTNode.html">TCTNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">for</span>(TCT::ThreadCreateEdgeSet::const_iterator it = node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = node-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcID = (*it)->getSrcID();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#ab55532eefbcef639ced957ad82fbd340">isFullJoin</a>(srcID,node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()))</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">if</span>(srcID == parentTid)</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*it)->getSrcNode());</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div><div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00186">GenericGraph.h:186</a></div></div>
|
|
1626
1626
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
|
|
1627
1627
|
<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>
|
|
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#
|
|
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#
|
|
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#l00065">TCT.h:65</a></div></div>
|
|
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#l00176">TCT.h:176</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
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>
|
|
@@ -1835,7 +1835,7 @@ Private Member Functions</h2></td></tr>
|
|
|
1835
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
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
|
-
<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#
|
|
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#l00248">TCT.h:248</a></div></div>
|
|
1839
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
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 -->
|
|
@@ -1938,9 +1938,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1938
1938
|
<p>Print interleaving results </p>
|
|
1939
1939
|
|
|
1940
1940
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00653">653</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
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#
|
|
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#l00268">SVFUtil.cpp:268</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
|
-
<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#
|
|
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#l00391">SVFUtil.cpp:391</a></div></div>
|
|
1944
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>
|
|
@@ -2101,19 +2101,19 @@ Private Member Functions</h2></td></tr>
|
|
|
2101
2101
|
<p>Update interleavings of ancestor threads according to <a class="el" href="classSVF_1_1TCT.html">TCT</a> </p>
|
|
2102
2102
|
|
|
2103
2103
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00375">375</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2104
|
-
<div class="fragment"><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> tds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">getAncestorThread</a>(curTid);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"##Ancestor thread of "</span> << curTid << <span class="stringliteral">" is : "</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</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#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(tds));</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  tds.set(curTid);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">for</span>(NodeBS::iterator it = tds.begin(), eit = tds.end(); it!=eit; ++it)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& ct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(*it)-><a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>())</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(*it),forkSiteCxt,*nit);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#
|
|
2105
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aeb7dff0c02a90cb338c8d054d2b78984"><div class="ttname"><a href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">SVF::TCT::getAncestorThread</a></div><div class="ttdeci">const NodeBS getAncestorThread(NodeID tid) const</div><div class="ttdoc">Get all ancestor threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
2104
|
+
<div class="fragment"><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> tds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">getAncestorThread</a>(curTid);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"##Ancestor thread of "</span> << curTid << <span class="stringliteral">" is : "</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</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#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(tds));</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  tds.set(curTid);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">for</span>(NodeBS::iterator it = tds.begin(), eit = tds.end(); it!=eit; ++it)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& ct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(*it)-><a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* forkInst = ct.<a class="code" href="classSVF_1_1CxtThread.html#a066ba29a83edc1042139641ca088b038">getThread</a>())</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> forkSiteCxt = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#ab4bc72ca330b315df06f2d4d2c1a7b4f">getCxtOfCxtThread</a>(ct);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a516578af1f8666ff672e6611e61d7152">getParentThread</a>(*it),forkSiteCxt,*nit);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00148">SVFUtil.cpp:148</a></div></div>
|
|
2105
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aeb7dff0c02a90cb338c8d054d2b78984"><div class="ttname"><a href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">SVF::TCT::getAncestorThread</a></div><div class="ttdeci">const NodeBS getAncestorThread(NodeID tid) const</div><div class="ttdoc">Get all ancestor threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00290">TCT.h:290</a></div></div>
|
|
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#
|
|
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#
|
|
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#
|
|
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#l00104">BasicTypes.h:104</a></div></div>
|
|
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#l00176">TCT.h:176</a></div></div>
|
|
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#l00081">TCT.h:81</a></div></div>
|
|
2112
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
|
-
<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#
|
|
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#l00330">TCT.h:330</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
|
-
<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#
|
|
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#l00281">TCT.h:281</a></div></div>
|
|
2117
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
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>
|
|
@@ -2149,20 +2149,21 @@ Private Member Functions</h2></td></tr>
|
|
|
2149
2149
|
<p>Update non-candidate functions' interleaving </p>
|
|
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
|
-
<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#
|
|
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#
|
|
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#aad27a96075234ad2182a84e0e9d31a45">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#l00127">BasicTypes.h:127</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#l00110">BasicTypes.h:110</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
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#l00073">BasicTypes.h:73</a></div></div>
|
|
2160
|
-
<div class="ttc" id="
|
|
2160
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aad27a96075234ad2182a84e0e9d31a45"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aad27a96075234ad2182a84e0e9d31a45">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00069">LLVMUtil.h:69</a></div></div>
|
|
2161
|
+
<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#l00160">TCT.h:160</a></div></div>
|
|
2161
2162
|
<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
|
-
<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#
|
|
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#
|
|
2163
|
+
<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#l00248">TCT.h:248</a></div></div>
|
|
2164
|
+
<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#l00014">CFLGrammar.txt:14</a></div></div>
|
|
2164
2165
|
<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#
|
|
2166
|
+
<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#l00143">BasicTypes.h:143</a></div></div>
|
|
2166
2167
|
<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
2168
|
<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
2169
|
<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>
|
|
@@ -2170,7 +2171,6 @@ Private Member Functions</h2></td></tr>
|
|
|
2170
2171
|
<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
2172
|
<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
2173
|
<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
|
-
<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>
|
|
2176
2176
|
</div>
|
|
@@ -2202,19 +2202,19 @@ Private Member Functions</h2></td></tr>
|
|
|
2202
2202
|
<p>The interleaving of a thread t is not unnecessary to be updated if (1) t HB Sibling and t fully joins curTid recusively or (2) Sibling HB t </p>
|
|
2203
2203
|
|
|
2204
2204
|
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00410">410</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2205
|
-
<div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> tds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">getAncestorThread</a>(curTid);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  tds.set(curTid);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">for</span>(NodeBS::iterator cit = tds.begin(), ecit = tds.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> siblingTds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a60e63f6ddfe78c4cf4fd3a70875b727f">getSiblingThread</a>(*cit);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">for</span>(NodeBS::iterator it = siblingTds.begin(), eit = siblingTds.end(); it!=eit; ++it)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span>((<a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(*cit,*it) && <a class="code" href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">isRecurFullJoin</a>(*cit,curTid)) || <a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(*it,*cit) )</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& ct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(*it)-><a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">getStartRoutineOfCxtThread</a>(ct);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</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="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(*it,ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),stmt);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"##Sibling thread of "</span> << curTid << <span class="stringliteral">" is : "</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</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#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(siblingTds));</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> }</div><div class="ttc" id="classSVF_1_1TCT_html_a7ccacac1c673b38215b90e4eb480581f"><div class="ttname"><a href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">SVF::TCT::getStartRoutineOfCxtThread</a></div><div class="ttdeci">const Function * getStartRoutineOfCxtThread(const CxtThread &ct) const</div><div class="ttdoc">get the start routine function of a thread </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
2206
|
-
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#
|
|
2207
|
-
<div class="ttc" id="classSVF_1_1TCT_html_aeb7dff0c02a90cb338c8d054d2b78984"><div class="ttname"><a href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">SVF::TCT::getAncestorThread</a></div><div class="ttdeci">const NodeBS getAncestorThread(NodeID tid) const</div><div class="ttdoc">Get all ancestor threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
2205
|
+
<div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> tds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">getAncestorThread</a>(curTid);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  tds.set(curTid);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">for</span>(NodeBS::iterator cit = tds.begin(), ecit = tds.end(); cit!=ecit; ++cit)</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> siblingTds = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a60e63f6ddfe78c4cf4fd3a70875b727f">getSiblingThread</a>(*cit);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">for</span>(NodeBS::iterator it = siblingTds.begin(), eit = siblingTds.end(); it!=eit; ++it)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span>((<a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(*cit,*it) && <a class="code" href="classSVF_1_1MHP.html#a0356a8ccc53999549fb369f67faad306">isRecurFullJoin</a>(*cit,curTid)) || <a class="code" href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">isHBPair</a>(*it,*cit) )</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a>& ct = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(*it)-><a class="code" href="classSVF_1_1TCTNode.html#a21591b19f6a9267151c31178f9543ee6">getCxtThread</a>();</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">getStartRoutineOfCxtThread</a>(ct);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</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="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> cts(*it,ct.<a class="code" href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">getContext</a>(),stmt);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"##Sibling thread of "</span> << curTid << <span class="stringliteral">" is : "</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</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#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(siblingTds));</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> }</div><div class="ttc" id="classSVF_1_1TCT_html_a7ccacac1c673b38215b90e4eb480581f"><div class="ttname"><a href="classSVF_1_1TCT.html#a7ccacac1c673b38215b90e4eb480581f">SVF::TCT::getStartRoutineOfCxtThread</a></div><div class="ttdeci">const Function * getStartRoutineOfCxtThread(const CxtThread &ct) const</div><div class="ttdoc">get the start routine function of a thread </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00338">TCT.h:338</a></div></div>
|
|
2206
|
+
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00148">SVFUtil.cpp:148</a></div></div>
|
|
2207
|
+
<div class="ttc" id="classSVF_1_1TCT_html_aeb7dff0c02a90cb338c8d054d2b78984"><div class="ttname"><a href="classSVF_1_1TCT.html#aeb7dff0c02a90cb338c8d054d2b78984">SVF::TCT::getAncestorThread</a></div><div class="ttdeci">const NodeBS getAncestorThread(NodeID tid) const</div><div class="ttdoc">Get all ancestor threads. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00290">TCT.h:290</a></div></div>
|
|
2208
2208
|
<div class="ttc" id="classSVF_1_1CxtThread_html_a93d75593046e26eafcf1af3a596bba4a"><div class="ttname"><a href="classSVF_1_1CxtThread.html#a93d75593046e26eafcf1af3a596bba4a">SVF::CxtThread::getContext</a></div><div class="ttdeci">const CallStrCxt & getContext() const</div><div class="ttdoc">Return context of the thread. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00205">CxtStmt.h:205</a></div></div>
|
|
2209
2209
|
<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>
|
|
2210
2210
|
<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>
|
|
2211
2211
|
<div class="ttc" id="classSVF_1_1MHP_html_a6f07427b45991b2d8a3ff21582121d23"><div class="ttname"><a href="classSVF_1_1MHP.html#a6f07427b45991b2d8a3ff21582121d23">SVF::MHP::isHBPair</a></div><div class="ttdeci">bool isHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether thread t1 happens before t2 based on ForkJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00502">MHP.cpp:502</a></div></div>
|
|
2212
|
-
<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#
|
|
2213
|
-
<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#
|
|
2212
|
+
<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#l00176">TCT.h:176</a></div></div>
|
|
2213
|
+
<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#l00081">TCT.h:81</a></div></div>
|
|
2214
2214
|
<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#l00070">BasicTypes.h:70</a></div></div>
|
|
2215
2215
|
<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#l00073">BasicTypes.h:73</a></div></div>
|
|
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
|
-
<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#
|
|
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#l00311">TCT.h:311</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
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>
|