Fixed some bugs in register stack pass.
[llvm/zpu.git] / test / CodeGen / X86 / personality.ll
blob6789bb0c0fbe2a5c860ee367b40d1d9c9b47e564
1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin9 | FileCheck %s -check-prefix=X64
2 ; RUN: llc < %s -mtriple=i386-apple-darwin9 | FileCheck %s -check-prefix=X32
3 ; PR1632
5 define void @_Z1fv() {
6 entry:
7         invoke void @_Z1gv( )
8                         to label %return unwind label %unwind
10 unwind:         ; preds = %entry
11         br i1 false, label %eh_then, label %cleanup20
13 eh_then:                ; preds = %unwind
14         invoke void @__cxa_end_catch( )
15                         to label %return unwind label %unwind10
17 unwind10:               ; preds = %eh_then
18         %eh_select13 = tail call i64 (i8*, i8*, ...)* @llvm.eh.selector.i64( i8* null, i8* bitcast (void ()* @__gxx_personality_v0 to i8*), i32 1 )             ; <i32> [#uses=2]
19         %tmp18 = icmp slt i64 %eh_select13, 0           ; <i1> [#uses=1]
20         br i1 %tmp18, label %filter, label %cleanup20
22 filter:         ; preds = %unwind10
23         unreachable
25 cleanup20:              ; preds = %unwind10, %unwind
26         %eh_selector.0 = phi i64 [ 0, %unwind ], [ %eh_select13, %unwind10 ]            ; <i32> [#uses=0]
27         ret void
29 return:         ; preds = %eh_then, %entry
30         ret void
33 declare void @_Z1gv()
35 declare i64 @llvm.eh.selector.i64(i8*, i8*, ...)
37 declare void @__gxx_personality_v0()
39 declare void @__cxa_end_catch()
41 ; X64: Leh_frame_common_begin0:
42 ; X64: .long    ___gxx_personality_v0@GOTPCREL+4
44 ; X32: Leh_frame_common_begin0:
45 ; X32: .long    L___gxx_personality_v0$non_lazy_ptr-
46 ; ....
48 ; X32: .section __IMPORT,__pointers,non_lazy_symbol_pointers
49 ; X32: L___gxx_personality_v0$non_lazy_ptr:
50 ; X32:   .indirect_symbol ___gxx_personality_v0