summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2012-08-04 13:25:58 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2012-08-04 13:25:58 +0000
commitad62e92279bc0b14c54db94dd794082c8b8edd9e (patch)
tree82cfa72c094c651757dc6c374b90f12a88cb5b30 /lib
parent161474d198d44ab505861c1ec55f022b27314b35 (diff)
downloadllvm-ad62e92279bc0b14c54db94dd794082c8b8edd9e.tar.gz
llvm-ad62e92279bc0b14c54db94dd794082c8b8edd9e.tar.bz2
llvm-ad62e92279bc0b14c54db94dd794082c8b8edd9e.tar.xz
Skip impdef regs during eabi save/restore list emission to workaround PR11902
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161301 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/ARM/ARMAsmPrinter.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp
index 9a1ce06f3a..f93a45d3ad 100644
--- a/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -1136,8 +1136,14 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) {
assert(SrcReg == ARM::SP &&
"Only stack pointer as a source reg is supported");
for (unsigned i = StartOp, NumOps = MI->getNumOperands() - NumOffset;
- i != NumOps; ++i)
- RegList.push_back(MI->getOperand(i).getReg());
+ i != NumOps; ++i) {
+ const MachineOperand &MO = MI->getOperand(i);
+ // Actually, there should never be any impdef stuff here. Skip it
+ // temporary to workaround PR11902.
+ if (MO.isImplicit())
+ continue;
+ RegList.push_back(MO.getReg());
+ }
break;
case ARM::STR_PRE_IMM:
case ARM::STR_PRE_REG: