xref: /aosp_15_r20/external/llvm/test/Transforms/LoopSimplify/2011-12-14-LandingpadHeader.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -loop-simplify -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; PR11575
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker@catchtypeinfo = external unnamed_addr constant { i8*, i8*, i8* }
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @main() uwtable ssp personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
7*9880d681SAndroid Build Coastguard Workerentry:
8*9880d681SAndroid Build Coastguard Worker  invoke void @f1()
9*9880d681SAndroid Build Coastguard Worker          to label %try.cont19 unwind label %catch
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker; CHECK: catch.preheader:
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: landingpad
13*9880d681SAndroid Build Coastguard Worker; CHECK: br label %catch
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker; CHECK: catch.preheader.split-lp:
16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: landingpad
17*9880d681SAndroid Build Coastguard Worker; CHECK: br label %catch
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workercatch:                                            ; preds = %if.else, %entry
20*9880d681SAndroid Build Coastguard Worker  %0 = landingpad { i8*, i32 }
21*9880d681SAndroid Build Coastguard Worker          catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*)
22*9880d681SAndroid Build Coastguard Worker  invoke void @f3()
23*9880d681SAndroid Build Coastguard Worker          to label %if.else unwind label %eh.resume
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerif.else:                                          ; preds = %catch
26*9880d681SAndroid Build Coastguard Worker  invoke void @f2()
27*9880d681SAndroid Build Coastguard Worker          to label %try.cont19 unwind label %catch
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workertry.cont19:                                       ; preds = %if.else, %entry
30*9880d681SAndroid Build Coastguard Worker  ret void
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workereh.resume:                                        ; preds = %catch
33*9880d681SAndroid Build Coastguard Worker  %1 = landingpad { i8*, i32 }
34*9880d681SAndroid Build Coastguard Worker          cleanup
35*9880d681SAndroid Build Coastguard Worker          catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*)
36*9880d681SAndroid Build Coastguard Worker  resume { i8*, i32 } undef
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdeclare i32 @__gxx_personality_v0(...)
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workerdeclare void @f1()
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdeclare void @f2()
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerdeclare void @f3()
46