From 67f0f878cda5d558910153ed41fe767eb73b9b66 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Tue, 10 Nov 2015 00:10:41 +0000 Subject: [PATCH] [ARM] Handle t2ADDri in ARMAsmPrinter::EmitUnwindingInstruction. This fixes a bug in ARMAsmPrinter::EmitUnwindingInstruction where llvm_unreachable was reached because t2ADDri wasn't handled. Test case provided by Tim Northover. rdar://problem/23270609 http://reviews.llvm.org/D14518 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252557 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMAsmPrinter.cpp | 1 + test/CodeGen/Thumb2/emit-unwinding.ll | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 test/CodeGen/Thumb2/emit-unwinding.ll diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index ef56a0114f5..67ebfa2b581 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -1125,6 +1125,7 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) { Offset = 0; break; case ARM::ADDri: + case ARM::t2ADDri: Offset = -MI->getOperand(2).getImm(); break; case ARM::SUBri: diff --git a/test/CodeGen/Thumb2/emit-unwinding.ll b/test/CodeGen/Thumb2/emit-unwinding.ll new file mode 100644 index 00000000000..1f1ea1b48af --- /dev/null +++ b/test/CodeGen/Thumb2/emit-unwinding.ll @@ -0,0 +1,11 @@ +; RUN: llc -mtriple thumbv7em-apple-unknown-eabi-macho %s -o - -O0 | FileCheck %s + +; CHECK: add.w r11, sp, #{{[1-9]+}} + +define void @foo1() { + call void asm sideeffect "", "~{r4}"() + call void @foo2() + ret void +} + +declare void @foo2()