summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/ARM/ARMAsmPrinter.cpp2
-rw-r--r--llvm/test/CodeGen/Thumb2/emit-unwinding.ll15
2 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
index ed0969fa625..d18084901e4 100644
--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -1170,10 +1170,12 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) {
break;
case ARM::ADDri:
case ARM::t2ADDri:
+ case ARM::t2ADDri12:
Offset = -MI->getOperand(2).getImm();
break;
case ARM::SUBri:
case ARM::t2SUBri:
+ case ARM::t2SUBri12:
Offset = MI->getOperand(2).getImm();
break;
case ARM::tSUBspi:
diff --git a/llvm/test/CodeGen/Thumb2/emit-unwinding.ll b/llvm/test/CodeGen/Thumb2/emit-unwinding.ll
index b77bb9e6b13..13d509acd13 100644
--- a/llvm/test/CodeGen/Thumb2/emit-unwinding.ll
+++ b/llvm/test/CodeGen/Thumb2/emit-unwinding.ll
@@ -9,3 +9,18 @@ define void @foo1() {
}
declare void @foo2()
+
+; CHECK: _bar:
+; CHECK-NEXT: .cfi_startproc
+; CHECK-NEXT: @ %bb.0:
+; CHECK-NEXT: subw sp, sp, #3800
+; CHECK-NEXT: .cfi_def_cfa_offset 3800
+; CHECK-NEXT: addw sp, sp, #3800
+; CHECK-NEXT: bx lr
+; CHECK-NEXT: .cfi_endproc
+
+define void @bar() {
+ %a1 = alloca [3800 x i8], align 4
+ %p = getelementptr inbounds [3800 x i8], [3800 x i8]* %a1, i32 0, i32 0
+ ret void
+}
OpenPOWER on IntegriCloud