@@ -22,6 +22,29 @@ funclet_end:
22
22
cleanupret from %cleanuppad unwind to caller
23
23
}
24
24
25
+ define void @unreachable_cleanuppad_linear_middle_block (i64 %shapes.1 ) personality ptr null {
26
+ ; CHECK-LABEL: define void @unreachable_cleanuppad_linear_middle_block(
27
+ ; CHECK-SAME: i64 [[SHAPES_1:%.*]]) personality ptr null {
28
+ ; CHECK-NEXT: [[START:.*:]]
29
+ ; CHECK-NEXT: [[_7:%.*]] = icmp ult i64 0, [[SHAPES_1]]
30
+ ; CHECK-NEXT: ret void
31
+ ;
32
+ start:
33
+ %_7 = icmp ult i64 0 , %shapes.1
34
+ ret void
35
+
36
+ funclet:
37
+ %cleanuppad = cleanuppad within none []
38
+ br label %middle_block
39
+
40
+ middle_block:
41
+ %tmp1 = add i64 %shapes.1 , 42
42
+ br label %funclet_end
43
+
44
+ funclet_end:
45
+ cleanupret from %cleanuppad unwind to caller
46
+ }
47
+
25
48
define void @unreachable_cleanuppad_multiple_predecessors (i64 %shapes.1 ) personality ptr null {
26
49
; CHECK-LABEL: define void @unreachable_cleanuppad_multiple_predecessors(
27
50
; CHECK-SAME: i64 [[SHAPES_1:%.*]]) personality ptr null {
@@ -172,10 +195,17 @@ bb13:
172
195
declare x86_thiscallcc ptr @quux (ptr , ptr , i32 )
173
196
174
197
define x86_thiscallcc ptr @baz (ptr %arg , ptr %arg1 , ptr %arg2 , i1 %arg3 , ptr %arg4 ) personality ptr null {
198
+ ; CHECK-LABEL: define x86_thiscallcc ptr @baz(
199
+ ; CHECK-SAME: ptr [[ARG:%.*]], ptr [[ARG1:%.*]], ptr [[ARG2:%.*]], i1 [[ARG3:%.*]], ptr [[ARG4:%.*]]) personality ptr null {
200
+ ; CHECK-NEXT: [[BB:.*:]]
201
+ ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [2 x %struct.foo], align 4
202
+ ; CHECK-NEXT: [[INVOKE:%.*]] = call x86_thiscallcc ptr @quux(ptr null, ptr null, i32 0) #[[ATTR1:[0-9]+]]
203
+ ; CHECK-NEXT: unreachable
204
+ ;
175
205
bb:
176
206
%alloca = alloca [2 x %struct.foo ], align 4
177
207
%invoke = invoke x86_thiscallcc ptr @quux (ptr null , ptr null , i32 0 )
178
- to label %bb5 unwind label %bb10
208
+ to label %bb5 unwind label %bb10
179
209
180
210
bb5: ; preds = %bb
181
211
%getelementptr = getelementptr i8 , ptr %arg , i32 20
0 commit comments