xref: /minix3/external/bsd/llvm/dist/llvm/test/Transforms/DeadArgElim/2009-03-17-MRE-Invoke.ll (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc; RUN: opt < %s -deadargelim | llvm-dis
2*f4a2713aSLionel Sambuc; PR3807
3*f4a2713aSLionel Sambuc
4*f4a2713aSLionel Sambucdefine internal { i32, i32 } @foo() {
5*f4a2713aSLionel Sambuc  ret {i32,i32} {i32 42, i32 4}
6*f4a2713aSLionel Sambuc}
7*f4a2713aSLionel Sambuc
8*f4a2713aSLionel Sambucdefine i32 @bar() {
9*f4a2713aSLionel Sambuc  %x = invoke {i32,i32} @foo() to label %T unwind label %T2
10*f4a2713aSLionel SambucT:
11*f4a2713aSLionel Sambuc  %y = extractvalue {i32,i32} %x, 1
12*f4a2713aSLionel Sambuc  ret i32 %y
13*f4a2713aSLionel SambucT2:
14*f4a2713aSLionel Sambuc  %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
15*f4a2713aSLionel Sambuc            cleanup
16*f4a2713aSLionel Sambuc  unreachable
17*f4a2713aSLionel Sambuc}
18*f4a2713aSLionel Sambuc
19*f4a2713aSLionel Sambucdefine i32 @bar2() {
20*f4a2713aSLionel Sambucentry:
21*f4a2713aSLionel Sambuc  %x = invoke {i32,i32} @foo() to label %T unwind label %T2
22*f4a2713aSLionel SambucT:
23*f4a2713aSLionel Sambuc  %PN = phi i32 [0, %entry]
24*f4a2713aSLionel Sambuc  %y = extractvalue {i32,i32} %x, 1
25*f4a2713aSLionel Sambuc  ret i32 %y
26*f4a2713aSLionel SambucT2:
27*f4a2713aSLionel Sambuc  %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
28*f4a2713aSLionel Sambuc            cleanup
29*f4a2713aSLionel Sambuc  unreachable
30*f4a2713aSLionel Sambuc}
31*f4a2713aSLionel Sambuc
32*f4a2713aSLionel Sambucdeclare i32 @__gxx_personality_v0(...)
33