summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-07-09 05:56:21 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-07-09 05:56:21 +0000
commitd4d9e53b2035722d71ff395997457f84243b8cb8 (patch)
tree79a2be18e6362ead033186562e23b666ba4d8399 /llvm/lib
parentab71ead011c6b6ebbd80d30c9b4c6306f17d3d6c (diff)
downloadbcm5719-llvm-d4d9e53b2035722d71ff395997457f84243b8cb8.tar.gz
bcm5719-llvm-d4d9e53b2035722d71ff395997457f84243b8cb8.zip
Avoid creating %physreg:subidx operands in SimpleRegisterCoalescing::RemoveCopyByCommutingDef.
This fixes PR7602. llvm-svn: 107957
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
index 87337c9676e..b547c1df743 100644
--- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
+++ b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
@@ -460,7 +460,10 @@ bool SimpleRegisterCoalescing::RemoveCopyByCommutingDef(const CoalescerPair &CP,
LiveInterval::iterator ULR = IntA.FindLiveRangeContaining(UseIdx);
if (ULR == IntA.end() || ULR->valno != AValNo)
continue;
- UseMO.setReg(NewReg);
+ if (TargetRegisterInfo::isPhysicalRegister(NewReg))
+ UseMO.substPhysReg(NewReg, *tri_);
+ else
+ UseMO.setReg(NewReg);
if (UseMI == CopyMI)
continue;
if (UseMO.isKill()) {
OpenPOWER on IntegriCloud