136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; RUN: opt < %s -lowerinvoke -S | FileCheck %s
236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdeclare i32 @external_func(i64 %arg)
436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesdefine i32 @invoke_test(i64 %arg) {
636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesentry:
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %result = invoke fastcc i32 @external_func(i64 inreg %arg)
836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      to label %cont unwind label %lpad
936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinescont:
1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  ret i32 %result
1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hineslpad:
1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %phi = phi i32 [ 99, %entry ]
1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  %lp = landingpad { i8*, i32 } personality i8* null cleanup
1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  ret i32 %phi
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; The "invoke" should be converted to a "call".
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; CHECK-LABEL: define i32 @invoke_test
1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; CHECK: %result = call fastcc i32 @external_func(i64 inreg %arg)
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; CHECK-NEXT: br label %cont
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; Note that this pass does not remove dead landingpad blocks.
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; CHECK: lpad:
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; CHECK-NOT: phi
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines; CHECK: landingpad
26