; 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 }