Skip impdef regs during eabi save/restore list emission to workaround PR11902
authorAnton Korobeynikov <asl@math.spbu.ru>
Sat, 4 Aug 2012 13:25:58 +0000 (13:25 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Sat, 4 Aug 2012 13:25:58 +0000 (13:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161301 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMAsmPrinter.cpp

index 9a1ce06f3a30f94c1f611ca4f0f18b32a25990b7..f93a45d3adae0d980470b192aaf1ab014d8e41a0 100644 (file)
@@ -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: