diff options
author | David Goodwin <david_goodwin@apple.com> | 2009-10-29 23:30:59 +0000 |
---|---|---|
committer | David Goodwin <david_goodwin@apple.com> | 2009-10-29 23:30:59 +0000 |
commit | faa7660fd06a81c3e5125761332f7be4b384381e (patch) | |
tree | fd8b2362692cab3eb16368a5f3375dd931d2e2bf | |
parent | 05efd893dbb171e87ddce096d637d0883eedbd69 (diff) | |
download | bcm5719-llvm-faa7660fd06a81c3e5125761332f7be4b384381e.tar.gz bcm5719-llvm-faa7660fd06a81c3e5125761332f7be4b384381e.zip |
Between scheduling regions, correctly maintain anti-dep breaking state so that we don't incorrectly rename registers that span these regions.
llvm-svn: 85537
-rw-r--r-- | llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp b/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp index 4d8ed69ebc0..5506a1f5260 100644 --- a/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp +++ b/llvm/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<unsigned> 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<unsigned> 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; |