92 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=dse -S %s | FileCheck %s3 4@b = local_unnamed_addr global i32 0, align 45 6; Reduced test case for PR47285.7 8; `store i32 9, ptr @b` in %interesting is not killed by `store i32 23, ptr @b`9; in %killer, because it is not overwritten before reaching the end of the10; function via %bb.2 -> %no.overwrite.exit.11 12define void @test(i1 %c.0, i1 %c.2, i1 %c.3, i1 %c.4, i1 %c.5, i1 %c.6) {13; CHECK-LABEL: @test(14; CHECK-NEXT: entry:15; CHECK-NEXT: br label [[BB_2:%.*]]16; CHECK: bb.2:17; CHECK-NEXT: br i1 [[C_0:%.*]], label [[BB_3:%.*]], label [[NO_OVERWRITE_EXIT:%.*]]18; CHECK: no.overwrite.exit:19; CHECK-NEXT: ret void20; CHECK: bb.3:21; CHECK-NEXT: br i1 [[C_2:%.*]], label [[BB_4:%.*]], label [[BB_7:%.*]]22; CHECK: bb.4:23; CHECK-NEXT: br i1 [[C_4:%.*]], label [[BB_5:%.*]], label [[BB_6:%.*]]24; CHECK: bb.5:25; CHECK-NEXT: store i32 99, ptr @b, align 426; CHECK-NEXT: br i1 [[C_3:%.*]], label [[BB_5]], label [[BB_2]]27; CHECK: bb.6:28; CHECK-NEXT: store i32 91, ptr @b, align 429; CHECK-NEXT: br i1 [[C_5:%.*]], label [[SPLIT_CRIT_EDGE_2:%.*]], label [[BB_2]]30; CHECK: split_crit_edge.2:31; CHECK-NEXT: store i32 27, ptr @b, align 432; CHECK-NEXT: br label [[EXIT:%.*]]33; CHECK: bb.7:34; CHECK-NEXT: br i1 [[C_4]], label [[INTERESTING:%.*]], label [[BB_8:%.*]]35; CHECK: interesting:36; CHECK-NEXT: store i32 9, ptr @b, align 437; CHECK-NEXT: br i1 [[C_6:%.*]], label [[KILLER:%.*]], label [[BB_2]]38; CHECK: killer:39; CHECK-NEXT: store i32 23, ptr @b, align 440; CHECK-NEXT: ret void41; CHECK: bb.8:42; CHECK-NEXT: store i32 19, ptr @b, align 443; CHECK-NEXT: br i1 [[C_4]], label [[EXIT]], label [[BB_2]]44; CHECK: exit:45; CHECK-NEXT: ret void46;47entry:48 br label %bb.249 50bb.2: ; preds = %bb.8, %interesting, %bb.6, %bb.5, %entry51 br i1 %c.0, label %bb.3, label %no.overwrite.exit52 53no.overwrite.exit: ; preds = %bb.254 ret void55 56bb.3: ; preds = %bb.257 br i1 %c.2, label %bb.4, label %bb.758 59bb.4: ; preds = %bb.360 br i1 %c.4, label %bb.5, label %bb.661 62bb.5: ; preds = %bb.5, %bb.463 store i32 99, ptr @b, align 464 br i1 %c.3, label %bb.5, label %bb.265 66bb.6: ; preds = %bb.467 store i32 91, ptr @b, align 468 br i1 %c.5, label %split_crit_edge.2, label %bb.269 70split_crit_edge.2: ; preds = %bb.671 store i32 27, ptr @b, align 472 br label %exit73 74bb.7: ; preds = %bb.375 br i1 %c.4, label %interesting, label %bb.876 77interesting: ; preds = %bb.778 store i32 9, ptr @b, align 479 br i1 %c.6, label %killer, label %bb.280 81killer: ; preds = %interesting82 store i32 23, ptr @b, align 483 ret void84 85bb.8: ; preds = %bb.786 store i32 19, ptr @b, align 487 br i1 %c.4, label %exit, label %bb.288 89exit: ; preds = %bb.8, %split_crit_edge.290 ret void91}92