@@ -303,4 +303,73 @@ else:
303303 ret i32 %i1
304304}
305305
306+ define i32 @one_case_1 (i32 %x ) {
307+ ; CHECK-LABEL: @one_case_1(
308+ ; CHECK-NEXT: entry:
309+ ; CHECK-NEXT: [[X_OFF:%.*]] = add i32 [[X:%.*]], -5
310+ ; CHECK-NEXT: [[SWITCH:%.*]] = icmp ult i32 [[X_OFF]], 3
311+ ; CHECK-NEXT: br i1 [[SWITCH]], label [[A:%.*]], label [[B:%.*]]
312+ ; CHECK: common.ret:
313+ ; CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ [[TMP0:%.*]], [[A]] ], [ [[TMP1:%.*]], [[B]] ]
314+ ; CHECK-NEXT: ret i32 [[COMMON_RET_OP]]
315+ ; CHECK: a:
316+ ; CHECK-NEXT: [[TMP0]] = call i32 @f(i32 0)
317+ ; CHECK-NEXT: br label [[COMMON_RET:%.*]]
318+ ; CHECK: b:
319+ ; CHECK-NEXT: [[TMP1]] = call i32 @f(i32 1)
320+ ; CHECK-NEXT: br label [[COMMON_RET]]
321+ ;
322+ entry:
323+ switch i32 %x , label %unreachable [
324+ i32 5 , label %a
325+ i32 6 , label %a
326+ i32 7 , label %a
327+ i32 10 , label %b
328+ ]
329+
330+ unreachable:
331+ unreachable
332+ a:
333+ %0 = call i32 @f (i32 0 )
334+ ret i32 %0
335+ b:
336+ %1 = call i32 @f (i32 1 )
337+ ret i32 %1
338+ }
339+
340+ define i32 @one_case_2 (i32 %x ) {
341+ ; CHECK-LABEL: @one_case_2(
342+ ; CHECK-NEXT: entry:
343+ ; CHECK-NEXT: [[X_OFF:%.*]] = add i32 [[X:%.*]], -5
344+ ; CHECK-NEXT: [[SWITCH:%.*]] = icmp ult i32 [[X_OFF]], 1
345+ ; CHECK-NEXT: br i1 [[SWITCH]], label [[A:%.*]], label [[B:%.*]]
346+ ; CHECK: common.ret:
347+ ; CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ [[TMP0:%.*]], [[A]] ], [ [[TMP1:%.*]], [[B]] ]
348+ ; CHECK-NEXT: ret i32 [[COMMON_RET_OP]]
349+ ; CHECK: a:
350+ ; CHECK-NEXT: [[TMP0]] = call i32 @f(i32 0)
351+ ; CHECK-NEXT: br label [[COMMON_RET:%.*]]
352+ ; CHECK: b:
353+ ; CHECK-NEXT: [[TMP1]] = call i32 @f(i32 1)
354+ ; CHECK-NEXT: br label [[COMMON_RET]]
355+ ;
356+ entry:
357+ switch i32 %x , label %unreachable [
358+ i32 5 , label %a
359+ i32 10 , label %b
360+ i32 11 , label %b
361+ i32 12 , label %b
362+ i32 13 , label %b
363+ ]
364+
365+ unreachable:
366+ unreachable
367+ a:
368+ %0 = call i32 @f (i32 0 )
369+ ret i32 %0
370+ b:
371+ %1 = call i32 @f (i32 1 )
372+ ret i32 %1
373+ }
374+
306375declare void @bar (ptr nonnull dereferenceable (4 ))
0 commit comments