From 5b3c308970f9fe1f6a2e0df265dcd40ea8ad50a8 Mon Sep 17 00:00:00 2001 From: David Goodwin Date: Thu, 29 Oct 2009 23:30:59 +0000 Subject: [PATCH] Between scheduling regions, correctly maintain anti-dep breaking state so that we don't incorrectly rename registers that span these regions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85537 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AggressiveAntiDepBreaker.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/CodeGen/AggressiveAntiDepBreaker.cpp b/lib/CodeGen/AggressiveAntiDepBreaker.cpp index 4d8ed69ebc0..5506a1f5260 100644 --- a/lib/CodeGen/AggressiveAntiDepBreaker.cpp +++ b/lib/CodeGen/AggressiveAntiDepBreaker.cpp @@ -195,8 +195,14 @@ void AggressiveAntiDepBreaker::Observe(MachineInstr *MI, unsigned Count, unsigned InsertPosIndex) { assert(Count < InsertPosIndex && "Instruction index out of expected range!"); + std::set PassthruRegs; + GetPassthruRegs(MI, PassthruRegs); + PrescanInstruction(MI, Count, PassthruRegs); + ScanInstruction(MI, Count); + DEBUG(errs() << "Observe: "); DEBUG(MI->dump()); + DEBUG(errs() << "\tRegs:"); unsigned *DefIndices = State->GetDefIndices(); for (unsigned Reg = 0; Reg != TargetRegisterInfo::FirstVirtualRegister; ++Reg) { @@ -215,11 +221,7 @@ void AggressiveAntiDepBreaker::Observe(MachineInstr *MI, unsigned Count, DefIndices[Reg] = Count; } } - - std::set PassthruRegs; - GetPassthruRegs(MI, PassthruRegs); - PrescanInstruction(MI, Count, PassthruRegs); - ScanInstruction(MI, Count); + DEBUG(errs() << '\n'); // We're starting a new schedule region so forget any saved state. delete SavedState;