1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -S -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s 3 4declare void @widget() 5declare void @baz(i8) 6declare void @snork() 7declare void @spam(i8) 8declare void @zot() 9 10define void @wombat(i64 %arg, i1 %arg1) { 11; CHECK-LABEL: @wombat( 12; CHECK-NEXT: bb: 13; CHECK-NEXT: [[COND:%.*]] = icmp eq i64 [[ARG:%.*]], 0 14; CHECK-NEXT: br i1 [[COND]], label [[BB4:%.*]], label [[BB2:%.*]] 15; CHECK: bb2: 16; CHECK-NEXT: call void @widget() 17; CHECK-NEXT: br label [[BB4]] 18; CHECK: bb4: 19; CHECK-NEXT: [[TMP:%.*]] = phi i8 [ 0, [[BB:%.*]] ], [ 1, [[BB2]] ] 20; CHECK-NEXT: call void @baz(i8 [[TMP]]) 21; CHECK-NEXT: call void @snork() 22; CHECK-NEXT: call void @spam(i8 4) 23; CHECK-NEXT: ret void 24; 25bb: 26 switch i64 %arg, label %bb2 [ 27 i64 0, label %bb3 28 ] 29 30bb2: ; preds = %bb 31 call void @widget() 32 br label %bb3 33 34bb3: ; preds = %bb2, %bb 35 %tmp = phi i8 [ 0, %bb ], [ 1, %bb2 ] 36 br label %bb4 37 38bb4: ; preds = %bb3 39 call void @baz(i8 %tmp) 40 %tmp5 = select i1 %arg1, i64 6, i64 3 41 switch i64 %tmp5, label %bb7 [ 42 i64 1, label %bb6 43 i64 0, label %bb8 44 ] 45 46bb6: ; preds = %bb4 47 call void @zot() 48 br label %bb8 49 50bb7: ; preds = %bb4 51 call void @snork() 52 br label %bb8 53 54bb8: ; preds = %bb7, %bb6, %bb4 55 %tmp9 = phi i8 [ 2, %bb4 ], [ 3, %bb6 ], [ 4, %bb7 ] 56 call void @spam(i8 %tmp9) 57 ret void 58} 59