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
|
@@ -66,73 +66,73 @@ $(function() {
|
|
|
66
66
|
<div class="title">MTA.cpp</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="MTA_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * MTA.cpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: May 14, 2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> */</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="MTA_8h.html">MTA/MTA.h</a>"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "<a class="code" href="MHP_8h.html">MTA/MHP.h</a>"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="TCT_8h.html">MTA/TCT.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="MTAStat_8h.html">MTA/MTAStat.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "<a class="code" href="FSMPTA_8h.html">MTA/FSMPTA.h</a>"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">static</span> llvm::RegisterPass<MTA> <a class="code" href="MTA_8cpp.html#a722a3314000546677382be2b285e04d8">RACEDETECOR</a>(<span class="stringliteral">"mta"</span>, <span class="stringliteral">"May-Happen-in-Parallel Analysis"</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">MTA::ID</a> = 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>* <a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">MTA::modulePass</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <a class="code" href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">MTA::FunToSEMap</a> <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">MTA::func2ScevMap</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <a class="code" href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">MTA::FunToLoopInfoMap</a> <a class="code" href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">MTA::func2LoopInfoMap</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338"> 30</a></span> <a class="code" href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">MTA::MTA</a>() :</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>(ID), tcg(nullptr), tct(nullptr)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MTAStat.html">MTAStat</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f"> 36</a></span> <a class="code" href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">MTA::~MTA</a>()</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">//if (tct)</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// delete tct;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae"> 44</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">MTA::runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& module)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a> mm(module.getName().str());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">runOnModule</a>(&mm);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a32f6beffb47e5c2ac86f5c3b8a1bd9ba"> 53</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">MTA::runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">modulePass</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSVF_1_1MHP.html">MHP</a>* mhp = <a class="code" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">computeMHP</a>(module);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* lsa = <a class="code" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">computeLocksets</a>(mhp-><a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>());</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> if (Options::AndersenAnno) {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> pta = mhp->getTCT()->getPTA();</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> if (pta->printStat())</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> stat->performMHPPairStat(mhp,lsa);</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> AndersenWaveDiff::releaseAndersenWaveDiff();</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> } else if (Options::FSAnno) {</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> reportMemoryUsageKB("Mem before analysis");</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> DBOUT(DGENERAL, outs() << pasMsg("FSMPTA analysis\n"));</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"> DBOUT(DMTA, outs() << pasMsg("FSMPTA analysis\n"));</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"></span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> DOTIMESTAT(double ptStart = stat->getClk());</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"> pta = FSMPTA::createFSMPTA(module, mhp,lsa);</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> DOTIMESTAT(double ptEnd = stat->getClk());</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> DOTIMESTAT(stat->FSMPTATime += (ptEnd - ptStart) / TIMEINTERVAL);</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"></span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> reportMemoryUsageKB("Mem after analysis");</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"></span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> if (pta->printStat())</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> stat->performMHPPairStat(mhp,lsa);</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"></span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment"> FSMPTA::releaseFSMPTA();</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment"> }</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"> if (DoInstrumentation) {</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"> DBOUT(DGENERAL, outs() << pasMsg("ThreadSanitizer Instrumentation\n"));</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> DBOUT(DMTA, outs() << pasMsg("ThreadSanitizer Instrumentation\n"));</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment"> TSan tsan;</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment"> tsan.doInitialization(*pta->getModule());</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"> for (Module::iterator it = pta->getModule()->begin(), eit = pta->getModule()->end(); it != eit; ++it) {</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> tsan.runOnFunction(*it);</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> }</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> if (pta->printStat())</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> PrintStatistics();</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> }</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">delete</span> mhp;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">delete</span> lsa;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75"> 111</a></span> <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">MTA::computeLocksets</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a>)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* lsa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>(tct);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  lsa-><a class="code" href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">analyze</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> lsa;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487"> 118</a></span> <a class="code" href="classSVF_1_1MHP.html">MHP</a>* <a class="code" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">MTA::computeMHP</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <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">"MTA analysis\n"</span>));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</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">"MTA analysis\n"</span>));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(module);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">"ptacg"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <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">"Build TCT\n"</span>));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</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">"Build TCT\n"</span>));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> tctStart = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TCT.html">TCT</a>(pta);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a> = tct->getThreadCallGraph();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> tctEnd = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a3298dd910e731fdabc87bbcf65371a4a">TCTTime</a> += (tctEnd - tctStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</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>  <span class="keywordflow">if</span> (pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">printStat</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>  <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a19c9c1cba3a2cf665f7a05570e316e2e">performThreadCallGraphStat</a>(<a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a12f6bd291b206c18001f5d4775251481">performTCTStat</a>(tct);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">"tcg"</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <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 analysis\n"</span>));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</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 analysis\n"</span>));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> mhpStart = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1MHP.html">MHP</a>* mhp = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MHP.html">MHP</a>(tct);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  mhp->analyze();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> mhpEnd = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a56411f7e64febab8aab94a4a9207e5d8">MHPTime</a> += (mhpEnd - mhpStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <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 analysis finish\n"</span>));</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</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 analysis finish\n"</span>));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// * Check (1) write-write race</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// * (2) write-read race</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// * (3) read-read race</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// * when two memory access may-happen in parallel and are not protected by the same lock</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="comment">// * (excluding global constraints because they are initialized before running the main function)</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// */</span></div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e"> 165</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">MTA::detect</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</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">"Starting Race Detection\n"</span>));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">LoadSet</a> loads;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">StoreSet</a> stores;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Instruction*></a> needcheckinst;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</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="l00176"></a><span class="lineno"> 176</span>  {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*F)->getLLVMFun()), E = inst_end((*F)->getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast<LoadInst>(inst))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  loads.insert(load);</div><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="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  stores.insert(store);</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>  }</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="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span> (LoadSet::const_iterator lit = loads.begin(), elit = loads.end(); lit != elit; ++lit)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = *lit;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">bool</span> loadneedcheck = <span class="keyword">false</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span> (StoreSet::const_iterator sit = stores.begin(), esit = stores.end(); sit != esit; ++sit)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = *sit;</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>  loadneedcheck = <span class="keyword">true</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  needcheckinst.insert(store);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (loadneedcheck)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  needcheckinst.insert(load);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"HP needcheck: "</span> << needcheckinst.size() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="ttc" id="classSVF_1_1MHP_html"><div class="ttname"><a href="classSVF_1_1MHP.html">SVF::MHP</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00024">MHP.h:24</a></div></div>
|
|
69
|
+
<a href="MTA_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- MTA.h -- Analysis of multithreaded programs-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">/*</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * MTA.cpp</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> *</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Created on: May 14, 2014</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * Author: Yulei Sui, Peng Di</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> */</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="MTA_8h.html">MTA/MTA.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="MHP_8h.html">MTA/MHP.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="TCT_8h.html">MTA/TCT.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="MTAStat_8h.html">MTA/MTAStat.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="FSMPTA_8h.html">MTA/FSMPTA.h</a>"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">static</span> llvm::RegisterPass<MTA> <a class="code" href="MTA_8cpp.html#a722a3314000546677382be2b285e04d8">RACEDETECOR</a>(<span class="stringliteral">"mta"</span>, <span class="stringliteral">"May-Happen-in-Parallel Analysis"</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">MTA::ID</a> = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>* <a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">MTA::modulePass</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <a class="code" href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">MTA::FunToSEMap</a> <a class="code" href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">MTA::func2ScevMap</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <a class="code" href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">MTA::FunToLoopInfoMap</a> <a class="code" href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">MTA::func2LoopInfoMap</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338"> 53</a></span> <a class="code" href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">MTA::MTA</a>() :</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">ModulePass</a>(ID), tcg(nullptr), tct(nullptr)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MTAStat.html">MTAStat</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f"> 59</a></span> <a class="code" href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">MTA::~MTA</a>()</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">//if (tct)</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// delete tct;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae"> 67</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">MTA::runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& module)</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_1SVFModule.html">SVFModule</a> mm(module.getName().str());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">runOnModule</a>(&mm);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a32f6beffb47e5c2ac86f5c3b8a1bd9ba"> 76</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">MTA::runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">modulePass</a> = <span class="keyword">this</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1MHP.html">MHP</a>* mhp = <a class="code" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">computeMHP</a>(module);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* lsa = <a class="code" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">computeLocksets</a>(mhp-><a class="code" href="classSVF_1_1MHP.html#a033936547612c54326a604f0ff1e39a6">getTCT</a>());</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">/*</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"> if (Options::AndersenAnno) {</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"> pta = mhp->getTCT()->getPTA();</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment"> if (pta->printStat())</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment"> stat->performMHPPairStat(mhp,lsa);</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment"> AndersenWaveDiff::releaseAndersenWaveDiff();</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment"> } else if (Options::FSAnno) {</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"></span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment"> reportMemoryUsageKB("Mem before analysis");</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> DBOUT(DGENERAL, outs() << pasMsg("FSMPTA analysis\n"));</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> DBOUT(DMTA, outs() << pasMsg("FSMPTA analysis\n"));</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"></span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> DOTIMESTAT(double ptStart = stat->getClk());</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> pta = FSMPTA::createFSMPTA(module, mhp,lsa);</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> DOTIMESTAT(double ptEnd = stat->getClk());</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> DOTIMESTAT(stat->FSMPTATime += (ptEnd - ptStart) / TIMEINTERVAL);</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"></span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment"> reportMemoryUsageKB("Mem after analysis");</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment"></span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment"> if (pta->printStat())</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"> stat->performMHPPairStat(mhp,lsa);</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"></span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"> FSMPTA::releaseFSMPTA();</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment"> }</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment"></span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"> if (DoInstrumentation) {</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> DBOUT(DGENERAL, outs() << pasMsg("ThreadSanitizer Instrumentation\n"));</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"> DBOUT(DMTA, outs() << pasMsg("ThreadSanitizer Instrumentation\n"));</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"> TSan tsan;</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment"> tsan.doInitialization(*pta->getModule());</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> for (Module::iterator it = pta->getModule()->begin(), eit = pta->getModule()->end(); it != eit; ++it) {</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment"> tsan.runOnFunction(*it);</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"> }</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> if (pta->printStat())</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment"> PrintStatistics();</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"> }</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> */</span></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>  <span class="keyword">delete</span> mhp;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">delete</span> lsa;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> <span class="keyword">false</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> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75"> 134</a></span> <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">MTA::computeLocksets</a>(<a class="code" href="classSVF_1_1TCT.html">TCT</a>* <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a>)</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_1LockAnalysis.html">LockAnalysis</a>* lsa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>(tct);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  lsa-><a class="code" href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">analyze</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> lsa;</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> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487"> 141</a></span> <a class="code" href="classSVF_1_1MHP.html">MHP</a>* <a class="code" href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">MTA::computeMHP</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <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">"MTA analysis\n"</span>));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</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">"MTA analysis\n"</span>));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(module);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">"ptacg"</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="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">"Build TCT\n"</span>));</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</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">"Build TCT\n"</span>));</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> tctStart = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">tct</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TCT.html">TCT</a>(pta);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a> = tct->getThreadCallGraph();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> tctEnd = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a3298dd910e731fdabc87bbcf65371a4a">TCTTime</a> += (tctEnd - tctStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span> (pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">printStat</a>())</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>  <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a19c9c1cba3a2cf665f7a05570e316e2e">performThreadCallGraphStat</a>(<a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a12f6bd291b206c18001f5d4775251481">performTCTStat</a>(tct);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">tcg</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">dump</a>(<span class="stringliteral">"tcg"</span>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <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 analysis\n"</span>));</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</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 analysis\n"</span>));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> mhpStart = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classSVF_1_1MHP.html">MHP</a>* mhp = <span class="keyword">new</span> <a class="code" href="classSVF_1_1MHP.html">MHP</a>(tct);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  mhp->analyze();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<span class="keywordtype">double</span> mhpEnd = <a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#ac9d390c417df6f6af6b274618b87010d">getClk</a>());</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="SVFBasicTypes_8h.html#ab6f41e9db3675dc689c5492418885041">DOTIMESTAT</a>(<a class="code" href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">stat</a>-><a class="code" href="classSVF_1_1MTAStat.html#a56411f7e64febab8aab94a4a9207e5d8">MHPTime</a> += (mhpEnd - mhpStart) / <a class="code" href="SVFBasicTypes_8h.html#a1aeda3370621dc00e9a0fe8e7aabc736">TIMEINTERVAL</a>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <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 analysis finish\n"</span>));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</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 analysis finish\n"</span>));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> mhp;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// * Check (1) write-write race</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// * (2) write-read race</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// * (3) read-read race</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// * when two memory access may-happen in parallel and are not protected by the same lock</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// * (excluding global constraints because they are initialized before running the main function)</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// */</span></div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e"> 188</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">MTA::detect</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</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">"Starting Race Detection\n"</span>));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">LoadSet</a> loads;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">StoreSet</a> stores;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const Instruction*></a> needcheckinst;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Add symbols for all of the functions and the instructions in them.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</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="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// collect and create symbols inside the function body</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*F)->getLLVMFun()), E = inst_end((*F)->getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast<LoadInst>(inst))</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  loads.insert(load);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast<StoreInst>(inst))</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  stores.insert(store);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</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="keywordflow">for</span> (LoadSet::const_iterator lit = loads.begin(), elit = loads.end(); lit != elit; ++lit)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = *lit;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">bool</span> loadneedcheck = <span class="keyword">false</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">for</span> (StoreSet::const_iterator sit = stores.begin(), esit = stores.end(); sit != esit; ++sit)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = *sit;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  loadneedcheck = <span class="keyword">true</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  needcheckinst.insert(store);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (loadneedcheck)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  needcheckinst.insert(load);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"HP needcheck: "</span> << needcheckinst.size() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="ttc" id="classSVF_1_1MHP_html"><div class="ttname"><a href="classSVF_1_1MHP.html">SVF::MHP</a></div><div class="ttdef"><b>Definition:</b> <a href="MHP_8h_source.html#l00046">MHP.h:46</a></div></div>
|
|
70
70
|
<div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
|
|
71
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a80356495b6c45bac59dc15fd7a99730b"><div class="ttname"><a href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">SVF::MTA::LoadSet</a></div><div class="ttdeci">Set< const LoadInst * > LoadSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
71
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a80356495b6c45bac59dc15fd7a99730b"><div class="ttname"><a href="classSVF_1_1MTA.html#a80356495b6c45bac59dc15fd7a99730b">SVF::MTA::LoadSet</a></div><div class="ttdeci">Set< const LoadInst * > LoadSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00061">MTA.h:61</a></div></div>
|
|
72
72
|
<div class="ttc" id="namespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
73
|
-
<div class="ttc" id="classSVF_1_1MTAStat_html"><div class="ttname"><a href="classSVF_1_1MTAStat.html">SVF::MTAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#
|
|
74
|
-
<div class="ttc" id="classSVF_1_1MTAStat_html_a12f6bd291b206c18001f5d4775251481"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a12f6bd291b206c18001f5d4775251481">SVF::MTAStat::performTCTStat</a></div><div class="ttdeci">void performTCTStat(TCT *tct)</div><div class="ttdoc">Statistics for thread creation tree. </div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8cpp_source.html#
|
|
75
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a9c9a42fb8a8ada910cdb9a8fb55d7c36"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">SVF::MTA::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
73
|
+
<div class="ttc" id="classSVF_1_1MTAStat_html"><div class="ttname"><a href="classSVF_1_1MTAStat.html">SVF::MTAStat</a></div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#l00046">MTAStat.h:46</a></div></div>
|
|
74
|
+
<div class="ttc" id="classSVF_1_1MTAStat_html_a12f6bd291b206c18001f5d4775251481"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a12f6bd291b206c18001f5d4775251481">SVF::MTAStat::performTCTStat</a></div><div class="ttdeci">void performTCTStat(TCT *tct)</div><div class="ttdoc">Statistics for thread creation tree. </div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8cpp_source.html#l00094">MTAStat.cpp:94</a></div></div>
|
|
75
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a9c9a42fb8a8ada910cdb9a8fb55d7c36"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c9a42fb8a8ada910cdb9a8fb55d7c36">SVF::MTA::tct</a></div><div class="ttdeci">TCT * tct</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00111">MTA.h:111</a></div></div>
|
|
76
76
|
<div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00041">BasicTypes.h:41</a></div></div>
|
|
77
77
|
<div class="ttc" id="MHP_8h_html"><div class="ttname"><a href="MHP_8h.html">MHP.h</a></div></div>
|
|
78
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a2473be56f2861ad101f65a65e02dff8d"><div class="ttname"><a href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">SVF::MTA::FunToLoopInfoMap</a></div><div class="ttdeci">Map< const Function *, LoopInfo * > FunToLoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
78
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a2473be56f2861ad101f65a65e02dff8d"><div class="ttname"><a href="classSVF_1_1MTA.html#a2473be56f2861ad101f65a65e02dff8d">SVF::MTA::FunToLoopInfoMap</a></div><div class="ttdeci">Map< const Function *, LoopInfo * > FunToLoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00064">MTA.h:64</a></div></div>
|
|
79
79
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00050">SVFIRBuilder.cpp:50</a></div></div>
|
|
80
80
|
<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>
|
|
81
81
|
<div class="ttc" id="namespaceSVF_html_ac226d84f86637126d17f6814632c8a90"><div class="ttname"><a href="namespaceSVF.html#ac226d84f86637126d17f6814632c8a90">SVF::ModulePass</a></div><div class="ttdeci">llvm::ModulePass ModulePass</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00033">BasicTypes.h:33</a></div></div>
|
|
82
82
|
<div class="ttc" id="MTA_8cpp_html_a722a3314000546677382be2b285e04d8"><div class="ttname"><a href="MTA_8cpp.html#a722a3314000546677382be2b285e04d8">RACEDETECOR</a></div><div class="ttdeci">static llvm::RegisterPass< MTA > RACEDETECOR("mta", "May-Happen-in-Parallel Analysis")</div></div>
|
|
83
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a4f2f17975aabd2c4b9a3b2fbf3b1a487"><div class="ttname"><a href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">SVF::MTA::computeMHP</a></div><div class="ttdeci">virtual MHP * computeMHP(SVFModule *module)</div><div class="ttdoc">Compute MHP. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
83
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a4f2f17975aabd2c4b9a3b2fbf3b1a487"><div class="ttname"><a href="classSVF_1_1MTA.html#a4f2f17975aabd2c4b9a3b2fbf3b1a487">SVF::MTA::computeMHP</a></div><div class="ttdeci">virtual MHP * computeMHP(SVFModule *module)</div><div class="ttdoc">Compute MHP. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00141">MTA.cpp:141</a></div></div>
|
|
84
84
|
<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>
|
|
85
85
|
<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>
|
|
86
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a5ce0b3247bd412e5267a42be0646471b"><div class="ttname"><a href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">SVF::MTA::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdoc">Pass ID. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
86
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a5ce0b3247bd412e5267a42be0646471b"><div class="ttname"><a href="classSVF_1_1MTA.html#a5ce0b3247bd412e5267a42be0646471b">SVF::MTA::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdoc">Pass ID. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00067">MTA.h:67</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a841be22581a7896d8924564e7199f62b"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a841be22581a7896d8924564e7199f62b">SVF::PTACallGraph::dump</a></div><div class="ttdeci">void dump(const std::string &filename)</div><div class="ttdoc">Dump the graph. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00316">PTACallGraph.cpp:316</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a4880571f57542afc50da506dfe273183"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a4880571f57542afc50da506dfe273183">SVF::PointerAnalysis::printStat</a></div><div class="ttdeci">bool printStat()</div><div class="ttdoc">Whether print statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00362">PointerAnalysis.h:362</a></div></div>
|
|
89
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a891e56104b9c2daa8b052e3821e85b9b"><div class="ttname"><a href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">SVF::MTA::StoreSet</a></div><div class="ttdeci">Set< const StoreInst * > StoreSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
89
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a891e56104b9c2daa8b052e3821e85b9b"><div class="ttname"><a href="classSVF_1_1MTA.html#a891e56104b9c2daa8b052e3821e85b9b">SVF::MTA::StoreSet</a></div><div class="ttdeci">Set< const StoreInst * > StoreSet</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00062">MTA.h:62</a></div></div>
|
|
90
90
|
<div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
|
|
91
|
-
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ad1516b6cb1dbd06b8dff04ae3c944621"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">SVF::LockAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#
|
|
92
|
-
<div class="ttc" id="classSVF_1_1MTAStat_html_a3298dd910e731fdabc87bbcf65371a4a"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a3298dd910e731fdabc87bbcf65371a4a">SVF::MTAStat::TCTTime</a></div><div class="ttdeci">double TCTTime</div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#
|
|
93
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a77b2f1d3de217219ea9346b5bbce4b5f"><div class="ttname"><a href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">SVF::MTA::~MTA</a></div><div class="ttdeci">virtual ~MTA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
91
|
+
<div class="ttc" id="classSVF_1_1LockAnalysis_html_ad1516b6cb1dbd06b8dff04ae3c944621"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#ad1516b6cb1dbd06b8dff04ae3c944621">SVF::LockAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8cpp_source.html#l00064">LockAnalysis.cpp:64</a></div></div>
|
|
92
|
+
<div class="ttc" id="classSVF_1_1MTAStat_html_a3298dd910e731fdabc87bbcf65371a4a"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a3298dd910e731fdabc87bbcf65371a4a">SVF::MTAStat::TCTTime</a></div><div class="ttdeci">double TCTTime</div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#l00065">MTAStat.h:65</a></div></div>
|
|
93
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a77b2f1d3de217219ea9346b5bbce4b5f"><div class="ttname"><a href="classSVF_1_1MTA.html#a77b2f1d3de217219ea9346b5bbce4b5f">SVF::MTA::~MTA</a></div><div class="ttdeci">virtual ~MTA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00059">MTA.cpp:59</a></div></div>
|
|
94
94
|
<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>
|
|
95
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a8c0f7a777b7fd6b388678be63190ee59"><div class="ttname"><a href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">SVF::MTA::stat</a></div><div class="ttdeci">MTAStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
96
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a0f4805f195ebd42d81127b1a79333c75"><div class="ttname"><a href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">SVF::MTA::computeLocksets</a></div><div class="ttdeci">virtual LockAnalysis * computeLocksets(TCT *tct)</div><div class="ttdoc">Compute locksets. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
97
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a3dd09dcdcf58ae8ee1745634cefbb8aa"><div class="ttname"><a href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">SVF::MTA::modulePass</a></div><div class="ttdeci">static ModulePass * modulePass</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
95
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a8c0f7a777b7fd6b388678be63190ee59"><div class="ttname"><a href="classSVF_1_1MTA.html#a8c0f7a777b7fd6b388678be63190ee59">SVF::MTA::stat</a></div><div class="ttdeci">MTAStat * stat</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00112">MTA.h:112</a></div></div>
|
|
96
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a0f4805f195ebd42d81127b1a79333c75"><div class="ttname"><a href="classSVF_1_1MTA.html#a0f4805f195ebd42d81127b1a79333c75">SVF::MTA::computeLocksets</a></div><div class="ttdeci">virtual LockAnalysis * computeLocksets(TCT *tct)</div><div class="ttdoc">Compute locksets. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00134">MTA.cpp:134</a></div></div>
|
|
97
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a3dd09dcdcf58ae8ee1745634cefbb8aa"><div class="ttname"><a href="classSVF_1_1MTA.html#a3dd09dcdcf58ae8ee1745634cefbb8aa">SVF::MTA::modulePass</a></div><div class="ttdeci">static ModulePass * modulePass</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00069">MTA.h:69</a></div></div>
|
|
98
98
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00174">PointerAnalysis.h:174</a></div></div>
|
|
99
99
|
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00045">SVFIRBuilder.h:45</a></div></div>
|
|
100
100
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
|
|
101
101
|
<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>
|
|
102
102
|
<div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
|
|
103
|
-
<div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#
|
|
103
|
+
<div class="ttc" id="classSVF_1_1LockAnalysis_html"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html">SVF::LockAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00045">LockAnalysis.h:45</a></div></div>
|
|
104
104
|
<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>
|
|
105
105
|
<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>
|
|
106
|
-
<div class="ttc" id="classSVF_1_1MTAStat_html_a56411f7e64febab8aab94a4a9207e5d8"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a56411f7e64febab8aab94a4a9207e5d8">SVF::MTAStat::MHPTime</a></div><div class="ttdeci">double MHPTime</div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#
|
|
107
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a9c4b9eb2c04de305a30114019c3b1dae"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">SVF::MTA::runOnModule</a></div><div class="ttdeci">virtual bool runOnModule(Module &module)</div><div class="ttdoc">We start the pass here. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
106
|
+
<div class="ttc" id="classSVF_1_1MTAStat_html_a56411f7e64febab8aab94a4a9207e5d8"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a56411f7e64febab8aab94a4a9207e5d8">SVF::MTAStat::MHPTime</a></div><div class="ttdeci">double MHPTime</div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8h_source.html#l00066">MTAStat.h:66</a></div></div>
|
|
107
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a9c4b9eb2c04de305a30114019c3b1dae"><div class="ttname"><a href="classSVF_1_1MTA.html#a9c4b9eb2c04de305a30114019c3b1dae">SVF::MTA::runOnModule</a></div><div class="ttdeci">virtual bool runOnModule(Module &module)</div><div class="ttdoc">We start the pass here. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00067">MTA.cpp:67</a></div></div>
|
|
108
108
|
<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>
|
|
109
|
-
<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#
|
|
109
|
+
<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>
|
|
110
110
|
<div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
111
111
|
<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>
|
|
112
|
-
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#
|
|
113
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a427ebcf1f00b601087e5b098c18cc29a"><div class="ttname"><a href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">SVF::MTA::func2LoopInfoMap</a></div><div class="ttdeci">static FunToLoopInfoMap func2LoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
112
|
+
<div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00389">Andersen.h:389</a></div></div>
|
|
113
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a427ebcf1f00b601087e5b098c18cc29a"><div class="ttname"><a href="classSVF_1_1MTA.html#a427ebcf1f00b601087e5b098c18cc29a">SVF::MTA::func2LoopInfoMap</a></div><div class="ttdeci">static FunToLoopInfoMap func2LoopInfoMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00114">MTA.h:114</a></div></div>
|
|
114
114
|
<div class="ttc" id="TCT_8h_html"><div class="ttname"><a href="TCT_8h.html">TCT.h</a></div></div>
|
|
115
115
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
|
|
116
|
-
<div class="ttc" id="classSVF_1_1TCT_html"><div class="ttname"><a href="classSVF_1_1TCT.html">SVF::TCT</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#
|
|
116
|
+
<div class="ttc" id="classSVF_1_1TCT_html"><div class="ttname"><a href="classSVF_1_1TCT.html">SVF::TCT</a></div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00137">TCT.h:137</a></div></div>
|
|
117
117
|
<div class="ttc" id="namespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
|
|
118
118
|
<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>
|
|
119
119
|
<div class="ttc" id="MTA_8h_html"><div class="ttname"><a href="MTA_8h.html">MTA.h</a></div></div>
|
|
120
120
|
<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>
|
|
121
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a308ca0fa99b3c95f3e62b27522b6aeaa"><div class="ttname"><a href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">SVF::MTA::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
121
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a308ca0fa99b3c95f3e62b27522b6aeaa"><div class="ttname"><a href="classSVF_1_1MTA.html#a308ca0fa99b3c95f3e62b27522b6aeaa">SVF::MTA::tcg</a></div><div class="ttdeci">ThreadCallGraph * tcg</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00110">MTA.h:110</a></div></div>
|
|
122
122
|
<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>
|
|
123
123
|
<div class="ttc" id="LockAnalysis_8h_html"><div class="ttname"><a href="LockAnalysis_8h.html">LockAnalysis.h</a></div></div>
|
|
124
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a7a879943a817d0283971b5588cfa83d5"><div class="ttname"><a href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">SVF::MTA::func2ScevMap</a></div><div class="ttdeci">static FunToSEMap func2ScevMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
124
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a7a879943a817d0283971b5588cfa83d5"><div class="ttname"><a href="classSVF_1_1MTA.html#a7a879943a817d0283971b5588cfa83d5">SVF::MTA::func2ScevMap</a></div><div class="ttdeci">static FunToSEMap func2ScevMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00113">MTA.h:113</a></div></div>
|
|
125
125
|
<div class="ttc" id="SVFIRBuilder_8h_html"><div class="ttname"><a href="SVFIRBuilder_8h.html">SVFIRBuilder.h</a></div></div>
|
|
126
|
-
<div class="ttc" id="classSVF_1_1MTA_html_af9558955c068ce922872c259dde1786e"><div class="ttname"><a href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">SVF::MTA::detect</a></div><div class="ttdeci">virtual void detect(SVFModule *module)</div><div class="ttdoc">Perform detection. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
126
|
+
<div class="ttc" id="classSVF_1_1MTA_html_af9558955c068ce922872c259dde1786e"><div class="ttname"><a href="classSVF_1_1MTA.html#af9558955c068ce922872c259dde1786e">SVF::MTA::detect</a></div><div class="ttdeci">virtual void detect(SVFModule *module)</div><div class="ttdoc">Perform detection. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00188">MTA.cpp:188</a></div></div>
|
|
127
127
|
<div class="ttc" id="MTAStat_8h_html"><div class="ttname"><a href="MTAStat_8h.html">MTAStat.h</a></div></div>
|
|
128
|
-
<div class="ttc" id="classSVF_1_1MTA_html_a2c92809f1395aa064c80aef0c3e4c944"><div class="ttname"><a href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">SVF::MTA::FunToSEMap</a></div><div class="ttdeci">Map< const Function *, ScalarEvolution * > FunToSEMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#
|
|
128
|
+
<div class="ttc" id="classSVF_1_1MTA_html_a2c92809f1395aa064c80aef0c3e4c944"><div class="ttname"><a href="classSVF_1_1MTA.html#a2c92809f1395aa064c80aef0c3e4c944">SVF::MTA::FunToSEMap</a></div><div class="ttdeci">Map< const Function *, ScalarEvolution * > FunToSEMap</div><div class="ttdef"><b>Definition:</b> <a href="MTA_8h_source.html#l00063">MTA.h:63</a></div></div>
|
|
129
129
|
<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>
|
|
130
130
|
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
131
|
-
<div class="ttc" id="classSVF_1_1MTA_html_ab25d605ed6040a9ad6ed6fcec4e8d338"><div class="ttname"><a href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">SVF::MTA::MTA</a></div><div class="ttdeci">MTA()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#
|
|
131
|
+
<div class="ttc" id="classSVF_1_1MTA_html_ab25d605ed6040a9ad6ed6fcec4e8d338"><div class="ttname"><a href="classSVF_1_1MTA.html#ab25d605ed6040a9ad6ed6fcec4e8d338">SVF::MTA::MTA</a></div><div class="ttdeci">MTA()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="MTA_8cpp_source.html#l00053">MTA.cpp:53</a></div></div>
|
|
132
132
|
<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>
|
|
133
133
|
<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>
|
|
134
134
|
<div class="ttc" id="FSMPTA_8h_html"><div class="ttname"><a href="FSMPTA_8h.html">FSMPTA.h</a></div></div>
|
|
135
|
-
<div class="ttc" id="classSVF_1_1MTAStat_html_a19c9c1cba3a2cf665f7a05570e316e2e"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a19c9c1cba3a2cf665f7a05570e316e2e">SVF::MTAStat::performThreadCallGraphStat</a></div><div class="ttdeci">void performThreadCallGraphStat(ThreadCallGraph *tcg)</div><div class="ttdoc">Statistics for thread call graph. </div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8cpp_source.html#
|
|
135
|
+
<div class="ttc" id="classSVF_1_1MTAStat_html_a19c9c1cba3a2cf665f7a05570e316e2e"><div class="ttname"><a href="classSVF_1_1MTAStat.html#a19c9c1cba3a2cf665f7a05570e316e2e">SVF::MTAStat::performThreadCallGraphStat</a></div><div class="ttdeci">void performThreadCallGraphStat(ThreadCallGraph *tcg)</div><div class="ttdoc">Statistics for thread call graph. </div><div class="ttdef"><b>Definition:</b> <a href="MTAStat_8cpp_source.html#l00046">MTAStat.cpp:46</a></div></div>
|
|
136
136
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
|
|
137
137
|
</div><!-- fragment --></div><!-- contents -->
|
|
138
138
|
<!-- start footer part -->
|