xref: /llvm-project/llvm/test/Transforms/SimplifyCFG/merge-deopt-bundle-constants.ll (revision 07b9d231ff9baa6473b0dd588a3ce5330d3e4871)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=simplifycfg -sink-common-insts -S | FileCheck %s
3
4target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
5target triple = "x86_64-unknown-linux-gnu"
6
7define void @test_01(i1 %cond) gc "statepoint-example" personality ptr @zot {
8; CHECK-LABEL: @test_01(
9; CHECK-NEXT:  bb:
10; CHECK-NEXT:    br i1 [[COND:%.*]], label [[BB3:%.*]], label [[BB8:%.*]]
11; CHECK:       bb3:
12; CHECK-NEXT:    [[TMP4:%.*]] = call ptr @wibble()
13; CHECK-NEXT:    [[TMP6:%.*]] = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) [[TMP4]](ptr addrspace(1) undef) [ "deopt"(i32 0) ]
14; CHECK-NEXT:            to label [[BB7:%.*]] unwind label [[BB13:%.*]]
15; CHECK:       bb7:
16; CHECK-NEXT:    unreachable
17; CHECK:       bb8:
18; CHECK-NEXT:    [[TMP9:%.*]] = call ptr @wibble()
19; CHECK-NEXT:    [[TMP11:%.*]] = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) [[TMP9]](ptr addrspace(1) undef) [ "deopt"(i32 1) ]
20; CHECK-NEXT:            to label [[BB12:%.*]] unwind label [[BB13]]
21; CHECK:       bb12:
22; CHECK-NEXT:    unreachable
23; CHECK:       bb13:
24; CHECK-NEXT:    [[TMP14:%.*]] = landingpad { ptr, i32 }
25; CHECK-NEXT:            cleanup
26; CHECK-NEXT:    ret void
27;
28bb:
29  br i1 %cond, label %bb3, label %bb8
30
31bb1:                                              ; preds = %bb13
32  ret void
33
34bb3:                                              ; preds = %bb
35  %tmp4 = call ptr @wibble()
36  %tmp6 = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) %tmp4(ptr addrspace(1) undef) [ "deopt"(i32 0) ]
37  to label %bb7 unwind label %bb13
38
39bb7:                                              ; preds = %bb3
40  unreachable
41
42bb8:                                              ; preds = %bb
43  %tmp9 = call ptr @wibble()
44  %tmp11 = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) %tmp9(ptr addrspace(1) undef) [ "deopt"(i32 1) ]
45  to label %bb12 unwind label %bb13
46
47bb12:                                             ; preds = %bb8
48  unreachable
49
50bb13:                                             ; preds = %bb8, %bb3
51  %tmp14 = landingpad { ptr, i32 }
52  cleanup
53  br label %bb1
54}
55
56define void @test_02(i1 %cond) gc "statepoint-example" personality ptr @zot {
57; CHECK-LABEL: @test_02(
58; CHECK-NEXT:  bb:
59; CHECK-NEXT:    [[TMP4:%.*]] = call ptr @wibble()
60; CHECK-NEXT:    [[TMP0:%.*]] = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) [[TMP4]](ptr addrspace(1) undef) [ "deopt"(i32 0) ]
61; CHECK-NEXT:            to label [[BB8_CONT:%.*]] unwind label [[BB13:%.*]]
62; CHECK:       bb8.cont:
63; CHECK-NEXT:    unreachable
64; CHECK:       bb13:
65; CHECK-NEXT:    [[TMP14:%.*]] = landingpad { ptr, i32 }
66; CHECK-NEXT:            cleanup
67; CHECK-NEXT:    ret void
68;
69bb:
70  br i1 %cond, label %bb3, label %bb8
71
72bb1:                                              ; preds = %bb13
73  ret void
74
75bb3:                                              ; preds = %bb
76  %tmp4 = call ptr @wibble()
77  %tmp6 = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) %tmp4(ptr addrspace(1) undef) [ "deopt"(i32 0) ]
78  to label %bb7 unwind label %bb13
79
80bb7:                                              ; preds = %bb3
81  unreachable
82
83bb8:                                              ; preds = %bb
84  %tmp9 = call ptr @wibble()
85  %tmp11 = invoke align 8 dereferenceable_or_null(8) ptr addrspace(1) %tmp9(ptr addrspace(1) undef) [ "deopt"(i32 0) ]
86  to label %bb12 unwind label %bb13
87
88bb12:                                             ; preds = %bb8
89  unreachable
90
91bb13:                                             ; preds = %bb8, %bb3
92  %tmp14 = landingpad { ptr, i32 }
93  cleanup
94  br label %bb1
95}
96
97
98declare ptr @zot()
99
100declare ptr @wibble()
101