blob: 7d21b71ac3739eb2396b5914ae219bf7daba6e18 [file] [log] [blame]
Rafael Espindolaf0adba92011-04-15 15:11:06 +00001; RUN: llc < %s -mtriple=i686-pc-linux-gnu -o - | FileCheck %s
2
Rafael Espindolaf0adba92011-04-15 15:11:06 +00003; CHECK: .cfi_personality 0, __gnat_eh_personality
Rafael Espindola7b11a4c2011-04-29 14:48:51 +00004; CHECK: .cfi_lsda 0, .Lexception0
Duncan Sands9426caa2007-05-05 20:22:08 +00005
Chris Lattnerb85e4eb2011-06-18 06:05:24 +00006@error = external global i8
Duncan Sands9426caa2007-05-05 20:22:08 +00007
8define void @_ada_x() {
9entry:
Chris Lattnerb85e4eb2011-06-18 06:05:24 +000010 invoke void @raise()
11 to label %eh_then unwind label %unwind
Duncan Sands9426caa2007-05-05 20:22:08 +000012
Bill Wendling8b7d7692011-11-08 00:17:28 +000013unwind: ; preds = %entry
14 %eh_ptr = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*)
15 catch i8* @error
16 %eh_select = extractvalue { i8*, i32 } %eh_ptr, 1
Chris Lattnerb85e4eb2011-06-18 06:05:24 +000017 %eh_typeid = tail call i32 @llvm.eh.typeid.for(i8* @error)
18 %tmp2 = icmp eq i32 %eh_select, %eh_typeid
19 br i1 %tmp2, label %eh_then, label %Unwind
Duncan Sands9426caa2007-05-05 20:22:08 +000020
Chris Lattnerb85e4eb2011-06-18 06:05:24 +000021eh_then: ; preds = %unwind, %entry
22 ret void
Duncan Sands9426caa2007-05-05 20:22:08 +000023
Chris Lattnerb85e4eb2011-06-18 06:05:24 +000024Unwind: ; preds = %unwind
Bill Wendling8b7d7692011-11-08 00:17:28 +000025 resume { i8*, i32 } %eh_ptr
Duncan Sands9426caa2007-05-05 20:22:08 +000026}
27
28declare void @raise()
29
Chris Lattnerb85e4eb2011-06-18 06:05:24 +000030declare i32 @llvm.eh.typeid.for(i8*) nounwind
Duncan Sands9426caa2007-05-05 20:22:08 +000031
32declare i32 @__gnat_eh_personality(...)
33
34declare i32 @_Unwind_Resume(...)