diff --git a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp index cabf759762a72..876adddcfbbaa 100644 --- a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp +++ b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp @@ -145,7 +145,6 @@ void GCNSchedStrategy::initialize(ScheduleDAGMI *DAG) { VGPRCriticalLimit -= std::min(VGPRLimitBias + ErrorMargin, VGPRCriticalLimit); SGPRExcessLimit -= std::min(SGPRLimitBias + ErrorMargin, SGPRExcessLimit); VGPRExcessLimit -= std::min(VGPRLimitBias + ErrorMargin, VGPRExcessLimit); - LLVM_DEBUG(dbgs() << "VGPRCriticalLimit = " << VGPRCriticalLimit << ", VGPRExcessLimit = " << VGPRExcessLimit << ", SGPRCriticalLimit = " << SGPRCriticalLimit @@ -1163,6 +1162,8 @@ void GCNScheduleDAGMILive::runSchedStages() { ScheduleDAGMILive::schedule(); Stage->finalizeGCNRegion(); + Stage->advanceRegion(); + exitRegion(); } Stage->finalizeGCNSchedStage(); @@ -1473,9 +1474,6 @@ void GCNSchedStage::finalizeGCNRegion() { if (DAG.RegionsWithIGLPInstrs[RegionIdx] && StageID != GCNSchedStageID::UnclusteredHighRPReschedule) SavedMutations.swap(DAG.Mutations); - - DAG.exitRegion(); - advanceRegion(); } void GCNSchedStage::checkScheduling() { diff --git a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h index 95a931b9beb2a..6563c8d050ff9 100644 --- a/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h +++ b/llvm/lib/Target/AMDGPU/GCNSchedStrategy.h @@ -367,12 +367,12 @@ class GCNSchedStage { // be skipped. virtual bool initGCNRegion(); + // Finalize state after scheduling a region. + virtual void finalizeGCNRegion(); + // Track whether a new region is also a new MBB. void setupNewBlock(); - // Finalize state after scheudling a region. - void finalizeGCNRegion(); - // Check result of scheduling. void checkScheduling();