; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -basic-aa -dse -S | FileCheck %s target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" declare void @unknown_func() define void @test6_store_same_value(i32* noalias %P) { ; CHECK-LABEL: @test6_store_same_value( ; CHECK-NEXT: store i32 0, i32* [[P:%.*]], align 4 ; CHECK-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]] ; CHECK: bb1: ; CHECK-NEXT: br label [[BB3:%.*]] ; CHECK: bb2: ; CHECK-NEXT: call void @unknown_func() ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: ; CHECK-NEXT: store i32 0, i32* [[P]], align 4 ; CHECK-NEXT: ret void ; store i32 0, i32* %P br i1 true, label %bb1, label %bb2 bb1: br label %bb3 bb2: call void @unknown_func() br label %bb3 bb3: store i32 0, i32* %P ret void } define void @test6_store_other_value(i32* noalias %P) { ; CHECK-LABEL: @test6_store_other_value( ; CHECK-NEXT: store i32 0, i32* [[P:%.*]], align 4 ; CHECK-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]] ; CHECK: bb1: ; CHECK-NEXT: br label [[BB3:%.*]] ; CHECK: bb2: ; CHECK-NEXT: call void @unknown_func() ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: ; CHECK-NEXT: store i32 1, i32* [[P]], align 4 ; CHECK-NEXT: ret void ; store i32 0, i32* %P br i1 true, label %bb1, label %bb2 bb1: br label %bb3 bb2: call void @unknown_func() br label %bb3 bb3: store i32 1, i32* %P ret void } define void @test23(i32* noalias %P) { ; CHECK-LABEL: @test23( ; CHECK-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]] ; CHECK: bb1: ; CHECK-NEXT: br label [[BB3:%.*]] ; CHECK: bb2: ; CHECK-NEXT: call void @unknown_func() ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: ; CHECK-NEXT: store i32 0, i32* [[P:%.*]], align 4 ; CHECK-NEXT: ret void ; br i1 true, label %bb1, label %bb2 bb1: store i32 0, i32* %P br label %bb3 bb2: call void @unknown_func() br label %bb3 bb3: store i32 0, i32* %P ret void } define void @test24(i32* noalias %P) { ; CHECK-LABEL: @test24( ; CHECK-NEXT: br i1 true, label [[BB2:%.*]], label [[BB1:%.*]] ; CHECK: bb1: ; CHECK-NEXT: br label [[BB3:%.*]] ; CHECK: bb2: ; CHECK-NEXT: call void @unknown_func() ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: ; CHECK-NEXT: store i32 0, i32* [[P:%.*]], align 4 ; CHECK-NEXT: ret void ; br i1 true, label %bb2, label %bb1 bb1: store i32 0, i32* %P br label %bb3 bb2: call void @unknown_func() br label %bb3 bb3: store i32 0, i32* %P ret void }