svf-tools 1.0.558 → 1.0.561
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/README.md +1 -1
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +43 -43
- package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
- package/SVF-doxygen/html/html/Andersen_8h_source.html +56 -56
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +8 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +10 -1
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +3 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +44 -44
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +43 -43
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +36 -36
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +21 -21
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +51 -51
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +111 -111
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -2
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +40 -40
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +52 -52
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +42 -42
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +114 -114
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +94 -94
- package/SVF-doxygen/html/html/MHP_8h_source.html +135 -135
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/MTA_8h_source.html +24 -24
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +50 -50
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +93 -93
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +59 -59
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +103 -103
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +185 -185
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/PCG_8h_source.html +52 -52
- package/SVF-doxygen/html/html/PEGGrammar_8txt.html +14 -32
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +40 -40
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +181 -181
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +30 -30
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +60 -60
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +66 -66
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +44 -44
- package/SVF-doxygen/html/html/TCT_8h_source.html +93 -93
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +38 -38
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +13 -10
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +190 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +102 -102
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +100 -100
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +165 -165
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +286 -286
- package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +40 -5
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +218 -218
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +334 -334
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +246 -246
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +200 -200
- package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +181 -181
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +267 -267
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +128 -128
- package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +131 -131
- package/SVF-doxygen/html/html/classSVF_1_1PTData.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +107 -107
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +84 -84
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +134 -134
- package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +77 -77
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +161 -161
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +157 -157
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +264 -264
- 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_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +100 -100
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
- package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/functions_a.html +11 -5
- package/SVF-doxygen/html/html/functions_c.html +21 -18
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func.html +16 -10
- package/SVF-doxygen/html/html/functions_func_c.html +19 -16
- package/SVF-doxygen/html/html/functions_func_i.html +11 -8
- package/SVF-doxygen/html/html/functions_i.html +11 -8
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_p.html +6 -6
- package/SVF-doxygen/html/html/functions_r.html +3 -7
- package/SVF-doxygen/html/html/functions_s.html +16 -14
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/globals_g.html +3 -3
- package/SVF-doxygen/html/html/globals_v.html +1 -2
- package/SVF-doxygen/html/html/globals_vars.html +3 -4
- package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +2 -0
- package/SVF-doxygen/html/html/search/all_10.js +5 -5
- package/SVF-doxygen/html/html/search/all_11.js +2 -2
- package/SVF-doxygen/html/html/search/all_12.js +8 -8
- package/SVF-doxygen/html/html/search/all_13.js +2 -2
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_3.js +1 -0
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +2 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/functions_0.js +2 -0
- package/SVF-doxygen/html/html/search/functions_2.js +1 -0
- package/SVF-doxygen/html/html/search/functions_8.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_7.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +15 -15
- 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_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_1SVFGNodeLockSpan_01_4.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/include/CFL/CFLGraphBuilder.h +9 -0
- package/include/CFL/PEGGrammar.txt +4 -8
- package/include/DDA/ContextDDA.h +29 -0
- package/include/DDA/DDAClient.h +23 -0
- package/include/DDA/DDAPass.h +22 -0
- package/include/DDA/DDAStat.h +22 -0
- package/include/DDA/DDAVFSolver.h +22 -0
- package/include/DDA/FlowDDA.h +29 -0
- package/include/MSSA/MSSAMuChi.h +1 -1
- package/include/MSSA/MemPartition.h +1 -1
- package/include/MSSA/MemRegion.h +5 -1
- package/include/MSSA/MemSSA.h +7 -1
- package/include/MSSA/SVFGBuilder.h +1 -1
- package/include/MTA/FSMPTA.h +26 -0
- package/include/MTA/LockAnalysis.h +22 -0
- package/include/MTA/MHP.h +22 -0
- package/include/MTA/MTA.h +27 -1
- package/include/MTA/MTAStat.h +22 -0
- package/include/MTA/PCG.h +22 -0
- package/include/MTA/TCT.h +22 -0
- package/include/MemoryModel/AbstractPointsToDS.h +34 -0
- package/include/MemoryModel/ConditionalPT.h +1 -1
- package/include/MemoryModel/LocationSet.h +1 -1
- package/include/MemoryModel/MutablePointsToDS.h +32 -0
- package/include/MemoryModel/PAGBuilderFromFile.h +2 -2
- package/include/MemoryModel/PersistentPointsToCache.h +3 -1
- package/include/MemoryModel/PersistentPointsToDS.h +10 -0
- package/include/MemoryModel/PointerAnalysis.h +1 -1
- package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
- package/include/MemoryModel/SVFStatements.h +1 -1
- package/include/SABER/DoubleFreeChecker.h +1 -1
- package/include/SABER/FileChecker.h +1 -1
- package/include/SABER/LeakChecker.h +1 -1
- package/include/SABER/ProgSlice.h +8 -1
- package/include/SABER/SaberAnnotator.h +1 -1
- package/include/SABER/SaberCheckerAPI.h +1 -1
- package/include/SABER/SaberCondAllocator.h +1 -1
- package/include/SABER/SaberSVFGBuilder.h +1 -1
- package/include/SABER/SrcSnkDDA.h +8 -1
- package/include/SABER/SrcSnkSolver.h +1 -1
- package/include/Util/ExtAPI.h +3 -0
- package/include/Util/ExtAPI.json +1456 -44
- package/include/WPA/Andersen.h +5 -0
- package/include/WPA/TypeAnalysis.h +1 -1
- package/include/WPA/VersionedFlowSensitive.h +4 -0
- package/lib/CFL/CFLGraphBuilder.cpp +44 -0
- package/lib/DDA/ContextDDA.cpp +22 -0
- package/lib/DDA/DDAClient.cpp +22 -0
- package/lib/DDA/DDAPass.cpp +23 -0
- package/lib/DDA/DDAStat.cpp +22 -0
- package/lib/DDA/FlowDDA.cpp +22 -0
- package/lib/MTA/FSMPTA.cpp +22 -0
- package/lib/MTA/LockAnalysis.cpp +22 -0
- package/lib/MTA/MHP.cpp +23 -1
- package/lib/MTA/MTA.cpp +23 -0
- package/lib/MTA/MTAStat.cpp +22 -0
- package/lib/MTA/PCG.cpp +22 -0
- package/lib/MTA/TCT.cpp +23 -0
- package/lib/MemoryModel/LocationSet.cpp +1 -1
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +23 -0
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/FileChecker.cpp +1 -1
- package/lib/SABER/LeakChecker.cpp +1 -1
- package/lib/SABER/ProgSlice.cpp +1 -1
- package/lib/SABER/SaberAnnotator.cpp +1 -1
- package/lib/SABER/SaberCheckerAPI.cpp +1 -1
- package/lib/SABER/SaberCondAllocator.cpp +1 -1
- package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
- package/lib/SABER/SrcSnkDDA.cpp +1 -1
- package/lib/Util/ExtAPI.cpp +42 -4
- package/lib/WPA/Steensgaard.cpp +22 -0
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/WPAPass.cpp +1 -1
- package/package.json +1 -1
|
@@ -259,7 +259,7 @@ Private Member Functions</h2></td></tr>
|
|
|
259
259
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
260
260
|
<div class="textblock"><p>This class serves as a base may-happen in parallel analysis for multithreaded program Given a statement under an abstract thread, it tells which abstract threads may be alive at the same time (May-happen-in-parallel). </p>
|
|
261
261
|
|
|
262
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
262
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00046">46</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
263
263
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
264
264
|
<a id="a28031502c4f8f0d4012c0827c57efb32"></a>
|
|
265
265
|
<h2 class="memtitle"><span class="permalink"><a href="#a28031502c4f8f0d4012c0827c57efb32">◆ </a></span>CxtThreadStmtSet</h2>
|
|
@@ -273,7 +273,7 @@ Private Member Functions</h2></td></tr>
|
|
|
273
273
|
</table>
|
|
274
274
|
</div><div class="memdoc">
|
|
275
275
|
|
|
276
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
276
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00054">54</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
277
277
|
|
|
278
278
|
</div>
|
|
279
279
|
</div>
|
|
@@ -289,7 +289,7 @@ Private Member Functions</h2></td></tr>
|
|
|
289
289
|
</table>
|
|
290
290
|
</div><div class="memdoc">
|
|
291
291
|
|
|
292
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
292
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00053">53</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
293
293
|
|
|
294
294
|
</div>
|
|
295
295
|
</div>
|
|
@@ -305,7 +305,7 @@ Private Member Functions</h2></td></tr>
|
|
|
305
305
|
</table>
|
|
306
306
|
</div><div class="memdoc">
|
|
307
307
|
|
|
308
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
308
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00060">60</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
309
309
|
|
|
310
310
|
</div>
|
|
311
311
|
</div>
|
|
@@ -321,7 +321,7 @@ Private Member Functions</h2></td></tr>
|
|
|
321
321
|
</table>
|
|
322
322
|
</div><div class="memdoc">
|
|
323
323
|
|
|
324
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
324
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00061">61</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
325
325
|
|
|
326
326
|
</div>
|
|
327
327
|
</div>
|
|
@@ -337,7 +337,7 @@ Private Member Functions</h2></td></tr>
|
|
|
337
337
|
</table>
|
|
338
338
|
</div><div class="memdoc">
|
|
339
339
|
|
|
340
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
340
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00050">50</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
341
341
|
|
|
342
342
|
</div>
|
|
343
343
|
</div>
|
|
@@ -353,7 +353,7 @@ Private Member Functions</h2></td></tr>
|
|
|
353
353
|
</table>
|
|
354
354
|
</div><div class="memdoc">
|
|
355
355
|
|
|
356
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
356
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00051">51</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
357
357
|
|
|
358
358
|
</div>
|
|
359
359
|
</div>
|
|
@@ -369,7 +369,7 @@ Private Member Functions</h2></td></tr>
|
|
|
369
369
|
</table>
|
|
370
370
|
</div><div class="memdoc">
|
|
371
371
|
|
|
372
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
372
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00056">56</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
373
373
|
|
|
374
374
|
</div>
|
|
375
375
|
</div>
|
|
@@ -385,7 +385,7 @@ Private Member Functions</h2></td></tr>
|
|
|
385
385
|
</table>
|
|
386
386
|
</div><div class="memdoc">
|
|
387
387
|
|
|
388
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
388
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00052">52</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
389
389
|
|
|
390
390
|
</div>
|
|
391
391
|
</div>
|
|
@@ -401,7 +401,7 @@ Private Member Functions</h2></td></tr>
|
|
|
401
401
|
</table>
|
|
402
402
|
</div><div class="memdoc">
|
|
403
403
|
|
|
404
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
404
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00058">58</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
405
405
|
|
|
406
406
|
</div>
|
|
407
407
|
</div>
|
|
@@ -417,7 +417,7 @@ Private Member Functions</h2></td></tr>
|
|
|
417
417
|
</table>
|
|
418
418
|
</div><div class="memdoc">
|
|
419
419
|
|
|
420
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
420
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00055">55</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
421
421
|
|
|
422
422
|
</div>
|
|
423
423
|
</div>
|
|
@@ -441,17 +441,17 @@ Private Member Functions</h2></td></tr>
|
|
|
441
441
|
<p>Constructor. </p>
|
|
442
442
|
<p>Constructor </p>
|
|
443
443
|
|
|
444
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
445
|
-
<div class="fragment"><div class="line"><a name="
|
|
446
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
447
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
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#
|
|
449
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
450
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
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#
|
|
452
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
453
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
454
|
-
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html">SVF::ForkJoinAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
444
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00066">66</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
445
|
+
<div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  :<a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>(t-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()),<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>(t),<a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>(0),<a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>(0),</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">interleavingTime</a>(0),<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a>(0)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a16061e7c28e7a9177d9ab798c102b815">analyzeForkJoinPair</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</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#l00273">MHP.h:273</a></div></div>
|
|
446
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00286">MHP.h:286</a></div></div>
|
|
447
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00285">MHP.h:285</a></div></div>
|
|
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#l00750">MHP.cpp:750</a></div></div>
|
|
449
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab8bd382e0c70b0feb2a291ecc4043106"><div class="ttname"><a href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">SVF::MHP::numOfMHPQueries</a></div><div class="ttdeci">u32_t numOfMHPQueries</div><div class="ttdoc">Number of queries are answered as may-happen-in-parallel. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00284">MHP.h:284</a></div></div>
|
|
450
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a26ae18993915d76b704232cded9811c2"><div class="ttname"><a href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">SVF::MHP::numOfTotalQueries</a></div><div class="ttdeci">u32_t numOfTotalQueries</div><div class="ttdoc">Total number of queries. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00283">MHP.h:283</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#l00188">TCT.h:188</a></div></div>
|
|
452
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00275">MHP.h:275</a></div></div>
|
|
453
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00274">MHP.h:274</a></div></div>
|
|
454
|
+
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html">SVF::ForkJoinAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00294">MHP.h:294</a></div></div>
|
|
455
455
|
</div><!-- fragment -->
|
|
456
456
|
</div>
|
|
457
457
|
</div>
|
|
@@ -481,8 +481,8 @@ Private Member Functions</h2></td></tr>
|
|
|
481
481
|
<p>Destructor. </p>
|
|
482
482
|
<p>Destructor </p>
|
|
483
483
|
|
|
484
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
485
|
-
<div class="fragment"><div class="line"><a name="
|
|
484
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00076">76</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
485
|
+
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00275">MHP.h:275</a></div></div>
|
|
486
486
|
</div><!-- fragment -->
|
|
487
487
|
</div>
|
|
488
488
|
</div>
|
|
@@ -523,10 +523,10 @@ Private Member Functions</h2></td></tr>
|
|
|
523
523
|
|
|
524
524
|
<p>Add/Remove interleaving thread for statement inst. </p>
|
|
525
525
|
|
|
526
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
527
|
-
<div class="fragment"><div class="line"><a name="
|
|
528
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
529
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
526
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00175">175</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
527
|
+
<div class="fragment"><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>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr].test_and_set(tid))</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[tgr.getStmt()].insert(tgr);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00243">MHP.h:243</a></div></div>
|
|
528
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
|
|
529
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00278">MHP.h:278</a></div></div>
|
|
530
530
|
</div><!-- fragment -->
|
|
531
531
|
</div>
|
|
532
532
|
</div>
|
|
@@ -564,10 +564,10 @@ Private Member Functions</h2></td></tr>
|
|
|
564
564
|
</table>
|
|
565
565
|
</div><div class="memdoc">
|
|
566
566
|
|
|
567
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
568
|
-
<div class="fragment"><div class="line"><a name="
|
|
569
|
-
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
570
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
567
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00183">183</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
568
|
+
<div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">bool</span> changed = <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr] |= <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[src];</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span>(changed)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[tgr.getStmt()].insert(tgr);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00243">MHP.h:243</a></div></div>
|
|
569
|
+
<div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
|
|
570
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00278">MHP.h:278</a></div></div>
|
|
571
571
|
</div><!-- fragment -->
|
|
572
572
|
</div>
|
|
573
573
|
</div>
|
|
@@ -589,15 +589,15 @@ Private Member Functions</h2></td></tr>
|
|
|
589
589
|
<p>Start analysis here. </p>
|
|
590
590
|
<p>Start analysis here </p>
|
|
591
591
|
|
|
592
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
593
|
-
<div class="fragment"><div class="line"><a name="
|
|
592
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00084">84</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
593
|
+
<div class="fragment"><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> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> interleavingStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">analyzeInterleaving</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> interleavingEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>(<span class="keyword">true</span>));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</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#l00175">SVFBasicTypes.h:175</a></div></div>
|
|
594
594
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
|
|
595
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
595
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca306b97c6dcd47a8f407038436473a2"><div class="ttname"><a href="classSVF_1_1MHP.html#aca306b97c6dcd47a8f407038436473a2">SVF::MHP::interleavingTime</a></div><div class="ttdeci">double interleavingTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00285">MHP.h:285</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="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
|
|
598
598
|
<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#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
599
599
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00160">SVFBasicTypes.h:160</a></div></div>
|
|
600
|
-
<div class="ttc" id="classSVF_1_1MHP_html_adfd90a8d20d630bc3813f5ed71d3abf7"><div class="ttname"><a href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">SVF::MHP::analyzeInterleaving</a></div><div class="ttdeci">void analyzeInterleaving()</div><div class="ttdoc">Analyze thread interleaving. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
600
|
+
<div class="ttc" id="classSVF_1_1MHP_html_adfd90a8d20d630bc3813f5ed71d3abf7"><div class="ttname"><a href="classSVF_1_1MHP.html#adfd90a8d20d630bc3813f5ed71d3abf7">SVF::MHP::analyzeInterleaving</a></div><div class="ttdeci">void analyzeInterleaving()</div><div class="ttdoc">Analyze thread interleaving. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00099">MHP.cpp:99</a></div></div>
|
|
601
601
|
<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#l00155">SVFBasicTypes.h:155</a></div></div>
|
|
602
602
|
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
603
603
|
</div><!-- fragment -->
|
|
@@ -624,8 +624,8 @@ Private Member Functions</h2></td></tr>
|
|
|
624
624
|
<p>handle candidate function</p>
|
|
625
625
|
<p>update non-candidate functions' interleaving </p>
|
|
626
626
|
|
|
627
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
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#l00338">TCT.h:338</a></div></div>
|
|
627
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00099">99</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
628
|
+
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</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="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</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="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rootTid = it->first;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</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="l00106"></a><span class="lineno"> 106</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="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(rootcts,rootTid);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">updateAncestorThreads</a>(rootTid);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1MHP.html#a23ab5a03b7c00ba0ebac65568a83a5cc">updateSiblingThreads</a>(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">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="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_1CxtThreadStmt.html">CxtThreadStmt</a> cts = <a class="code" href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">popFromCTSWorkList</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</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="l00116"></a><span class="lineno"> 116</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="l00117"></a><span class="lineno"> 117</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="l00118"></a><span class="lineno"> 118</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="l00119"></a><span class="lineno"> 119</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="l00120"></a><span class="lineno"> 120</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="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="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#a2c1e4fac7b810021939ed26307d37816">handleNonCandidateFun</a>(cts);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">isTDFork</a>(curInst))</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>  <a class="code" href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">handleFork</a>(cts,rootTid);</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>  <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="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">handleJoin</a>(cts,rootTid);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">else</span> <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="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1MHP.html#af769afe6ba6baccda5a497df181c9fb0">handleCall</a>(cts,rootTid);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(curInst))</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">handleRet</a>(cts);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</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>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">updateNonCandidateFunInterleaving</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa3e6c78eb346a52bbaaac2610573604a">Options::PrintInterLev</a>)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">printInterleaving</a>();</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>  <a class="code" href="classSVF_1_1MHP.html#a6990ff8e3efe5af365c8205b7ced38ed">validateResults</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</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#l00360">TCT.h:360</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
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#l00147">SVFUtil.cpp:147</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>
|
|
@@ -635,35 +635,35 @@ Private Member Functions</h2></td></tr>
|
|
|
635
635
|
<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>
|
|
636
636
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
|
|
637
637
|
<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>
|
|
638
|
-
<div class="ttc" id="classSVF_1_1MHP_html_abeb76ad63d9362ba8fa8f7088b0d942b"><div class="ttname"><a href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">SVF::MHP::updateNonCandidateFunInterleaving</a></div><div class="ttdeci">void updateNonCandidateFunInterleaving()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
639
|
-
<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#
|
|
638
|
+
<div class="ttc" id="classSVF_1_1MHP_html_abeb76ad63d9362ba8fa8f7088b0d942b"><div class="ttname"><a href="classSVF_1_1MHP.html#abeb76ad63d9362ba8fa8f7088b0d942b">SVF::MHP::updateNonCandidateFunInterleaving</a></div><div class="ttdeci">void updateNonCandidateFunInterleaving()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00170">MHP.cpp:170</a></div></div>
|
|
639
|
+
<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#l00381">MHP.cpp:381</a></div></div>
|
|
640
640
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00343">GenericGraph.h:343</a></div></div>
|
|
641
641
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
642
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a2c1e4fac7b810021939ed26307d37816"><div class="ttname"><a href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">SVF::MHP::handleNonCandidateFun</a></div><div class="ttdeci">void handleNonCandidateFun(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle non-candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
642
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a2c1e4fac7b810021939ed26307d37816"><div class="ttname"><a href="classSVF_1_1MHP.html#a2c1e4fac7b810021939ed26307d37816">SVF::MHP::handleNonCandidateFun</a></div><div class="ttdeci">void handleNonCandidateFun(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle non-candidate function. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00206">MHP.cpp:206</a></div></div>
|
|
643
643
|
<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>
|
|
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
|
-
<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#
|
|
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#l00309">MHP.cpp:309</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="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#
|
|
647
|
+
<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#l00432">MHP.cpp:432</a></div></div>
|
|
648
648
|
<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
649
|
<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>
|
|
650
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6990ff8e3efe5af365c8205b7ced38ed"><div class="ttname"><a href="classSVF_1_1MHP.html#a6990ff8e3efe5af365c8205b7ced38ed">SVF::MHP::validateResults</a></div><div class="ttdeci">void validateResults()</div><div class="ttdoc">Use RCResultValidator to validate mhp results. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
651
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a76ac9d388529f090ab6dad5829dd0753"><div class="ttname"><a href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">SVF::MHP::handleRet</a></div><div class="ttdeci">void handleRet(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
652
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a22f7dc5043fed97f1b4b273b8b710415"><div class="ttname"><a href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">SVF::MHP::printInterleaving</a></div><div class="ttdeci">void printInterleaving()</div><div class="ttdoc">Print interleaving results. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
653
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
654
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a71183ff98500d1ce49170bab61fe664e"><div class="ttname"><a href="classSVF_1_1MHP.html#a71183ff98500d1ce49170bab61fe664e">SVF::MHP::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet & getCallee(const Instruction *inst, PTACallGraph::FunctionSet &callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
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_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#
|
|
657
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a8a95f8ae419b66310ce6f572caea2ca5"><div class="ttname"><a href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">SVF::MHP::handleFork</a></div><div class="ttdeci">void handleFork(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
658
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
659
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ad8d3aa1a12fb1e8668eb4138fbe23b7d"><div class="ttname"><a href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">SVF::MHP::popFromCTSWorkList</a></div><div class="ttdeci">CxtThreadStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
660
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a3a535274cd3349a05eeccf3c9231396a"><div class="ttname"><a href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">SVF::MHP::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
661
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ae9423c868ba4d26337428b96db9fc77b"><div class="ttname"><a href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">SVF::MHP::updateAncestorThreads</a></div><div class="ttdeci">void updateAncestorThreads(NodeID tid)</div><div class="ttdoc">Update Ancestor and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
662
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aeabf2e9ec8b1ec874503c83cc65e1205"><div class="ttname"><a href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
663
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
650
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6990ff8e3efe5af365c8205b7ced38ed"><div class="ttname"><a href="classSVF_1_1MHP.html#a6990ff8e3efe5af365c8205b7ced38ed">SVF::MHP::validateResults</a></div><div class="ttdeci">void validateResults()</div><div class="ttdoc">Use RCResultValidator to validate mhp results. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00660">MHP.cpp:660</a></div></div>
|
|
651
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a76ac9d388529f090ab6dad5829dd0753"><div class="ttname"><a href="classSVF_1_1MHP.html#a76ac9d388529f090ab6dad5829dd0753">SVF::MHP::handleRet</a></div><div class="ttdeci">void handleRet(const CxtThreadStmt &cts)</div><div class="ttdoc">Handle return. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00336">MHP.cpp:336</a></div></div>
|
|
652
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a22f7dc5043fed97f1b4b273b8b710415"><div class="ttname"><a href="classSVF_1_1MHP.html#a22f7dc5043fed97f1b4b273b8b710415">SVF::MHP::printInterleaving</a></div><div class="ttdeci">void printInterleaving()</div><div class="ttdoc">Print interleaving results. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00675">MHP.cpp:675</a></div></div>
|
|
653
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00276">MHP.h:276</a></div></div>
|
|
654
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a71183ff98500d1ce49170bab61fe664e"><div class="ttname"><a href="classSVF_1_1MHP.html#a71183ff98500d1ce49170bab61fe664e">SVF::MHP::getCallee</a></div><div class="ttdeci">const PTACallGraph::FunctionSet & getCallee(const Instruction *inst, PTACallGraph::FunctionSet &callees)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00143">MHP.h:143</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#l00270">TCT.h:270</a></div></div>
|
|
656
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a653460ed316804bea377eecdde412d36"><div class="ttname"><a href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">SVF::MHP::getInterleavingThreads</a></div><div class="ttdeci">const NodeBS & getInterleavingThreads(const CxtThreadStmt &cts)</div><div class="ttdoc">Get interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00114">MHP.h:114</a></div></div>
|
|
657
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a8a95f8ae419b66310ce6f572caea2ca5"><div class="ttname"><a href="classSVF_1_1MHP.html#a8a95f8ae419b66310ce6f572caea2ca5">SVF::MHP::handleFork</a></div><div class="ttdeci">void handleFork(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle fork. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00227">MHP.cpp:227</a></div></div>
|
|
658
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6343dd11dd75d3730dc463321a11445e"><div class="ttname"><a href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">SVF::MHP::addInterleavingThread</a></div><div class="ttdeci">void addInterleavingThread(const CxtThreadStmt &tgr, NodeID tid)</div><div class="ttdoc">Add/Remove interleaving thread for statement inst. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00175">MHP.h:175</a></div></div>
|
|
659
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ad8d3aa1a12fb1e8668eb4138fbe23b7d"><div class="ttname"><a href="classSVF_1_1MHP.html#ad8d3aa1a12fb1e8668eb4138fbe23b7d">SVF::MHP::popFromCTSWorkList</a></div><div class="ttdeci">CxtThreadStmt popFromCTSWorkList()</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00247">MHP.h:247</a></div></div>
|
|
660
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a3a535274cd3349a05eeccf3c9231396a"><div class="ttname"><a href="classSVF_1_1MHP.html#a3a535274cd3349a05eeccf3c9231396a">SVF::MHP::handleJoin</a></div><div class="ttdeci">void handleJoin(const CxtThreadStmt &cts, NodeID rootTid)</div><div class="ttdoc">Handle join. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00257">MHP.cpp:257</a></div></div>
|
|
661
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ae9423c868ba4d26337428b96db9fc77b"><div class="ttname"><a href="classSVF_1_1MHP.html#ae9423c868ba4d26337428b96db9fc77b">SVF::MHP::updateAncestorThreads</a></div><div class="ttdeci">void updateAncestorThreads(NodeID tid)</div><div class="ttdoc">Update Ancestor and sibling threads. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00397">MHP.cpp:397</a></div></div>
|
|
662
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aeabf2e9ec8b1ec874503c83cc65e1205"><div class="ttname"><a href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">SVF::MHP::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *call)</div><div class="ttdoc">Whether it is a fork site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00254">MHP.h:254</a></div></div>
|
|
663
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00274">MHP.h:274</a></div></div>
|
|
664
664
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
665
665
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00155">SVFBasicTypes.h:155</a></div></div>
|
|
666
|
-
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
666
|
+
<div class="ttc" id="classSVF_1_1MHP_html_ab566508ffd73abd4d5ad047a1d7f9c27"><div class="ttname"><a href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">SVF::MHP::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *call)</div><div class="ttdoc">Whether it is a join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00259">MHP.h:259</a></div></div>
|
|
667
667
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
|
|
668
668
|
</div><!-- fragment -->
|
|
669
669
|
</div>
|
|
@@ -702,13 +702,13 @@ Private Member Functions</h2></td></tr>
|
|
|
702
702
|
</table>
|
|
703
703
|
</div><div class="memdoc">
|
|
704
704
|
|
|
705
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
706
|
-
<div class="fragment"><div class="line"><a name="
|
|
705
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00638">638</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
706
|
+
<div class="fragment"><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> </div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts1 = *it1;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts2 = *it2;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  }</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>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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#l00220">MHP.h:220</a></div></div>
|
|
707
707
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
708
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
709
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
708
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a6841b147e2a681ea372bdddd53616294"><div class="ttname"><a href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">SVF::MHP::hasThreadStmtSet</a></div><div class="ttdeci">bool hasThreadStmtSet(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00132">MHP.h:132</a></div></div>
|
|
709
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a28031502c4f8f0d4012c0827c57efb32"><div class="ttname"><a href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">SVF::MHP::CxtThreadStmtSet</a></div><div class="ttdeci">Set< CxtThreadStmt > CxtThreadStmtSet</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00054">MHP.h:54</a></div></div>
|
|
710
710
|
<div class="ttc" id="classSVF_1_1CxtThreadStmt_html"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html">SVF::CxtThreadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00123">CxtStmt.h:123</a></div></div>
|
|
711
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
711
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a49504524c0d3e53c769cdbfd9ec1ccb0"><div class="ttname"><a href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">SVF::MHP::getThreadStmtSet</a></div><div class="ttdeci">const CxtThreadStmtSet & getThreadStmtSet(const Instruction *inst) const</div><div class="ttdoc">Get/has ThreadStmt. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00126">MHP.h:126</a></div></div>
|
|
712
712
|
</div><!-- fragment -->
|
|
713
713
|
</div>
|
|
714
714
|
</div>
|
|
@@ -746,9 +746,9 @@ Private Member Functions</h2></td></tr>
|
|
|
746
746
|
</table>
|
|
747
747
|
</div><div class="memdoc">
|
|
748
748
|
|
|
749
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
750
|
-
<div class="fragment"><div class="line"><a name="
|
|
751
|
-
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
749
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00143">143</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
750
|
+
<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">getCBN</a>(inst), callees);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> callees;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</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#l00273">MHP.h:273</a></div></div>
|
|
751
|
+
<div class="ttc" id="classSVF_1_1MHP_html_aca4903cf3e3ef5b2ed5959e5e6181d55"><div class="ttname"><a href="classSVF_1_1MHP.html#aca4903cf3e3ef5b2ed5959e5e6181d55">SVF::MHP::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00088">MHP.h:88</a></div></div>
|
|
752
752
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a317e09edb29b110cf4273009551d31ec"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">SVF::PTACallGraph::getCallees</a></div><div class="ttdeci">void getCallees(const CallICFGNode *cs, FunctionSet &callees)</div><div class="ttdoc">Get all callees for a callsite. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00382">PTACallGraph.h:382</a></div></div>
|
|
753
753
|
</div><!-- fragment -->
|
|
754
754
|
</div>
|
|
@@ -777,9 +777,9 @@ Private Member Functions</h2></td></tr>
|
|
|
777
777
|
</table>
|
|
778
778
|
</div><div class="memdoc">
|
|
779
779
|
|
|
780
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
781
|
-
<div class="fragment"><div class="line"><a name="
|
|
782
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
780
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00088">88</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
781
|
+
<div class="fragment"><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">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="l00091"></a><span class="lineno"> 91</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#l00172">TCT.h:172</a></div></div>
|
|
782
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00274">MHP.h:274</a></div></div>
|
|
783
783
|
</div><!-- fragment -->
|
|
784
784
|
</div>
|
|
785
785
|
</div>
|
|
@@ -820,10 +820,10 @@ Private Member Functions</h2></td></tr>
|
|
|
820
820
|
<p>Return thread id(s) which are directly or indirectly joined at this join site. </p>
|
|
821
821
|
<p>Return thread id(s) which are directly or indirectly joined at this join site </p>
|
|
822
822
|
|
|
823
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
824
|
-
<div class="fragment"><div class="line"><a name="
|
|
823
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00506">506</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
824
|
+
<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">getDirAndIndJoinedTid</a>(cs);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a34ec31a6859cd94b525bfa26e549d8c1"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a34ec31a6859cd94b525bfa26e549d8c1">SVF::ForkJoinAnalysis::getDirAndIndJoinedTid</a></div><div class="ttdeci">NodeBS getDirAndIndJoinedTid(const CxtStmt &cs)</div><div class="ttdoc">Get directly and indirectly joined threadIDs based on a context-sensitive join site. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00990">MHP.cpp:990</a></div></div>
|
|
825
825
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
826
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
826
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00275">MHP.h:275</a></div></div>
|
|
827
827
|
</div><!-- fragment -->
|
|
828
828
|
</div>
|
|
829
829
|
</div>
|
|
@@ -853,8 +853,8 @@ Private Member Functions</h2></td></tr>
|
|
|
853
853
|
|
|
854
854
|
<p>Get interleaving thread for statement inst. </p>
|
|
855
855
|
|
|
856
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
857
|
-
<div class="fragment"><div class="line"><a name="
|
|
856
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00114">114</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
857
|
+
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[cts];</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
|
|
858
858
|
</div><!-- fragment -->
|
|
859
859
|
</div>
|
|
860
860
|
</div>
|
|
@@ -894,9 +894,9 @@ Private Member Functions</h2></td></tr>
|
|
|
894
894
|
|
|
895
895
|
<p>Get the next instructions following control flow. </p>
|
|
896
896
|
|
|
897
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
898
|
-
<div class="fragment"><div class="line"><a name="
|
|
899
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
897
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00226">226</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
898
|
+
<div class="fragment"><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">getNextInsts</a>(inst,instVec);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_a97c3081d0648a8d483b07f23bbd1b6bf"><div class="ttname"><a href="classSVF_1_1TCT.html#a97c3081d0648a8d483b07f23bbd1b6bf">SVF::TCT::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *inst, InstVec &instSet)</div><div class="ttdoc">Get the next instructions following control flow. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00471">TCT.cpp:471</a></div></div>
|
|
899
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00274">MHP.h:274</a></div></div>
|
|
900
900
|
</div><!-- fragment -->
|
|
901
901
|
</div>
|
|
902
902
|
</div>
|
|
@@ -925,8 +925,8 @@ Private Member Functions</h2></td></tr>
|
|
|
925
925
|
|
|
926
926
|
<p>Get Thread Creation Tree. </p>
|
|
927
927
|
|
|
928
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
929
|
-
<div class="fragment"><div class="line"><a name="
|
|
928
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00082">82</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
929
|
+
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a176eefb65e4ba99ee70513c8add44176"><div class="ttname"><a href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">SVF::MHP::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdoc">TCT. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00274">MHP.h:274</a></div></div>
|
|
930
930
|
</div><!-- fragment -->
|
|
931
931
|
</div>
|
|
932
932
|
</div>
|
|
@@ -955,8 +955,8 @@ Private Member Functions</h2></td></tr>
|
|
|
955
955
|
|
|
956
956
|
<p>Get <a class="el" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>. </p>
|
|
957
957
|
|
|
958
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
959
|
-
<div class="fragment"><div class="line"><a name="
|
|
958
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00076">76</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
959
|
+
<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</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#l00273">MHP.h:273</a></div></div>
|
|
960
960
|
</div><!-- fragment -->
|
|
961
961
|
</div>
|
|
962
962
|
</div>
|
|
@@ -986,8 +986,8 @@ Private Member Functions</h2></td></tr>
|
|
|
986
986
|
|
|
987
987
|
<p>Get/has ThreadStmt. </p>
|
|
988
988
|
|
|
989
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
990
|
-
<div class="fragment"><div class="line"><a name="
|
|
989
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00126">126</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
990
|
+
<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  InstToThreadStmtSetMap::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.find(inst);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  assert(it!=<a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.end() && <span class="stringliteral">"no thread access the instruction?"</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00278">MHP.h:278</a></div></div>
|
|
991
991
|
</div><!-- fragment -->
|
|
992
992
|
</div>
|
|
993
993
|
</div>
|
|
@@ -1028,9 +1028,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1028
1028
|
<p>Handle call. </p>
|
|
1029
1029
|
<p>Handle call instruction in the current thread scope (excluding any fork site) </p>
|
|
1030
1030
|
|
|
1031
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1032
|
-
<div class="fragment"><div class="line"><a name="
|
|
1033
|
-
<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#
|
|
1031
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00309">309</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1032
|
+
<div class="fragment"><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</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="l00313"></a><span class="lineno"> 313</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="l00314"></a><span class="lineno"> 314</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="l00315"></a><span class="lineno"> 315</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="l00316"></a><span class="lineno"> 316</span>  {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">for</span> (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="l00318"></a><span class="lineno"> 318</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="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfcallee = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</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="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(svfcallee))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">pushCxt</a>(newCxt,call,callee);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</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="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> }</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#l00273">MHP.h:273</a></div></div>
|
|
1033
|
+
<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#l00088">MHP.h:88</a></div></div>
|
|
1034
1034
|
<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#l00125">BasicTypes.h:125</a></div></div>
|
|
1035
1035
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
1036
1036
|
<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>
|
|
@@ -1039,16 +1039,16 @@ Private Member Functions</h2></td></tr>
|
|
|
1039
1039
|
<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>
|
|
1040
1040
|
<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>
|
|
1041
1041
|
<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>
|
|
1042
|
-
<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#
|
|
1042
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
1043
1043
|
<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>
|
|
1044
1044
|
<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#l00151">BasicTypes.h:151</a></div></div>
|
|
1045
|
-
<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#
|
|
1045
|
+
<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#l00188">TCT.h:188</a></div></div>
|
|
1046
1046
|
<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>
|
|
1047
1047
|
<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>
|
|
1048
|
-
<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#
|
|
1048
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1049
1049
|
<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>
|
|
1050
1050
|
<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="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
|
|
1051
|
-
<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#
|
|
1051
|
+
<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#l00231">MHP.h:231</a></div></div>
|
|
1052
1052
|
</div><!-- fragment -->
|
|
1053
1053
|
</div>
|
|
1054
1054
|
</div>
|
|
@@ -1089,31 +1089,31 @@ Private Member Functions</h2></td></tr>
|
|
|
1089
1089
|
<p>Handle fork. </p>
|
|
1090
1090
|
<p>Handle fork </p>
|
|
1091
1091
|
|
|
1092
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1093
|
-
<div class="fragment"><div class="line"><a name="
|
|
1094
|
-
<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#
|
|
1092
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00227">227</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1093
|
+
<div class="fragment"><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</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="l00231"></a><span class="lineno"> 231</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="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  assert(<a class="code" href="classSVF_1_1MHP.html#aeabf2e9ec8b1ec874503c83cc65e1205">isTDFork</a>(call));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</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="l00235"></a><span class="lineno"> 235</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="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">for</span> (ThreadCallGraph::ForkEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(cbn),</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  ecgIt = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfroutine = (*cgIt)->getDstNode()->getFunction();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* routine = svfroutine-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = curCxt;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classSVF_1_1MHP.html#a67e2d43f0e35cc46eb7680ec66a4fe44">pushCxt</a>(newCxt,call,routine);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</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="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classSVF_1_1CxtThread.html">CxtThread</a> ct(newCxt,call);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newcts(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a7b4ad0b052e1f8b6869733eef15f4e4d">getTCTNode</a>(ct)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(),ct.getContext(),stmt);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newcts,cts);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</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#l00273">MHP.h:273</a></div></div>
|
|
1094
|
+
<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#l00088">MHP.h:88</a></div></div>
|
|
1095
1095
|
<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>
|
|
1096
1096
|
<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>
|
|
1097
1097
|
<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#l00125">BasicTypes.h:125</a></div></div>
|
|
1098
1098
|
<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>
|
|
1099
1099
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
1100
|
-
<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#
|
|
1101
|
-
<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#
|
|
1100
|
+
<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#l00381">MHP.cpp:381</a></div></div>
|
|
1101
|
+
<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#l00198">TCT.h:198</a></div></div>
|
|
1102
1102
|
<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>
|
|
1103
1103
|
<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#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1104
1104
|
<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>
|
|
1105
1105
|
<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>
|
|
1106
1106
|
<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>
|
|
1107
|
-
<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#
|
|
1107
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
1108
1108
|
<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>
|
|
1109
1109
|
<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#l00151">BasicTypes.h:151</a></div></div>
|
|
1110
|
-
<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#
|
|
1110
|
+
<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#l00188">TCT.h:188</a></div></div>
|
|
1111
1111
|
<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>
|
|
1112
1112
|
<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>
|
|
1113
|
-
<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#
|
|
1114
|
-
<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#
|
|
1113
|
+
<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#l00254">MHP.h:254</a></div></div>
|
|
1114
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1115
1115
|
<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>
|
|
1116
|
-
<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#
|
|
1116
|
+
<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#l00231">MHP.h:231</a></div></div>
|
|
1117
1117
|
</div><!-- fragment -->
|
|
1118
1118
|
</div>
|
|
1119
1119
|
</div>
|
|
@@ -1144,13 +1144,13 @@ Private Member Functions</h2></td></tr>
|
|
|
1144
1144
|
<p>Handle intra. </p>
|
|
1145
1145
|
<p>Handling intraprocedural statements (successive statements on the CFG ) </p>
|
|
1146
1146
|
|
|
1147
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1148
|
-
<div class="fragment"><div class="line"><a name="
|
|
1149
|
-
<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#
|
|
1147
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00381">381</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1148
|
+
<div class="fragment"><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> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>(),nextInsts);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</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="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>(),*nit);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> }</div><div class="ttc" id="classSVF_1_1CxtThreadStmt_html_a3b8f641f2fb7ade7052cae1ee6463884"><div class="ttname"><a href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">SVF::CxtThreadStmt::getTid</a></div><div class="ttdeci">NodeID getTid() const</div><div class="ttdoc">Return current context. </div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00139">CxtStmt.h:139</a></div></div>
|
|
1149
|
+
<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#l00226">MHP.h:226</a></div></div>
|
|
1150
1150
|
<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>
|
|
1151
|
-
<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#
|
|
1151
|
+
<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#l00052">MHP.h:52</a></div></div>
|
|
1152
1152
|
<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>
|
|
1153
|
-
<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#
|
|
1153
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
1154
1154
|
<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>
|
|
1155
1155
|
</div><!-- fragment -->
|
|
1156
1156
|
</div>
|
|
@@ -1193,29 +1193,29 @@ Private Member Functions</h2></td></tr>
|
|
|
1193
1193
|
<p>Handle join </p>
|
|
1194
1194
|
<p>for the join site in a loop loop which does not join the current thread we process the loop exit </p>
|
|
1195
1195
|
|
|
1196
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1197
|
-
<div class="fragment"><div class="line"><a name="
|
|
1196
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00257">257</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1197
|
+
<div class="fragment"><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <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="l00261"></a><span class="lineno"> 261</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="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  assert(<a class="code" href="classSVF_1_1MHP.html#ab566508ffd73abd4d5ad047a1d7f9c27">isTDJoin</a>(call));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> joinedTids = <a class="code" href="classSVF_1_1MHP.html#a9b89800fe8089fd7521ef3f415f6eb12">getDirAndIndJoinedTid</a>(curCxt,call);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(!joinedTids.<a class="code" href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">empty</a>())</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(call))</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  joinLoop->getExitBlocks(exitbbs);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</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,&(eb->front()));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afa0d341a2fb7b05522dc6e178eab7e8b">isJoinInSymmetricLoop</a>(curCxt,call))</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="classSVF_1_1MHP.html#a5546cb50ca769218a871cdda08a25d18">rmInterleavingThread</a>(newCts,joinedTids,call);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1MHP.html#a5546cb50ca769218a871cdda08a25d18">rmInterleavingThread</a>(cts,joinedTids,call);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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\t match join site "</span> << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(call) << <span class="stringliteral">" for thread "</span> << rootTid << <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">Loop</a>* joinLoop = <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a3449439792a54c847c67b3041094db49">getJoinLoop</a>(call))</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="namespaceSVF.html#a02be4933b76c2baa7fdbe8b290e12bb3">SmallBBVector</a> exitbbs;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  joinLoop->getExitBlocks(exitbbs);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">while</span>(!exitbbs.empty())</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* eb = exitbbs.pop_back_val();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>(),&(eb->front()));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="classSVF_1_1MHP.html#af4d6f0884ce18ea5caf0dfd9799d1aae">handleIntra</a>(cts);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> }</div><div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1198
1198
|
<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#l00175">SVFBasicTypes.h:175</a></div></div>
|
|
1199
1199
|
<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#l00119">SVFBasicTypes.h:119</a></div></div>
|
|
1200
1200
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
1201
|
-
<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#
|
|
1201
|
+
<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#l00381">MHP.cpp:381</a></div></div>
|
|
1202
1202
|
<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>
|
|
1203
1203
|
<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>
|
|
1204
1204
|
<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#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1205
1205
|
<div class="ttc" id="namespaceSVF_html_abf85e29310b2e4df8925d00a5c081314"><div class="ttname"><a href="namespaceSVF.html#abf85e29310b2e4df8925d00a5c081314">SVF::Loop</a></div><div class="ttdeci">llvm::Loop Loop</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00078">BasicTypes.h:78</a></div></div>
|
|
1206
|
-
<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#
|
|
1206
|
+
<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#l00371">MHP.h:371</a></div></div>
|
|
1207
1207
|
<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>
|
|
1208
|
-
<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#
|
|
1208
|
+
<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#l00515">MHP.cpp:515</a></div></div>
|
|
1209
1209
|
<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#l00390">SVFUtil.cpp:390</a></div></div>
|
|
1210
|
-
<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#
|
|
1210
|
+
<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#l00506">MHP.cpp:506</a></div></div>
|
|
1211
1211
|
<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>
|
|
1212
|
-
<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#
|
|
1212
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
1213
1213
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
1214
|
-
<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#
|
|
1214
|
+
<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#l00275">MHP.h:275</a></div></div>
|
|
1215
1215
|
<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>
|
|
1216
1216
|
<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#l00155">SVFBasicTypes.h:155</a></div></div>
|
|
1217
|
-
<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#
|
|
1218
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a5546cb50ca769218a871cdda08a25d18"><div class="ttname"><a href="classSVF_1_1MHP.html#a5546cb50ca769218a871cdda08a25d18">SVF::MHP::rmInterleavingThread</a></div><div class="ttdeci">void rmInterleavingThread(const CxtThreadStmt &tgr, const NodeBS &tids, const Instruction *joinsite)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1217
|
+
<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#l00259">MHP.h:259</a></div></div>
|
|
1218
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a5546cb50ca769218a871cdda08a25d18"><div class="ttname"><a href="classSVF_1_1MHP.html#a5546cb50ca769218a871cdda08a25d18">SVF::MHP::rmInterleavingThread</a></div><div class="ttdeci">void rmInterleavingThread(const CxtThreadStmt &tgr, const NodeBS &tids, const Instruction *joinsite)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00192">MHP.h:192</a></div></div>
|
|
1219
1219
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_aea5389ad7e5fe4c8bef686940a1a6056"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#aea5389ad7e5fe4c8bef686940a1a6056">SVF::SparseBitVector::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01097">SparseBitVector.h:1097</a></div></div>
|
|
1220
1220
|
</div><!-- fragment -->
|
|
1221
1221
|
</div>
|
|
@@ -1247,24 +1247,24 @@ Private Member Functions</h2></td></tr>
|
|
|
1247
1247
|
<p>Handle non-candidate function. </p>
|
|
1248
1248
|
<p>Handle call instruction in the current thread scope (excluding any fork site) </p>
|
|
1249
1249
|
|
|
1250
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1251
|
-
<div class="fragment"><div class="line"><a name="
|
|
1250
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00206">206</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1251
|
+
<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* curfun = curInst->getParent()->getParent();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  assert(curInst == &(curfun->getEntryBlock().front()) && <span class="stringliteral">"curInst is not the entry of non candidate function."</span>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</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="l00212"></a><span class="lineno"> 212</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="l00213"></a><span class="lineno"> 213</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="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</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="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(callee))</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <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="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts, cts);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</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#l00273">MHP.h:273</a></div></div>
|
|
1252
1252
|
<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>
|
|
1253
1253
|
<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>
|
|
1254
1254
|
<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#l00125">BasicTypes.h:125</a></div></div>
|
|
1255
1255
|
<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>
|
|
1256
1256
|
<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>
|
|
1257
1257
|
<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#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1258
|
-
<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#
|
|
1258
|
+
<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#l00177">TCT.h:177</a></div></div>
|
|
1259
1259
|
<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>
|
|
1260
1260
|
<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>
|
|
1261
1261
|
<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>
|
|
1262
1262
|
<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>
|
|
1263
|
-
<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#
|
|
1263
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
1264
1264
|
<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#l00151">BasicTypes.h:151</a></div></div>
|
|
1265
1265
|
<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>
|
|
1266
1266
|
<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>
|
|
1267
|
-
<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#
|
|
1267
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1268
1268
|
<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>
|
|
1269
1269
|
<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="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
|
|
1270
1270
|
</div><!-- fragment -->
|
|
@@ -1297,25 +1297,25 @@ Private Member Functions</h2></td></tr>
|
|
|
1297
1297
|
<p>Handle return. </p>
|
|
1298
1298
|
<p>Handle return instruction in the current thread scope (excluding any join site) </p>
|
|
1299
1299
|
|
|
1300
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1301
|
-
<div class="fragment"><div class="line"><a name="
|
|
1300
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00336">336</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1301
|
+
<div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* curFunNode = <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a21bcc063a406eb8650df42cf5ced68c9">getSVFFun</a>(cts.<a class="code" href="classSVF_1_1CxtStmt.html#a5e8c4b10eb5c3240d2e21a020ed834a6">getStmt</a>()->getParent()->getParent()));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin(), eit = curFunNode-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().end(); it!=eit; ++it)</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *it;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ThreadForkEdge>(edge) || SVFUtil::isa<ThreadJoinEdge>(edge))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->directCallsBegin(),</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  ecit = (edge)->directCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">matchCxt</a>(newCxt,(*cit)->getCallSite(),curFunNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>((*cit)->getCallSite(),nextInsts);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">for</span>(PTACallGraphEdge::CallInstSet::const_iterator cit = (edge)->indirectCallsBegin(),</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  ecit = (edge)->indirectCallsEnd(); cit!=ecit; ++cit)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="namespaceSVF.html#ab700523619b089b952498f39a7f5b6b1">CallStrCxt</a> newCxt = cts.<a class="code" href="classSVF_1_1CxtStmt.html#a3ce19b8f2de2e199ed4165dbe9d21f28">getContext</a>();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afee99dd3ca2ff68789864423fc9358e0">matchCxt</a>(newCxt,(*cit)->getCallSite(),curFunNode-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()))</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>((*cit)->getCallSite(),nextInsts);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> newCts(cts.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>(),newCxt,*nit);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(newCts,cts);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</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#l00273">MHP.h:273</a></div></div>
|
|
1302
1302
|
<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>
|
|
1303
1303
|
<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>
|
|
1304
1304
|
<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>
|
|
1305
|
-
<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#
|
|
1305
|
+
<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#l00226">MHP.h:226</a></div></div>
|
|
1306
1306
|
<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>
|
|
1307
1307
|
<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#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
1308
|
-
<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#
|
|
1308
|
+
<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#l00177">TCT.h:177</a></div></div>
|
|
1309
1309
|
<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>
|
|
1310
1310
|
<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>
|
|
1311
1311
|
<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>
|
|
1312
|
-
<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#
|
|
1312
|
+
<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#l00052">MHP.h:52</a></div></div>
|
|
1313
1313
|
<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>
|
|
1314
|
-
<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#
|
|
1314
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
1315
1315
|
<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#l00151">BasicTypes.h:151</a></div></div>
|
|
1316
|
-
<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#
|
|
1316
|
+
<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#l00236">MHP.h:236</a></div></div>
|
|
1317
1317
|
<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>
|
|
1318
|
-
<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#
|
|
1318
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1319
1319
|
<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>
|
|
1320
1320
|
</div><!-- fragment -->
|
|
1321
1321
|
</div>
|
|
@@ -1344,8 +1344,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1344
1344
|
</table>
|
|
1345
1345
|
</div><div class="memdoc">
|
|
1346
1346
|
|
|
1347
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1348
|
-
<div class="fragment"><div class="line"><a name="
|
|
1347
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00118">118</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1348
|
+
<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.find(cts)!=<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>.end();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_afcfc409e625b74cbefd240170627c541"><div class="ttname"><a href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">SVF::MHP::threadStmtToTheadInterLeav</a></div><div class="ttdeci">ThreadStmtToThreadInterleav threadStmtToTheadInterLeav</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00277">MHP.h:277</a></div></div>
|
|
1349
1349
|
</div><!-- fragment -->
|
|
1350
1350
|
</div>
|
|
1351
1351
|
</div>
|
|
@@ -1373,8 +1373,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1373
1373
|
</table>
|
|
1374
1374
|
</div><div class="memdoc">
|
|
1375
1375
|
|
|
1376
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1377
|
-
<div class="fragment"><div class="line"><a name="
|
|
1376
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00132">132</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1377
|
+
<div class="fragment"><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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.find(inst)!=<a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>.end();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a6b238ee6342da990840162845bba547f"><div class="ttname"><a href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">SVF::MHP::instToTSMap</a></div><div class="ttdeci">InstToThreadStmtSetMap instToTSMap</div><div class="ttdoc">Map a statement to its thread interleavings. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00278">MHP.h:278</a></div></div>
|
|
1378
1378
|
</div><!-- fragment -->
|
|
1379
1379
|
</div>
|
|
1380
1380
|
</div>
|
|
@@ -1396,13 +1396,13 @@ Private Member Functions</h2></td></tr>
|
|
|
1396
1396
|
|
|
1397
1397
|
<p>Whether the function is connected from main function in thread call graph. </p>
|
|
1398
1398
|
|
|
1399
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1400
|
-
<div class="fragment"><div class="line"><a name="
|
|
1399
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00531">531</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1400
|
+
<div class="fragment"><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</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="l00534"></a><span class="lineno"> 534</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const PTACallGraphNode*></a> worklist;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <a class="code" href="classSVF_1_1TCT.html#afb579a5bdcc0a1c6b075bb9aae36c237">TCT::PTACGNodeSet</a> visited;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cgnode);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  visited.insert(cgnode);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</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="l00541"></a><span class="lineno"> 541</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="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</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="l00544"></a><span class="lineno"> 544</span>  {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</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="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span> (visited.find(srcNode) == visited.end())</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  visited.insert(srcNode);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(srcNode);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</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#l00273">MHP.h:273</a></div></div>
|
|
1401
1401
|
<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>
|
|
1402
1402
|
<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>
|
|
1403
|
-
<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#
|
|
1403
|
+
<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#l00146">TCT.h:146</a></div></div>
|
|
1404
1404
|
<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>
|
|
1405
|
-
<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#
|
|
1405
|
+
<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#l00177">TCT.h:177</a></div></div>
|
|
1406
1406
|
<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>
|
|
1407
1407
|
<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>
|
|
1408
1408
|
<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>
|
|
@@ -1410,7 +1410,7 @@ Private Member Functions</h2></td></tr>
|
|
|
1410
1410
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00253">SVFBasicTypes.h:253</a></div></div>
|
|
1411
1411
|
<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>
|
|
1412
1412
|
<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>
|
|
1413
|
-
<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#
|
|
1413
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1414
1414
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
|
|
1415
1415
|
</div><!-- fragment -->
|
|
1416
1416
|
</div>
|
|
@@ -1452,9 +1452,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1452
1452
|
<p>Whether thread t1 happens before t2 based on ForkJoin Analysis. </p>
|
|
1453
1453
|
<p>Whether two thread t1 happens-fore t2 </p>
|
|
1454
1454
|
|
|
1455
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1456
|
-
<div class="fragment"><div class="line"><a name="
|
|
1457
|
-
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a86c68ce5fd8825b1593d92a5a5bad389"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">SVF::ForkJoinAnalysis::isHBPair</a></div><div class="ttdeci">bool isHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether thread t1 happens-before thread t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
1455
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00524">524</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1456
|
+
<div class="fragment"><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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">isHBPair</a>(tid1,tid2);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_a98857a1837cef5519c938d07bb771a60"><div class="ttname"><a href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">SVF::MHP::fja</a></div><div class="ttdeci">ForkJoinAnalysis * fja</div><div class="ttdoc">ForJoin Analysis. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00275">MHP.h:275</a></div></div>
|
|
1457
|
+
<div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a86c68ce5fd8825b1593d92a5a5bad389"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a86c68ce5fd8825b1593d92a5a5bad389">SVF::ForkJoinAnalysis::isHBPair</a></div><div class="ttdeci">bool isHBPair(NodeID tid1, NodeID tid2)</div><div class="ttdoc">Whether thread t1 happens-before thread t2. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00342">MHP.h:342</a></div></div>
|
|
1458
1458
|
</div><!-- fragment -->
|
|
1459
1459
|
</div>
|
|
1460
1460
|
</div>
|
|
@@ -1495,10 +1495,10 @@ Private Member Functions</h2></td></tr>
|
|
|
1495
1495
|
<p>Whether a context-sensitive join satisfies symmetric loop pattern. </p>
|
|
1496
1496
|
<p>Whether a context-sensitive join satisfies symmetric loop pattern </p>
|
|
1497
1497
|
|
|
1498
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1499
|
-
<div class="fragment"><div class="line"><a name="
|
|
1498
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00515">515</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1499
|
+
<div class="fragment"><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> {</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <a class="code" href="classSVF_1_1CxtStmt.html">CxtStmt</a> cs(cxt,call);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a98857a1837cef5519c938d07bb771a60">fja</a>-><a class="code" href="classSVF_1_1ForkJoinAnalysis.html#a4e058b920c3648f943f85099690ff44f">isJoinInSymmetricLoop</a>(cs);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> }</div><div class="ttc" id="classSVF_1_1ForkJoinAnalysis_html_a4e058b920c3648f943f85099690ff44f"><div class="ttname"><a href="classSVF_1_1ForkJoinAnalysis.html#a4e058b920c3648f943f85099690ff44f">SVF::ForkJoinAnalysis::isJoinInSymmetricLoop</a></div><div class="ttdeci">const Loop * isJoinInSymmetricLoop(const CxtStmt &cs) const</div><div class="ttdoc">Whether a context-sensitive join satisfies symmetric loop pattern. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00334">MHP.h:334</a></div></div>
|
|
1500
1500
|
<div class="ttc" id="classSVF_1_1CxtStmt_html"><div class="ttname"><a href="classSVF_1_1CxtStmt.html">SVF::CxtStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="CxtStmt_8h_source.html#l00041">CxtStmt.h:41</a></div></div>
|
|
1501
|
-
<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#
|
|
1501
|
+
<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#l00275">MHP.h:275</a></div></div>
|
|
1502
1502
|
</div><!-- fragment -->
|
|
1503
1503
|
</div>
|
|
1504
1504
|
</div>
|
|
@@ -1528,10 +1528,10 @@ Private Member Functions</h2></td></tr>
|
|
|
1528
1528
|
|
|
1529
1529
|
<p>A thread is a multiForked thread if it is in a loop or recursion. </p>
|
|
1530
1530
|
|
|
1531
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1532
|
-
<div class="fragment"><div class="line"><a name="
|
|
1533
|
-
<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#
|
|
1534
|
-
<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#
|
|
1531
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00220">220</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1532
|
+
<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <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="l00223"></a><span class="lineno"> 223</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#l00122">TCT.h:122</a></div></div>
|
|
1533
|
+
<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#l00198">TCT.h:198</a></div></div>
|
|
1534
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1535
1535
|
</div><!-- fragment -->
|
|
1536
1536
|
</div>
|
|
1537
1537
|
</div>
|
|
@@ -1572,11 +1572,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1572
1572
|
<p>Whether a join site must join a thread t. </p>
|
|
1573
1573
|
<p>A join site must join t if (1) t is not a multiforked thread (2) the join site of t is not in recursion </p>
|
|
1574
1574
|
|
|
1575
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1576
|
-
<div class="fragment"><div class="line"><a name="
|
|
1577
|
-
<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#
|
|
1578
|
-
<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#
|
|
1579
|
-
<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#
|
|
1575
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00497">497</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1576
|
+
<div class="fragment"><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  assert(<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="l00500"></a><span class="lineno"> 500</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="l00501"></a><span class="lineno"> 501</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#l00220">MHP.h:220</a></div></div>
|
|
1577
|
+
<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#l00403">TCT.h:403</a></div></div>
|
|
1578
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1579
|
+
<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#l00259">MHP.h:259</a></div></div>
|
|
1580
1580
|
</div><!-- fragment -->
|
|
1581
1581
|
</div>
|
|
1582
1582
|
</div>
|
|
@@ -1617,18 +1617,18 @@ Private Member Functions</h2></td></tr>
|
|
|
1617
1617
|
<p>Thread curTid can be fully joined by parentTid recurively. </p>
|
|
1618
1618
|
<p>Whether curTid can be fully joined by parentTid recursively </p>
|
|
1619
1619
|
|
|
1620
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1621
|
-
<div class="fragment"><div class="line"><a name="
|
|
1620
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00461">461</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1621
|
+
<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span>(parentTid==curTid)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <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="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const TCTNode*></a> worklist;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(curNode);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">while</span>(!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="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="l00472"></a><span class="lineno"> 472</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="l00473"></a><span class="lineno"> 473</span>  {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcID = (*it)->getSrcID();</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</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="l00476"></a><span class="lineno"> 476</span>  {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">if</span>(srcID == parentTid)</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>((*it)->getSrcNode());</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</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>
|
|
1622
1622
|
<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>
|
|
1623
1623
|
<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>
|
|
1624
|
-
<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#
|
|
1625
|
-
<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#
|
|
1624
|
+
<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#l00087">TCT.h:87</a></div></div>
|
|
1625
|
+
<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#l00198">TCT.h:198</a></div></div>
|
|
1626
1626
|
<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>
|
|
1627
|
-
<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#
|
|
1627
|
+
<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#l00351">MHP.h:351</a></div></div>
|
|
1628
1628
|
<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>
|
|
1629
1629
|
<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>
|
|
1630
|
-
<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#
|
|
1631
|
-
<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#
|
|
1630
|
+
<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#l00275">MHP.h:275</a></div></div>
|
|
1631
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1632
1632
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
|
|
1633
1633
|
</div><!-- fragment -->
|
|
1634
1634
|
</div>
|
|
@@ -1659,9 +1659,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1659
1659
|
|
|
1660
1660
|
<p>Whether it is a fork site. </p>
|
|
1661
1661
|
|
|
1662
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1663
|
-
<div class="fragment"><div class="line"><a name="
|
|
1664
|
-
<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#
|
|
1662
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00254">254</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1663
|
+
<div class="fragment"><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(call);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
|
|
1664
|
+
<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#l00273">MHP.h:273</a></div></div>
|
|
1665
1665
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
|
|
1666
1666
|
</div><!-- fragment -->
|
|
1667
1667
|
</div>
|
|
@@ -1692,8 +1692,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1692
1692
|
|
|
1693
1693
|
<p>Whether it is a join site. </p>
|
|
1694
1694
|
|
|
1695
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1696
|
-
<div class="fragment"><div class="line"><a name="
|
|
1695
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00259">259</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1696
|
+
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a4b73d112880ad940e078e801f8725799">tcg</a>-><a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()-><a class="code" href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">isTDJoin</a>(call);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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#l00273">MHP.h:273</a></div></div>
|
|
1697
1697
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
|
|
1698
1698
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html_a8cc5f9ff6039392ce1471cd830973c44"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a8cc5f9ff6039392ce1471cd830973c44">SVF::ThreadAPI::isTDJoin</a></div><div class="ttdeci">bool isTDJoin(const Instruction *inst) const</div><div class="ttdoc">Return true if this call wait for a worker thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00223">ThreadAPI.h:223</a></div></div>
|
|
1699
1699
|
</div><!-- fragment -->
|
|
@@ -1741,9 +1741,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1741
1741
|
|
|
1742
1742
|
<p>Match context. </p>
|
|
1743
1743
|
|
|
1744
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1745
|
-
<div class="fragment"><div class="line"><a name="
|
|
1746
|
-
<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#
|
|
1744
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00236">236</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1745
|
+
<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">matchCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_a9b6dda84d37afadaf80bc2e26986a52e"><div class="ttname"><a href="classSVF_1_1TCT.html#a9b6dda84d37afadaf80bc2e26986a52e">SVF::TCT::matchCxt</a></div><div class="ttdeci">bool matchCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Match context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00520">TCT.cpp:520</a></div></div>
|
|
1746
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1747
1747
|
</div><!-- fragment -->
|
|
1748
1748
|
</div>
|
|
1749
1749
|
</div>
|
|
@@ -1783,11 +1783,11 @@ Private Member Functions</h2></td></tr>
|
|
|
1783
1783
|
|
|
1784
1784
|
<p>Interface to query whether two instructions may happen-in-parallel. </p>
|
|
1785
1785
|
|
|
1786
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1787
|
-
<div class="fragment"><div class="line"><a name="
|
|
1788
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a9a4b6d5c57552b61a62a4dd180aef40c"><div class="ttname"><a href="classSVF_1_1MHP.html#a9a4b6d5c57552b61a62a4dd180aef40c">SVF::MHP::mayHappenInParallelCache</a></div><div class="ttdeci">virtual bool mayHappenInParallelCache(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
1786
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00626">626</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1787
|
+
<div class="fragment"><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <a class="code" href="classSVF_1_1MHP.html#a26ae18993915d76b704232cded9811c2">numOfTotalQueries</a>++;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryStart = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>());</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordtype">bool</span> mhp=<a class="code" href="classSVF_1_1MHP.html#a9a4b6d5c57552b61a62a4dd180aef40c">mayHappenInParallelCache</a>(i1,i2);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> queryEnd = <a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">PTAStat::getClk</a>());</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">interleavingQueriesTime</a> += (queryEnd - queryStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> </div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> }</div><div class="ttc" id="classSVF_1_1MHP_html_ab7d9fe837844197b7acdc0493a50aaa5"><div class="ttname"><a href="classSVF_1_1MHP.html#ab7d9fe837844197b7acdc0493a50aaa5">SVF::MHP::interleavingQueriesTime</a></div><div class="ttdeci">double interleavingQueriesTime</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00286">MHP.h:286</a></div></div>
|
|
1788
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a9a4b6d5c57552b61a62a4dd180aef40c"><div class="ttname"><a href="classSVF_1_1MHP.html#a9a4b6d5c57552b61a62a4dd180aef40c">SVF::MHP::mayHappenInParallelCache</a></div><div class="ttdeci">virtual bool mayHappenInParallelCache(const Instruction *i1, const Instruction *i2)</div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00604">MHP.cpp:604</a></div></div>
|
|
1789
1789
|
<div class="ttc" id="classSVF_1_1SVFStat_html_ac9d390c417df6f6af6b274618b87010d"><div class="ttname"><a href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">SVF::SVFStat::getClk</a></div><div class="ttdeci">static double getClk(bool mark=false)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8cpp_source.html#l00041">SVFStat.cpp:41</a></div></div>
|
|
1790
|
-
<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#
|
|
1790
|
+
<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#l00283">MHP.h:283</a></div></div>
|
|
1791
1791
|
<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#l00182">SVFBasicTypes.h:182</a></div></div>
|
|
1792
1792
|
<div class="ttc" id="SVFBasicTypes_8h_html_ab6f41e9db3675dc689c5492418885041"><div class="ttname"><a href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a></div><div class="ttdeci">#define DOTIMESTAT(X)</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00157">SVFBasicTypes.h:157</a></div></div>
|
|
1793
1793
|
</div><!-- fragment -->
|
|
@@ -1827,13 +1827,13 @@ Private Member Functions</h2></td></tr>
|
|
|
1827
1827
|
</table>
|
|
1828
1828
|
</div><div class="memdoc">
|
|
1829
1829
|
|
|
1830
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1831
|
-
<div class="fragment"><div class="line"><a name="
|
|
1832
|
-
<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#
|
|
1833
|
-
<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#
|
|
1834
|
-
<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#
|
|
1835
|
-
<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#
|
|
1836
|
-
<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#
|
|
1830
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00604">604</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1831
|
+
<div class="fragment"><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <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="l00607"></a><span class="lineno"> 607</span>  {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</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="l00609"></a><span class="lineno"> 609</span>  FuncPairToBool::const_iterator it = <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>.find(funpair);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</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="l00611"></a><span class="lineno"> 611</span>  {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</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="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="classSVF_1_1MHP.html#a1f057ef082484a1997cb02287e063f00">nonCandidateFuncMHPRelMap</a>[funpair] = mhp;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span>(it->second)</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">return</span> it->second;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</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="l00624"></a><span class="lineno"> 624</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#l00279">MHP.h:279</a></div></div>
|
|
1832
|
+
<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#l00284">MHP.h:284</a></div></div>
|
|
1833
|
+
<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#l00566">MHP.cpp:566</a></div></div>
|
|
1834
|
+
<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#l00270">TCT.h:270</a></div></div>
|
|
1835
|
+
<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#l00060">MHP.h:60</a></div></div>
|
|
1836
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1837
1837
|
</div><!-- fragment -->
|
|
1838
1838
|
</div>
|
|
1839
1839
|
</div>
|
|
@@ -1873,17 +1873,17 @@ Private Member Functions</h2></td></tr>
|
|
|
1873
1873
|
<p>Answer <a class="el" href="classSVF_1_1MHP.html">MHP</a> queries For a pair of ThreadStmts (t1,s1) = <l1> (t2,s2) = <l2> They may happen in parallel if (1) t1 == t2 and t1 inloop/incycle (2) t1!=t2 and t1 l2 and t2 l1 </p>
|
|
1874
1874
|
<p>TODO: Any instruction in dead function is assumed no <a class="el" href="classSVF_1_1MHP.html">MHP</a> with others </p>
|
|
1875
1875
|
|
|
1876
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1877
|
-
<div class="fragment"><div class="line"><a name="
|
|
1876
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00566">566</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1877
|
+
<div class="fragment"><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span>(!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i1) || !<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(i2))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet1 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i1);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MHP.html#a28031502c4f8f0d4012c0827c57efb32">CxtThreadStmtSet</a>& tsSet2 = <a class="code" href="classSVF_1_1MHP.html#a49504524c0d3e53c769cdbfd9ec1ccb0">getThreadStmtSet</a>(i2);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it1 = tsSet1.begin(), eit1 = tsSet1.end(); it1!=eit1; ++it1)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts1 = *it1;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> l1 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts1);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">for</span>(CxtThreadStmtSet::const_iterator it2 = tsSet2.begin(), eit2 = tsSet2.end(); it2!=eit2; ++it2)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& ts2 = *it2;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> l2 = <a class="code" href="classSVF_1_1MHP.html#a653460ed316804bea377eecdde412d36">getInterleavingThreads</a>(ts2);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()!=ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>())</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">if</span>(l1.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(ts2.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()) && l2.<a class="code" href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">test</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MHP.html#a041392f704690e89d8acf5ec68d8682c">isMultiForkedThread</a>(ts1.<a class="code" href="classSVF_1_1CxtThreadStmt.html#a3b8f641f2fb7ade7052cae1ee6463884">getTid</a>()))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <a class="code" href="classSVF_1_1MHP.html#ab8bd382e0c70b0feb2a291ecc4043106">numOfMHPQueries</a>++;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</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#l00220">MHP.h:220</a></div></div>
|
|
1878
1878
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a112f2ede1240c95f9fe810f2882fab80"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a112f2ede1240c95f9fe810f2882fab80">SVF::SparseBitVector::test</a></div><div class="ttdeci">bool test(unsigned Idx) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00706">SparseBitVector.h:706</a></div></div>
|
|
1879
1879
|
<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>
|
|
1880
|
-
<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#
|
|
1881
|
-
<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#
|
|
1882
|
-
<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#
|
|
1880
|
+
<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#l00284">MHP.h:284</a></div></div>
|
|
1881
|
+
<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#l00132">MHP.h:132</a></div></div>
|
|
1882
|
+
<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#l00114">MHP.h:114</a></div></div>
|
|
1883
1883
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
1884
|
-
<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#
|
|
1884
|
+
<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#l00054">MHP.h:54</a></div></div>
|
|
1885
1885
|
<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>
|
|
1886
|
-
<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#
|
|
1886
|
+
<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#l00126">MHP.h:126</a></div></div>
|
|
1887
1887
|
</div><!-- fragment -->
|
|
1888
1888
|
</div>
|
|
1889
1889
|
</div>
|
|
@@ -1910,8 +1910,8 @@ Private Member Functions</h2></td></tr>
|
|
|
1910
1910
|
</table>
|
|
1911
1911
|
</div><div class="memdoc">
|
|
1912
1912
|
|
|
1913
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1914
|
-
<div class="fragment"><div class="line"><a name="
|
|
1913
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00247">247</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1914
|
+
<div class="fragment"><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  CxtThreadStmt ctp = <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> ctp;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_a0300d46dd22ee7cc8c62fada694d3acb"><div class="ttname"><a href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">SVF::MHP::cxtStmtList</a></div><div class="ttdeci">CxtThreadStmtWorkList cxtStmtList</div><div class="ttdoc">CxtThreadStmt worklist. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00276">MHP.h:276</a></div></div>
|
|
1915
1915
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
|
|
1916
1916
|
</div><!-- fragment -->
|
|
1917
1917
|
</div>
|
|
@@ -1934,12 +1934,12 @@ Private Member Functions</h2></td></tr>
|
|
|
1934
1934
|
<p>Print interleaving results. </p>
|
|
1935
1935
|
<p>Print interleaving results </p>
|
|
1936
1936
|
|
|
1937
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
1938
|
-
<div class="fragment"><div class="line"><a name="
|
|
1937
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00675">675</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
1938
|
+
<div class="fragment"><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</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="l00678"></a><span class="lineno"> 678</span>  {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</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="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> ii = it->second.begin(), ie = it->second.end();</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  ii != ie; ii++)</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <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="l00684"></a><span class="lineno"> 684</span>  }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"]\n"</span>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> }</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
|
|
1939
1939
|
<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#l00267">SVFUtil.cpp:267</a></div></div>
|
|
1940
1940
|
<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>
|
|
1941
1941
|
<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#l00390">SVFUtil.cpp:390</a></div></div>
|
|
1942
|
-
<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#
|
|
1942
|
+
<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#l00277">MHP.h:277</a></div></div>
|
|
1943
1943
|
</div><!-- fragment -->
|
|
1944
1944
|
</div>
|
|
1945
1945
|
</div>
|
|
@@ -1985,9 +1985,9 @@ Private Member Functions</h2></td></tr>
|
|
|
1985
1985
|
|
|
1986
1986
|
<p>Push calling context. </p>
|
|
1987
1987
|
|
|
1988
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
1989
|
-
<div class="fragment"><div class="line"><a name="
|
|
1990
|
-
<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#
|
|
1988
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00231">231</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
1989
|
+
<div class="fragment"><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">pushCxt</a>(cxt,call,callee);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="ttc" id="classSVF_1_1TCT_html_afc6d7a91cfc98561bcce13425964a39e"><div class="ttname"><a href="classSVF_1_1TCT.html#afc6d7a91cfc98561bcce13425964a39e">SVF::TCT::pushCxt</a></div><div class="ttdeci">void pushCxt(CallStrCxt &cxt, const Instruction *call, const Function *callee)</div><div class="ttdoc">Push calling context. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8cpp_source.html#l00498">TCT.cpp:498</a></div></div>
|
|
1990
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
1991
1991
|
</div><!-- fragment -->
|
|
1992
1992
|
</div>
|
|
1993
1993
|
</div>
|
|
@@ -2017,9 +2017,9 @@ Private Member Functions</h2></td></tr>
|
|
|
2017
2017
|
|
|
2018
2018
|
<p>WorkList helper functions. </p>
|
|
2019
2019
|
|
|
2020
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2021
|
-
<div class="fragment"><div class="line"><a name="
|
|
2022
|
-
<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#
|
|
2020
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00243">243</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2021
|
+
<div class="fragment"><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MHP.html#a0300d46dd22ee7cc8c62fada694d3acb">cxtStmtList</a>.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(cs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
|
|
2022
|
+
<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#l00276">MHP.h:276</a></div></div>
|
|
2023
2023
|
</div><!-- fragment -->
|
|
2024
2024
|
</div>
|
|
2025
2025
|
</div>
|
|
@@ -2063,11 +2063,11 @@ Private Member Functions</h2></td></tr>
|
|
|
2063
2063
|
</table>
|
|
2064
2064
|
</div><div class="memdoc">
|
|
2065
2065
|
|
|
2066
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2067
|
-
<div class="fragment"><div class="line"><a name="
|
|
2068
|
-
<div class="ttc" id="classSVF_1_1MHP_html_acd5b010c22a6590f6ea1a5cedd8f43ba"><div class="ttname"><a href="classSVF_1_1MHP.html#acd5b010c22a6590f6ea1a5cedd8f43ba">SVF::MHP::isMustJoin</a></div><div class="ttdeci">bool isMustJoin(const NodeID curTid, const Instruction *joinsite)</div><div class="ttdoc">Whether a join site must join a thread t. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
2066
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00192">192</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2067
|
+
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">NodeBS</a> joinedTids;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector.html#a0421e3336137b232edc442ece00a8a9c">NodeBS::iterator</a> it = tids.begin(), eit = tids.end(); it!=eit; ++it)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#acd5b010c22a6590f6ea1a5cedd8f43ba">isMustJoin</a>(tgr.getTid(),joinsite))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  joinedTids.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(*it);</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>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MHP.html#afcfc409e625b74cbefd240170627c541">threadStmtToTheadInterLeav</a>[tgr].intersectWithComplement(joinedTids))</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">pushToCTSWorkList</a>(tgr);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="ttc" id="classSVF_1_1MHP_html_aed7f65ea3f046774eef36602cb41f178"><div class="ttname"><a href="classSVF_1_1MHP.html#aed7f65ea3f046774eef36602cb41f178">SVF::MHP::pushToCTSWorkList</a></div><div class="ttdeci">bool pushToCTSWorkList(const CxtThreadStmt &cs)</div><div class="ttdoc">WorkList helper functions. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00243">MHP.h:243</a></div></div>
|
|
2068
|
+
<div class="ttc" id="classSVF_1_1MHP_html_acd5b010c22a6590f6ea1a5cedd8f43ba"><div class="ttname"><a href="classSVF_1_1MHP.html#acd5b010c22a6590f6ea1a5cedd8f43ba">SVF::MHP::isMustJoin</a></div><div class="ttdeci">bool isMustJoin(const NodeID curTid, const Instruction *joinsite)</div><div class="ttdoc">Whether a join site must join a thread t. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00497">MHP.cpp:497</a></div></div>
|
|
2069
2069
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a0421e3336137b232edc442ece00a8a9c"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a0421e3336137b232edc442ece00a8a9c">SVF::SparseBitVector::iterator</a></div><div class="ttdeci">SparseBitVectorIterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00673">SparseBitVector.h:673</a></div></div>
|
|
2070
|
-
<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#
|
|
2070
|
+
<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#l00277">MHP.h:277</a></div></div>
|
|
2071
2071
|
<div class="ttc" id="namespaceSVF_html_aa7b6a13e52671de8524b130738aeb564"><div class="ttname"><a href="namespaceSVF.html#aa7b6a13e52671de8524b130738aeb564">SVF::NodeBS</a></div><div class="ttdeci">SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
|
|
2072
2072
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
|
|
2073
2073
|
</div><!-- fragment -->
|
|
@@ -2100,28 +2100,28 @@ Private Member Functions</h2></td></tr>
|
|
|
2100
2100
|
<p>Update Ancestor and sibling threads. </p>
|
|
2101
2101
|
<p>Update interleavings of ancestor threads according to <a class="el" href="classSVF_1_1TCT.html">TCT</a> </p>
|
|
2102
2102
|
|
|
2103
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
2104
|
-
<div class="fragment"><div class="line"><a name="
|
|
2103
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00397">397</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2104
|
+
<div class="fragment"><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">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="l00400"></a><span class="lineno"> 400</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="l00401"></a><span class="lineno"> 401</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="l00402"></a><span class="lineno"> 402</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="l00403"></a><span class="lineno"> 403</span>  tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(curTid);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <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="l00408"></a><span class="lineno"> 408</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="l00409"></a><span class="lineno"> 409</span>  {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</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="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="classSVF_1_1MHP.html#a8fecc443c4d92a36a9c50ec6a4f5dea8">InstVec</a> nextInsts;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="classSVF_1_1MHP.html#a04357a2827d22e4e727d488d32eb5cb5">getNextInsts</a>(forkInst,nextInsts);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">for</span>(InstVec::const_iterator nit = nextInsts.begin(), enit = nextInsts.end(); nit!=enit; ++nit)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <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="l00416"></a><span class="lineno"> 416</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  }</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</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> }</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
|
|
2105
2105
|
<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#l00147">SVFUtil.cpp:147</a></div></div>
|
|
2106
|
-
<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#
|
|
2106
|
+
<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#l00312">TCT.h:312</a></div></div>
|
|
2107
2107
|
<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#l00175">SVFBasicTypes.h:175</a></div></div>
|
|
2108
2108
|
<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>
|
|
2109
2109
|
<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>
|
|
2110
2110
|
<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#l00102">BasicTypes.h:102</a></div></div>
|
|
2111
|
-
<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#
|
|
2112
|
-
<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#
|
|
2113
|
-
<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#
|
|
2111
|
+
<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#l00198">TCT.h:198</a></div></div>
|
|
2112
|
+
<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#l00103">TCT.h:103</a></div></div>
|
|
2113
|
+
<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#l00226">MHP.h:226</a></div></div>
|
|
2114
2114
|
<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#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
2115
|
-
<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#
|
|
2115
|
+
<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#l00352">TCT.h:352</a></div></div>
|
|
2116
2116
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01118">SparseBitVector.h:1118</a></div></div>
|
|
2117
2117
|
<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>
|
|
2118
|
-
<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#
|
|
2118
|
+
<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#l00303">TCT.h:303</a></div></div>
|
|
2119
2119
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01113">SparseBitVector.h:1113</a></div></div>
|
|
2120
|
-
<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#
|
|
2121
|
-
<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#
|
|
2120
|
+
<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#l00052">MHP.h:52</a></div></div>
|
|
2121
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
2122
2122
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
2123
2123
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
|
|
2124
|
-
<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#
|
|
2124
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
2125
2125
|
<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>
|
|
2126
2126
|
<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#l00155">SVFBasicTypes.h:155</a></div></div>
|
|
2127
2127
|
</div><!-- fragment -->
|
|
@@ -2152,28 +2152,28 @@ Private Member Functions</h2></td></tr>
|
|
|
2152
2152
|
<p>Update non-candidate functions' interleaving. Copy interleaving threads of the entry inst to other insts.</p>
|
|
2153
2153
|
<p>Update non-candidate functions' interleaving </p>
|
|
2154
2154
|
|
|
2155
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
2156
|
-
<div class="fragment"><div class="line"><a name="
|
|
2155
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00170">170</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2156
|
+
<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="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="l00173"></a><span class="lineno"> 173</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#a00967427d1c110ffcc82ea2a966f4564">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#a00967427d1c110ffcc82ea2a966f4564">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a176eefb65e4ba99ee70513c8add44176">tct</a>-><a class="code" href="classSVF_1_1TCT.html#aa69b82c888c8193e97f9e95c62ac99d4">isCandidateFun</a>(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</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="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1MHP.html#a6841b147e2a681ea372bdddd53616294">hasThreadStmtSet</a>(entryinst))</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="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="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">for</span> (CxtThreadStmtSet::const_iterator it1 = tsSet.begin(), eit1 = tsSet.end(); it1 != eit1; ++it1)</div><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="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a>& cts = *it1;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</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="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">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="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (inst == entryinst)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</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="l00195"></a><span class="lineno"> 195</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="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1MHP.html#a6b238ee6342da990840162845bba547f">instToTSMap</a>[inst].insert(newCts);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</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="line"><a name="l00201"></a><span class="lineno"> 201</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#l00156">SVFModule.h:156</a></div></div>
|
|
2157
2157
|
<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#l00125">BasicTypes.h:125</a></div></div>
|
|
2158
2158
|
<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>
|
|
2159
2159
|
<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>
|
|
2160
|
-
<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#
|
|
2160
|
+
<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#l00132">MHP.h:132</a></div></div>
|
|
2161
2161
|
<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#l00131">SVFBasicTypes.h:131</a></div></div>
|
|
2162
2162
|
<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>
|
|
2163
|
-
<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#
|
|
2164
|
-
<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#
|
|
2165
|
-
<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="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#l00182">TCT.h:182</a></div></div>
|
|
2164
|
+
<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#l00277">MHP.h:277</a></div></div>
|
|
2165
|
+
<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#l00270">TCT.h:270</a></div></div>
|
|
2166
2166
|
<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>
|
|
2167
2167
|
<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#l00151">BasicTypes.h:151</a></div></div>
|
|
2168
2168
|
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
2169
2169
|
<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#l00164">SVFModule.h:164</a></div></div>
|
|
2170
2170
|
<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>
|
|
2171
|
-
<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#
|
|
2172
|
-
<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#
|
|
2171
|
+
<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#l00054">MHP.h:54</a></div></div>
|
|
2172
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
2173
2173
|
<div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::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#l00158">BasicTypes.h:158</a></div></div>
|
|
2174
2174
|
<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>
|
|
2175
|
-
<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#
|
|
2176
|
-
<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#
|
|
2175
|
+
<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#l00278">MHP.h:278</a></div></div>
|
|
2176
|
+
<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#l00126">MHP.h:126</a></div></div>
|
|
2177
2177
|
<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="SVFUtil_8h_source.html#l00346">SVFUtil.h:346</a></div></div>
|
|
2178
2178
|
</div><!-- fragment -->
|
|
2179
2179
|
</div>
|
|
@@ -2205,28 +2205,28 @@ Private Member Functions</h2></td></tr>
|
|
|
2205
2205
|
<p>Exclude sibling thread that never happen in parallel based on <a class="el" href="classSVF_1_1ForkJoinAnalysis.html">ForkJoinAnalysis</a></p>
|
|
2206
2206
|
<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>
|
|
2207
2207
|
|
|
2208
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
2209
|
-
<div class="fragment"><div class="line"><a name="
|
|
2208
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00432">432</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2209
|
+
<div class="fragment"><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">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="l00435"></a><span class="lineno"> 435</span>  tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(curTid);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> cit = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), ecit = tds.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); cit!=ecit; ++cit)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="classSVF_1_1SparseBitVector.html">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="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> it = siblingTds.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), eit = siblingTds.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <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="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</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="l00446"></a><span class="lineno"> 446</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="l00447"></a><span class="lineno"> 447</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="l00448"></a><span class="lineno"> 448</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="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="classSVF_1_1MHP.html#a6343dd11dd75d3730dc463321a11445e">addInterleavingThread</a>(cts,curTid);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <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="l00453"></a><span class="lineno"> 453</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="l00454"></a><span class="lineno"> 454</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="l00455"></a><span class="lineno"> 455</span>  }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</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#l00360">TCT.h:360</a></div></div>
|
|
2210
2210
|
<div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
|
|
2211
2211
|
<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#l00147">SVFUtil.cpp:147</a></div></div>
|
|
2212
|
-
<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#
|
|
2212
|
+
<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#l00312">TCT.h:312</a></div></div>
|
|
2213
2213
|
<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>
|
|
2214
2214
|
<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#l00175">SVFBasicTypes.h:175</a></div></div>
|
|
2215
2215
|
<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>
|
|
2216
|
-
<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#
|
|
2217
|
-
<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#
|
|
2218
|
-
<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#
|
|
2216
|
+
<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#l00524">MHP.cpp:524</a></div></div>
|
|
2217
|
+
<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#l00198">TCT.h:198</a></div></div>
|
|
2218
|
+
<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#l00103">TCT.h:103</a></div></div>
|
|
2219
2219
|
<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>
|
|
2220
2220
|
<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>
|
|
2221
2221
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01118">SparseBitVector.h:1118</a></div></div>
|
|
2222
2222
|
<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>
|
|
2223
|
-
<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#
|
|
2224
|
-
<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#
|
|
2223
|
+
<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#l00333">TCT.h:333</a></div></div>
|
|
2224
|
+
<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#l00461">MHP.cpp:461</a></div></div>
|
|
2225
2225
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01113">SparseBitVector.h:1113</a></div></div>
|
|
2226
|
-
<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#
|
|
2226
|
+
<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#l00175">MHP.h:175</a></div></div>
|
|
2227
2227
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
|
|
2228
2228
|
<div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
|
|
2229
|
-
<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#
|
|
2229
|
+
<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#l00274">MHP.h:274</a></div></div>
|
|
2230
2230
|
<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>
|
|
2231
2231
|
<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#l00155">SVFBasicTypes.h:155</a></div></div>
|
|
2232
2232
|
</div><!-- fragment -->
|
|
@@ -2257,10 +2257,10 @@ Private Member Functions</h2></td></tr>
|
|
|
2257
2257
|
|
|
2258
2258
|
<p>Use RCResultValidator to validate mhp results. </p>
|
|
2259
2259
|
|
|
2260
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#
|
|
2261
|
-
<div class="fragment"><div class="line"><a name="
|
|
2262
|
-
<div class="ttc" id="classSVF_1_1MHPValidator_html"><div class="ttname"><a href="classSVF_1_1MHPValidator.html">SVF::MHPValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#
|
|
2263
|
-
<div class="ttc" id="classSVF_1_1MHP_html_a033936547612c54326a604f0ff1e39a6"><div class="ttname"><a href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">SVF::MHP::getTCT</a></div><div class="ttdeci">TCT * getTCT() const</div><div class="ttdoc">Get Thread Creation Tree. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#
|
|
2260
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8cpp_source.html#l00660">660</a> of file <a class="el" href="MHP_8cpp_source.html">MHP.cpp</a>.</p>
|
|
2261
|
+
<div class="fragment"><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="comment">// Initialize the validator and perform validation.</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <a class="code" href="classSVF_1_1MHPValidator.html">MHPValidator</a> validator(<span class="keyword">this</span>);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  validator.init(<a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>()->getSVFModule());</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  validator.analyze();</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <a class="code" href="classSVF_1_1MTAResultValidator.html">MTAResultValidator</a> MTAValidator(<span class="keyword">this</span>);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  MTAValidator.analyze();</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> }</div><div class="ttc" id="classSVF_1_1MTAResultValidator_html"><div class="ttname"><a href="classSVF_1_1MTAResultValidator.html">SVF::MTAResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00021">MTAResultValidator.h:21</a></div></div>
|
|
2262
|
+
<div class="ttc" id="classSVF_1_1MHPValidator_html"><div class="ttname"><a href="classSVF_1_1MHPValidator.html">SVF::MHPValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8cpp_source.html#l00047">MHP.cpp:47</a></div></div>
|
|
2263
|
+
<div class="ttc" id="classSVF_1_1MHP_html_a033936547612c54326a604f0ff1e39a6"><div class="ttname"><a href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">SVF::MHP::getTCT</a></div><div class="ttdeci">TCT * getTCT() const</div><div class="ttdoc">Get Thread Creation Tree. </div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00082">MHP.h:82</a></div></div>
|
|
2264
2264
|
</div><!-- fragment -->
|
|
2265
2265
|
</div>
|
|
2266
2266
|
</div>
|
|
@@ -2287,7 +2287,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2287
2287
|
|
|
2288
2288
|
<p><a class="el" href="classSVF_1_1CxtThreadStmt.html">CxtThreadStmt</a> worklist. </p>
|
|
2289
2289
|
|
|
2290
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2290
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00276">276</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2291
2291
|
|
|
2292
2292
|
</div>
|
|
2293
2293
|
</div>
|
|
@@ -2313,7 +2313,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2313
2313
|
|
|
2314
2314
|
<p>ForJoin Analysis. </p>
|
|
2315
2315
|
|
|
2316
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2316
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00275">275</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2317
2317
|
|
|
2318
2318
|
</div>
|
|
2319
2319
|
</div>
|
|
@@ -2340,7 +2340,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2340
2340
|
<p>Map a statement to its thread interleavings. </p>
|
|
2341
2341
|
<p>Map an instruction to its ThreadStmtSet </p>
|
|
2342
2342
|
|
|
2343
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2343
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00278">278</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2344
2344
|
|
|
2345
2345
|
</div>
|
|
2346
2346
|
</div>
|
|
@@ -2356,7 +2356,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2356
2356
|
</table>
|
|
2357
2357
|
</div><div class="memdoc">
|
|
2358
2358
|
|
|
2359
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2359
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00286">286</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2360
2360
|
|
|
2361
2361
|
</div>
|
|
2362
2362
|
</div>
|
|
@@ -2372,7 +2372,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2372
2372
|
</table>
|
|
2373
2373
|
</div><div class="memdoc">
|
|
2374
2374
|
|
|
2375
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2375
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00285">285</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2376
2376
|
|
|
2377
2377
|
</div>
|
|
2378
2378
|
</div>
|
|
@@ -2396,7 +2396,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2396
2396
|
</table>
|
|
2397
2397
|
</div><div class="memdoc">
|
|
2398
2398
|
|
|
2399
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2399
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00279">279</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2400
2400
|
|
|
2401
2401
|
</div>
|
|
2402
2402
|
</div>
|
|
@@ -2414,7 +2414,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2414
2414
|
|
|
2415
2415
|
<p>Number of queries are answered as may-happen-in-parallel. </p>
|
|
2416
2416
|
|
|
2417
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2417
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00284">284</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2418
2418
|
|
|
2419
2419
|
</div>
|
|
2420
2420
|
</div>
|
|
@@ -2432,7 +2432,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2432
2432
|
|
|
2433
2433
|
<p>Total number of queries. </p>
|
|
2434
2434
|
|
|
2435
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2435
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00283">283</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2436
2436
|
|
|
2437
2437
|
</div>
|
|
2438
2438
|
</div>
|
|
@@ -2458,7 +2458,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2458
2458
|
|
|
2459
2459
|
<p>TCG. </p>
|
|
2460
2460
|
|
|
2461
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2461
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00273">273</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2462
2462
|
|
|
2463
2463
|
</div>
|
|
2464
2464
|
</div>
|
|
@@ -2484,7 +2484,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2484
2484
|
|
|
2485
2485
|
<p><a class="el" href="classSVF_1_1TCT.html">TCT</a>. </p>
|
|
2486
2486
|
|
|
2487
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2487
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00274">274</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2488
2488
|
|
|
2489
2489
|
</div>
|
|
2490
2490
|
</div>
|
|
@@ -2508,7 +2508,7 @@ Private Member Functions</h2></td></tr>
|
|
|
2508
2508
|
</table>
|
|
2509
2509
|
</div><div class="memdoc">
|
|
2510
2510
|
|
|
2511
|
-
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#
|
|
2511
|
+
<p class="definition">Definition at line <a class="el" href="MHP_8h_source.html#l00277">277</a> of file <a class="el" href="MHP_8h_source.html">MHP.h</a>.</p>
|
|
2512
2512
|
|
|
2513
2513
|
</div>
|
|
2514
2514
|
</div>
|