From bb5d9acac77f97e7c93de20ffe0a2eaf6eafd4e2 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Wed, 14 May 2014 16:37:32 +0000 Subject: [PATCH] More test case for r208715. The commit r208166 will cause some regression on ARM EHABI. This fix has been committed in r208715, and an assertion failure test case has been committed in r208770. This commit further extends the unittest so that the actual value in the handlerdata will be checked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208790 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/ARM/ehabi-handlerdata.ll | 59 +++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 test/CodeGen/ARM/ehabi-handlerdata.ll diff --git a/test/CodeGen/ARM/ehabi-handlerdata.ll b/test/CodeGen/ARM/ehabi-handlerdata.ll new file mode 100644 index 00000000000..7045902f99c --- /dev/null +++ b/test/CodeGen/ARM/ehabi-handlerdata.ll @@ -0,0 +1,59 @@ +; ARM EHABI test for the handlerdata. + +; This test case checks whether the handlerdata for exception +; handling is generated properly. +; +; (1) The handlerdata must not be empty. +; (2) LPStartEncoding == DW_EH_PE_omit +; (3) TTypeEncoding == DW_EH_PE_absptr +; (4) CallSiteEncoding == DW_EH_PE_udata4 + +; RUN: llc -mtriple arm-unknown-linux-gnueabi -filetype=asm -o - %s \ +; RUN: | FileCheck %s + +; RUN: llc -mtriple arm-unknown-linux-gnueabi -filetype=asm -o - %s \ +; RUN: -relocation-model=pic \ +; RUN: | FileCheck %s + +declare void @throw_exception() + +declare i32 @__gxx_personality_v0(...) + +declare i8* @__cxa_begin_catch(i8*) + +declare void @__cxa_end_catch() + +define void @test1() { +entry: + invoke void @throw_exception() to label %try.cont unwind label %lpad + +lpad: + %0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) + catch i8* null + %1 = extractvalue { i8*, i32 } %0, 0 + %2 = tail call i8* @__cxa_begin_catch(i8* %1) + tail call void @__cxa_end_catch() + br label %try.cont + +try.cont: + ret void +} + +; CHECK: .globl test1 +; CHECK: .align 2 +; CHECK: .type test1,%function +; CHECK-LABEL: test1: +; CHECK: .fnstart +; CHECK: .personality __gxx_personality_v0 +; CHECK: .handlerdata +; CHECK: .align 2 +; CHECK-LABEL: GCC_except_table0: +; CHECK-LABEL: .Lexception0: +; CHECK: .byte 255 @ @LPStart Encoding = omit +; CHECK: .byte 0 @ @TType Encoding = absptr +; CHECK: .asciz +; CHECK: .byte 3 @ Call site Encoding = udata4 +; CHECK: .long +; CHECK: .long +; CHECK: .long +; CHECK: .fnend -- 2.34.1