1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=dse -S | FileCheck %s 3 4target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" 5declare void @unknown_func() 6 7define void @test6_store_same_value(ptr noalias %P) { 8; CHECK-LABEL: @test6_store_same_value( 9; CHECK-NEXT: store i32 0, ptr [[P:%.*]], align 4 10; CHECK-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]] 11; CHECK: bb1: 12; CHECK-NEXT: br label [[BB3:%.*]] 13; CHECK: bb2: 14; CHECK-NEXT: call void @unknown_func() 15; CHECK-NEXT: br label [[BB3]] 16; CHECK: bb3: 17; CHECK-NEXT: store i32 0, ptr [[P]], align 4 18; CHECK-NEXT: ret void 19; 20 store i32 0, ptr %P 21 br i1 true, label %bb1, label %bb2 22bb1: 23 br label %bb3 24bb2: 25 call void @unknown_func() 26 br label %bb3 27bb3: 28 store i32 0, ptr %P 29 ret void 30} 31 32define void @test6_store_other_value(ptr noalias %P) { 33; CHECK-LABEL: @test6_store_other_value( 34; CHECK-NEXT: store i32 0, ptr [[P:%.*]], align 4 35; CHECK-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]] 36; CHECK: bb1: 37; CHECK-NEXT: br label [[BB3:%.*]] 38; CHECK: bb2: 39; CHECK-NEXT: call void @unknown_func() 40; CHECK-NEXT: br label [[BB3]] 41; CHECK: bb3: 42; CHECK-NEXT: store i32 1, ptr [[P]], align 4 43; CHECK-NEXT: ret void 44; 45 store i32 0, ptr %P 46 br i1 true, label %bb1, label %bb2 47bb1: 48 br label %bb3 49bb2: 50 call void @unknown_func() 51 br label %bb3 52bb3: 53 store i32 1, ptr %P 54 ret void 55} 56 57define void @test23(ptr noalias %P) { 58; CHECK-LABEL: @test23( 59; CHECK-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]] 60; CHECK: bb1: 61; CHECK-NEXT: br label [[BB3:%.*]] 62; CHECK: bb2: 63; CHECK-NEXT: call void @unknown_func() 64; CHECK-NEXT: br label [[BB3]] 65; CHECK: bb3: 66; CHECK-NEXT: store i32 0, ptr [[P:%.*]], align 4 67; CHECK-NEXT: ret void 68; 69 br i1 true, label %bb1, label %bb2 70bb1: 71 store i32 0, ptr %P 72 br label %bb3 73bb2: 74 call void @unknown_func() 75 br label %bb3 76bb3: 77 store i32 0, ptr %P 78 ret void 79} 80 81 82define void @test24(ptr noalias %P) { 83; CHECK-LABEL: @test24( 84; CHECK-NEXT: br i1 true, label [[BB2:%.*]], label [[BB1:%.*]] 85; CHECK: bb1: 86; CHECK-NEXT: br label [[BB3:%.*]] 87; CHECK: bb2: 88; CHECK-NEXT: call void @unknown_func() 89; CHECK-NEXT: br label [[BB3]] 90; CHECK: bb3: 91; CHECK-NEXT: store i32 0, ptr [[P:%.*]], align 4 92; CHECK-NEXT: ret void 93; 94 br i1 true, label %bb2, label %bb1 95bb1: 96 store i32 0, ptr %P 97 br label %bb3 98bb2: 99 call void @unknown_func() 100 br label %bb3 101bb3: 102 store i32 0, ptr %P 103 ret void 104} 105