xref: /llvm-project/llvm/test/Transforms/LowerInvoke/lowerinvoke.ll (revision e390c229a438ed1eb3396df8fbeeda89c49474e6)
1; RUN: opt < %s -passes=lower-invoke -S | FileCheck %s
2; RUN: opt < %s -passes='lower-invoke' -S | FileCheck %s
3
4declare i32 @external_func(i64 %arg)
5
6define i32 @invoke_test(i64 %arg) personality ptr null {
7entry:
8  %result = invoke fastcc i32 @external_func(i64 inreg %arg)
9      to label %cont unwind label %lpad
10cont:
11  ret i32 %result
12lpad:
13  %phi = phi i32 [ 99, %entry ]
14  %lp = landingpad { ptr, i32 } cleanup
15  ret i32 %phi
16}
17
18; The "invoke" should be converted to a "call".
19; CHECK-LABEL: define i32 @invoke_test
20; CHECK: %result = call fastcc i32 @external_func(i64 inreg %arg)
21; CHECK-NEXT: br label %cont
22
23; Note that this pass does not remove dead landingpad blocks.
24; CHECK: lpad:
25; CHECK-NOT: phi
26; CHECK: landingpad
27