xref: /llvm-project/llvm/test/Transforms/SCCP/2009-01-14-IPSCCP-Invoke.ll (revision 16bb8c16aab32e2ee623a2b64d976548be247180)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2; RUN: opt < %s -passes=ipsccp -S | FileCheck %s
3; PR3325
4
5define i32 @main() personality ptr @__gxx_personality_v0 {
6; CHECK-LABEL: define i32 @main() personality ptr @__gxx_personality_v0 {
7; CHECK-NEXT:    [[TMP1:%.*]] = invoke i32 @f()
8; CHECK-NEXT:            to label %[[UNIFIEDRETURNBLOCK:.*]] unwind label %[[LPAD:.*]]
9; CHECK:       [[LPAD]]:
10; CHECK-NEXT:    [[VAL:%.*]] = landingpad { ptr, i32 }
11; CHECK-NEXT:            cleanup
12; CHECK-NEXT:    unreachable
13; CHECK:       [[UNIFIEDRETURNBLOCK]]:
14; CHECK-NEXT:    ret i32 42
15;
16  %tmp1 = invoke i32 @f()
17  to label %UnifiedReturnBlock unwind label %lpad
18
19lpad:
20  %val = landingpad { ptr, i32 }
21  cleanup
22  unreachable
23
24UnifiedReturnBlock:
25  ret i32 %tmp1
26}
27
28define internal i32 @f() {
29; CHECK-LABEL: define internal i32 @f() {
30; CHECK-NEXT:    ret i32 poison
31;
32  ret i32 42
33}
34
35declare ptr @__cxa_begin_catch(ptr) nounwind
36
37declare void @__cxa_end_catch()
38
39declare i32 @__gxx_personality_v0(...)
40