; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -tut-simplifycfg -tut-simplifycfg-version=v1 < %s -enable-new-pm=0 -S -verify-dom-info | FileCheck %s ; RUN: opt -tut-simplifycfg -tut-simplifycfg-version=v2 < %s -enable-new-pm=0 -S -verify-dom-info | FileCheck %s ; RUN: opt -tut-simplifycfg -tut-simplifycfg-version=v3 < %s -enable-new-pm=0 -S -verify-dom-info | FileCheck %s define void @test() { ; CHECK-LABEL: @test( ; CHECK-NEXT: entry: ; CHECK-NEXT: switch i32 undef, label [[SW_DEFAULT23:%.*]] [ ; CHECK-NEXT: i32 129, label [[SW_BB:%.*]] ; CHECK-NEXT: i32 215, label [[SW_BB1:%.*]] ; CHECK-NEXT: i32 117, label [[SW_BB1]] ; CHECK-NEXT: i32 207, label [[SW_BB1]] ; CHECK-NEXT: i32 158, label [[SW_BB1]] ; CHECK-NEXT: i32 94, label [[SW_BB1]] ; CHECK-NEXT: i32 219, label [[SW_BB1]] ; CHECK-NEXT: i32 88, label [[SW_BB1]] ; CHECK-NEXT: i32 168, label [[SW_BB1]] ; CHECK-NEXT: i32 295, label [[SW_BB1]] ; CHECK-NEXT: i32 294, label [[SW_BB1]] ; CHECK-NEXT: i32 296, label [[SW_BB1]] ; CHECK-NEXT: i32 67, label [[SW_BB1]] ; CHECK-NEXT: i32 293, label [[SW_BB1]] ; CHECK-NEXT: i32 382, label [[SW_BB1]] ; CHECK-NEXT: i32 335, label [[SW_BB1]] ; CHECK-NEXT: i32 393, label [[SW_BB1]] ; CHECK-NEXT: i32 415, label [[SW_BB1]] ; CHECK-NEXT: i32 400, label [[SW_BB1]] ; CHECK-NEXT: i32 383, label [[SW_BB1]] ; CHECK-NEXT: i32 421, label [[SW_BB1]] ; CHECK-NEXT: i32 422, label [[SW_BB1]] ; CHECK-NEXT: i32 302, label [[SW_BB1]] ; CHECK-NEXT: i32 303, label [[SW_BB1]] ; CHECK-NEXT: i32 304, label [[SW_BB1]] ; CHECK-NEXT: i32 420, label [[SW_BB1]] ; CHECK-NEXT: i32 401, label [[SW_EPILOG24:%.*]] ; CHECK-NEXT: i32 53, label [[SW_BB12:%.*]] ; CHECK-NEXT: i32 44, label [[SW_BB12]] ; CHECK-NEXT: ] ; CHECK: sw.bb: ; CHECK-NEXT: unreachable ; CHECK: sw.bb1: ; CHECK-NEXT: br label [[SW_EPILOG24]] ; CHECK: sw.bb12: ; CHECK-NEXT: switch i32 undef, label [[SW_DEFAULT:%.*]] [ ; CHECK-NEXT: i32 47, label [[SW_BB13:%.*]] ; CHECK-NEXT: i32 8, label [[SW_BB13]] ; CHECK-NEXT: ] ; CHECK: sw.bb13: ; CHECK-NEXT: unreachable ; CHECK: sw.default: ; CHECK-NEXT: unreachable ; CHECK: sw.default23: ; CHECK-NEXT: unreachable ; CHECK: sw.epilog24: ; CHECK-NEXT: [[PREVIOUS_3:%.*]] = phi i32 [ undef, [[SW_BB1]] ], [ 401, [[ENTRY:%.*]] ] ; CHECK-NEXT: unreachable ; entry: br label %while.body while.body: ; preds = %entry switch i32 undef, label %sw.default23 [ i32 129, label %sw.bb i32 215, label %sw.bb1 i32 117, label %sw.bb1 i32 207, label %sw.bb1 i32 158, label %sw.bb1 i32 94, label %sw.bb1 i32 219, label %sw.bb1 i32 88, label %sw.bb1 i32 168, label %sw.bb1 i32 295, label %sw.bb1 i32 294, label %sw.bb1 i32 296, label %sw.bb1 i32 67, label %sw.bb1 i32 293, label %sw.bb1 i32 382, label %sw.bb1 i32 335, label %sw.bb1 i32 393, label %sw.bb1 i32 415, label %sw.bb1 i32 400, label %sw.bb1 i32 383, label %sw.bb1 i32 421, label %sw.bb1 i32 422, label %sw.bb1 i32 302, label %sw.bb1 i32 303, label %sw.bb1 i32 304, label %sw.bb1 i32 420, label %sw.bb1 i32 401, label %sw.epilog24 i32 53, label %sw.bb12 i32 44, label %sw.bb12 ] sw.bb: ; preds = %while.body unreachable sw.bb1: ; preds = %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body, %while.body br i1 false, label %land.lhs.true, label %sw.epilog24 land.lhs.true: ; preds = %sw.bb1 br label %sw.epilog24 sw.bb12: ; preds = %while.body, %while.body switch i32 undef, label %sw.default [ i32 47, label %sw.bb13 i32 8, label %sw.bb13 ] sw.bb13: ; preds = %sw.bb12, %sw.bb12 unreachable sw.default: ; preds = %sw.bb12 unreachable sw.default23: ; preds = %while.body unreachable sw.epilog24: ; preds = %land.lhs.true, %sw.bb1, %while.body %Previous.3 = phi i32 [ undef, %land.lhs.true ], [ undef, %sw.bb1 ], [ 401, %while.body ] unreachable }