[ARM][Thumb][FIX] Add unwinding information to t4
authorDiogo Sampaio <diogo.sampaio@arm.com>
Mon, 30 Dec 2019 15:43:32 +0000 (15:43 +0000)
committerDiogo Sampaio <diogo.sampaio@arm.com>
Mon, 30 Dec 2019 15:59:48 +0000 (15:59 +0000)
Summary:
Add missing part of patch D71361. Now that the stack-frame
can be operated using a addw/subw instruction, they should
appear in the unwinding list.

Reviewers: dmgreen, efriedma

Reviewed By: dmgreen

Subscribers: kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D72000

llvm/lib/Target/ARM/ARMAsmPrinter.cpp
llvm/test/CodeGen/Thumb2/emit-unwinding.ll

index ed0969f..d180849 100644 (file)
@@ -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:
index b77bb9e..13d509a 100644 (file)
@@ -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
+}