forked from llvm-mirror/llvm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information
1 parent
202be06
commit bb5d9ac
Showing
1 changed file
with
59 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |