llvm-6502/test/CodeGen/X86/2007-05-05-Personality.ll
Rafael Espindola f0adba9a7e Add 129518 back with a fix for when we are producing eh just because of debug info.
Change ELF systems to use CFI for producing the EH tables. This reduces the
size of the clang binary in Debug builds from 690MB to 679MB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129571 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-15 15:11:06 +00:00

39 lines
1.1 KiB
LLVM

; RUN: llc < %s -mtriple=i686-pc-linux-gnu -o - | FileCheck %s
; CHECK: .cfi_lsda 0, .Lexception0
; CHECK: .cfi_personality 0, __gnat_eh_personality
@error = external global i8 ; <i8*> [#uses=2]
define void @_ada_x() {
entry:
invoke void @raise( )
to label %eh_then unwind label %unwind
unwind: ; preds = %entry
%eh_ptr = tail call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i8* @error ) ; <i32> [#uses=1]
%eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* @error ) ; <i32> [#uses=1]
%tmp2 = icmp eq i32 %eh_select, %eh_typeid ; <i1> [#uses=1]
br i1 %tmp2, label %eh_then, label %Unwind
eh_then: ; preds = %unwind, %entry
ret void
Unwind: ; preds = %unwind
tail call i32 (...)* @_Unwind_Resume( i8* %eh_ptr ) ; <i32>:0 [#uses=0]
unreachable
}
declare void @raise()
declare i8* @llvm.eh.exception()
declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
declare i32 @llvm.eh.typeid.for.i32(i8*)
declare i32 @__gnat_eh_personality(...)
declare i32 @_Unwind_Resume(...)