blob: 1a8115e3ca386e7b0d14ba47de50671b2b9d7d60 [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s
define i32 @nodedup(i1 %c, i16 %v) {
; CHECK-LABEL: define i32 @nodedup(
; CHECK-SAME: i1 [[C:%.*]], i16 [[V:%.*]]) {
; CHECK-NEXT: br i1 [[C]], label %[[B1:.*]], label %[[B2:.*]]
; CHECK: [[B1]]:
; CHECK-NEXT: switch i16 [[V]], label %[[RET2:.*]] [
; CHECK-NEXT: i16 1962, label %[[COMMON_RET:.*]]
; CHECK-NEXT: i16 2000, label %[[COMMON_RET]]
; CHECK-NEXT: i16 1963, label %[[COMMON_RET]]
; CHECK-NEXT: ]
; CHECK: [[B2]]:
; CHECK-NEXT: switch i16 [[V]], label %[[RET2]] [
; CHECK-NEXT: i16 2766, label %[[COMMON_RET]]
; CHECK-NEXT: i16 2798, label %[[COMMON_RET]]
; CHECK-NEXT: i16 2767, label %[[COMMON_RET]]
; CHECK-NEXT: ]
; CHECK: [[COMMON_RET]]:
; CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ 3, %[[RET2]] ], [ 1, %[[B2]] ], [ 1, %[[B2]] ], [ 1, %[[B2]] ], [ 1, %[[B1]] ], [ 1, %[[B1]] ], [ 1, %[[B1]] ]
; CHECK-NEXT: ret i32 [[COMMON_RET_OP]]
; CHECK: [[RET2]]:
; CHECK-NEXT: br label %[[COMMON_RET]]
;
br i1 %c, label %b1, label %b2
b1:
switch i16 %v, label %ret2 [
i16 1962, label %ret1
i16 2000, label %ret1
i16 1963, label %ret1
]
b2:
switch i16 %v, label %ret2 [
i16 2766, label %ret1
i16 2798, label %ret1
i16 2767, label %ret1
]
ret1:
ret i32 1
ret2:
ret i32 3
}
define i32 @dedup(i1 %c, i16 %v) {
; CHECK-LABEL: define i32 @dedup(
; CHECK-SAME: i1 [[C:%.*]], i16 [[V:%.*]]) {
; CHECK-NEXT: switch i16 [[V]], label %[[RET2:.*]] [
; CHECK-NEXT: i16 2766, label %[[COMMON_RET:.*]]
; CHECK-NEXT: i16 2798, label %[[COMMON_RET]]
; CHECK-NEXT: i16 2767, label %[[COMMON_RET]]
; CHECK-NEXT: ]
; CHECK: [[COMMON_RET]]:
; CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ 3, %[[RET2]] ], [ 1, [[TMP0:%.*]] ], [ 1, [[TMP0]] ], [ 1, [[TMP0]] ]
; CHECK-NEXT: ret i32 [[COMMON_RET_OP]]
; CHECK: [[RET2]]:
; CHECK-NEXT: br label %[[COMMON_RET]]
;
br i1 %c, label %b1, label %b2
b1:
switch i16 %v, label %ret2 [
i16 2766, label %ret1
i16 2798, label %ret1
i16 2767, label %ret1
]
b2:
switch i16 %v, label %ret2 [
i16 2766, label %ret1
i16 2798, label %ret1
i16 2767, label %ret1
]
ret1:
ret i32 1
ret2:
ret i32 3
}