diff options
| author | Cameron Zwarich <zwarich@apple.com> | 2011-05-20 23:25:36 +0000 |
|---|---|---|
| committer | Cameron Zwarich <zwarich@apple.com> | 2011-05-20 23:25:36 +0000 |
| commit | d7ee0fcac992a0eced1902b643c1eca91aba565e (patch) | |
| tree | 3de1628c8845d53ea85850e58aec7641591c3889 /llvm/lib/CodeGen | |
| parent | 0837692ac637c42e585fc876f5cc8ad8229ab2b2 (diff) | |
| download | bcm5719-llvm-d7ee0fcac992a0eced1902b643c1eca91aba565e.tar.gz bcm5719-llvm-d7ee0fcac992a0eced1902b643c1eca91aba565e.zip | |
Fix PR9962 by properly constraining register classes in RemoveCopyByCommutingDef(). This
actually fixes most of the VerifyCoalescing failures in test-suite.
llvm-svn: 131768
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp index c33ce24c5e8..21184895ccb 100644 --- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp +++ b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp @@ -430,6 +430,10 @@ bool SimpleRegisterCoalescing::RemoveCopyByCommutingDef(const CoalescerPair &CP, MachineInstr *NewMI = tii_->commuteInstruction(DefMI); if (!NewMI) return false; + if (TargetRegisterInfo::isVirtualRegister(IntA.reg) && + TargetRegisterInfo::isVirtualRegister(IntB.reg) && + !mri_->constrainRegClass(IntB.reg, mri_->getRegClass(IntA.reg))) + return false; if (NewMI != DefMI) { li_->ReplaceMachineInstrInMaps(DefMI, NewMI); MBB->insert(DefMI, NewMI); |

