aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/PowerPC/PPCISelPattern.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Target/PowerPC/PPCISelPattern.cpp')
-rw-r--r--lib/Target/PowerPC/PPCISelPattern.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Target/PowerPC/PPCISelPattern.cpp b/lib/Target/PowerPC/PPCISelPattern.cpp
index 750161caf8..5b4c6e58d5 100644
--- a/lib/Target/PowerPC/PPCISelPattern.cpp
+++ b/lib/Target/PowerPC/PPCISelPattern.cpp
@@ -1572,6 +1572,11 @@ unsigned ISel::SelectExpr(SDOperand N, bool Recording) {
SDNode *Node = N.Val;
MVT::ValueType DestType = N.getValueType();
+ if (Node->getOpcode() == ISD::CopyFromReg &&
+ MRegisterInfo::isVirtualRegister(cast<RegSDNode>(Node)->getReg()))
+ // Just use the specified register as our input.
+ return cast<RegSDNode>(Node)->getReg();
+
unsigned &Reg = ExprMap[N];
if (Reg) return Reg;