[llvm] f33fd96 - [ARM][Thumb][FIX] Add unwinding information to t4

Diogo Sampaio via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 30 07:59:54 PST 2019


Author: Diogo Sampaio
Date: 2019-12-30T15:59:48Z
New Revision: f33fd9648c442a23f863e03ea1c806da15278fd1

URL: https://github.com/llvm/llvm-project/commit/f33fd9648c442a23f863e03ea1c806da15278fd1
DIFF: https://github.com/llvm/llvm-project/commit/f33fd9648c442a23f863e03ea1c806da15278fd1.diff

LOG: [ARM][Thumb][FIX] Add unwinding information to t4

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

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
index ed0969fa625b..d18084901e42 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 b77bb9e6b13c..13d509acd13c 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
+}


        


More information about the llvm-commits mailing list