diff options
author | Dan Gohman <gohman@apple.com> | 2008-12-16 06:20:58 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-12-16 06:20:58 +0000 |
commit | fde221fa0a192a00dfdbce35ceec3d2035fe1019 (patch) | |
tree | c6f0f14e25c36f2892dc0ff33a96b4855799f8c3 /lib/CodeGen/PostRASchedulerList.cpp | |
parent | 8749b61178228ba1fb2668034d79da1b247173d7 (diff) |
When breaking an anti-dependency, don't use a register which has seen
one of its aliases defined. This is conservative, but tricky subreg
corner cases are outside the primary aim of this pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61077 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/PostRASchedulerList.cpp')
-rw-r--r-- | lib/CodeGen/PostRASchedulerList.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/CodeGen/PostRASchedulerList.cpp b/lib/CodeGen/PostRASchedulerList.cpp index 0fc6c3370b..865479d300 100644 --- a/lib/CodeGen/PostRASchedulerList.cpp +++ b/lib/CodeGen/PostRASchedulerList.cpp @@ -454,6 +454,7 @@ bool SchedulePostRATDList::BreakAntiDependencies() { assert(((KillIndices[NewReg] == -1u) != (DefIndices[NewReg] == -1u)) && "Kill and Def maps aren't consistent for NewReg!"); if (KillIndices[NewReg] == -1u && + Classes[NewReg] != reinterpret_cast<TargetRegisterClass *>(-1) && KillIndices[AntiDepReg] <= DefIndices[NewReg]) { DOUT << "Breaking anti-dependence edge on " << TRI->getName(AntiDepReg) |