Merging r259740:
[oota-llvm.git] / test / CodeGen / PowerPC / pr25802.ll
1 ; RUN: llc < %s | FileCheck %s
2 ; CHECK: .long   .Ltmp6-.Ltmp12          #   Call between .Ltmp12 and .Ltmp6
3
4 ; We used to crash in filetype=obj when computing a negative value.
5 ; RUN: llc -filetype=obj < %s
6
7 target triple = "powerpc--netbsd"
8 @_ZTI1I = external constant { i8*, i8* }
9 define void @f(i8 %foo, i32 %bar) personality i8* bitcast (void ()* @g to i8*) {
10   invoke void @g()
11           to label %try.cont unwind label %lpad
12 lpad:                                             ; preds = %0
13   %tmp = landingpad { i8*, i32 }
14           catch i8* bitcast ({ i8*, i8* }* @_ZTI1I to i8*)
15   br i1 undef, label %catch10, label %catch
16 catch10:                                          ; preds = %lpad
17   %tmp8 = load i32, i32* undef, align 4
18   %conv.i.i = zext i8 %foo to i32
19   %cond.i.i = select i1 undef, i32 %conv.i.i, i32 %tmp8
20   invoke void @_Z24__put_character_sequenceIccEvR1AIT_T0_Ej(i32 %cond.i.i)
21           to label %invoke.cont20 unwind label %lpad15
22 invoke.cont20:                                    ; preds = %catch10
23   ret void
24 try.cont:                                         ; preds = %0
25   ret void
26 catch:                                            ; preds = %lpad
27   %tmp14 = load i32, i32* undef, align 4
28   %conv.i.i34 = zext i8 %foo to i32
29   %cond.i.i35 = select i1 undef, i32 %conv.i.i34, i32 %tmp14
30   invoke void @_Z24__put_character_sequenceIccEvR1AIT_T0_Ej(i32 %cond.i.i35)
31           to label %invoke.cont8 unwind label %lpad3
32 invoke.cont8:                                     ; preds = %call2.i.i.noexc36
33   ret void
34 lpad3:                                            ; preds = %call2.i.i.noexc36, %catch
35   %tmp16 = landingpad { i8*, i32 }
36           cleanup
37   invoke void @g()
38           to label %eh.resume unwind label %terminate.lpad
39 lpad15:                                           ; preds = %catch10
40   %tmp19 = landingpad { i8*, i32 }
41           cleanup
42   invoke void @g()
43           to label %eh.resume unwind label %terminate.lpad
44 eh.resume:                                        ; preds = %lpad15, %lpad3
45   ret void
46 terminate.lpad:                                   ; preds = %lpad15, %lpad3
47   %tmp22 = landingpad { i8*, i32 }
48           catch i8* null
49   ret void
50 }
51 declare void @g()
52 declare void @_Z24__put_character_sequenceIccEvR1AIT_T0_Ej(i32)