87 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2 3; REQUIRES: asserts4 5; Eliminates store to %R in the entry block.6; RUN: opt < %s -passes=dse -debug-counter=dse-memoryssa=0 -S | FileCheck --check-prefix=SKIP0-COUNT1 %s7 8; Eliminates store to %P in the entry block.9; RUN: opt < %s -passes=dse -debug-counter=dse-memoryssa=1 -S | FileCheck --check-prefix=SKIP1-COUNT1 %s10 11; Eliminates both stores in the entry block.12; RUN: opt < %s -passes=dse -debug-counter=dse-memoryssa=0-1 -S | FileCheck --check-prefix=SKIP0-COUNT2 %s13 14; Eliminates no stores.15; RUN: opt < %s -passes=dse -debug-counter=dse-memoryssa=2 -S | FileCheck --check-prefix=SKIP2-COUNT1 %s16 17 18target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"19 20 21define void @test(ptr noalias %P, ptr noalias %Q, ptr noalias %R) {22; SKIP0-COUNT1-LABEL: @test(23; SKIP0-COUNT1-NEXT: store i32 1, ptr [[P:%.*]]24; SKIP0-COUNT1-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]25; SKIP0-COUNT1: bb1:26; SKIP0-COUNT1-NEXT: br label [[BB3:%.*]]27; SKIP0-COUNT1: bb2:28; SKIP0-COUNT1-NEXT: br label [[BB3]]29; SKIP0-COUNT1: bb3:30; SKIP0-COUNT1-NEXT: store i32 0, ptr [[Q:%.*]]31; SKIP0-COUNT1-NEXT: store i32 0, ptr [[R:%.*]]32; SKIP0-COUNT1-NEXT: store i32 0, ptr [[P]]33; SKIP0-COUNT1-NEXT: ret void34;35; SKIP1-COUNT1-LABEL: @test(36; SKIP1-COUNT1-NEXT: store i32 1, ptr [[R:%.*]]37; SKIP1-COUNT1-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]38; SKIP1-COUNT1: bb1:39; SKIP1-COUNT1-NEXT: br label [[BB3:%.*]]40; SKIP1-COUNT1: bb2:41; SKIP1-COUNT1-NEXT: br label [[BB3]]42; SKIP1-COUNT1: bb3:43; SKIP1-COUNT1-NEXT: store i32 0, ptr [[Q:%.*]]44; SKIP1-COUNT1-NEXT: store i32 0, ptr [[R]]45; SKIP1-COUNT1-NEXT: store i32 0, ptr [[P:%.*]]46; SKIP1-COUNT1-NEXT: ret void47;48; SKIP0-COUNT2-LABEL: @test(49; SKIP0-COUNT2-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]50; SKIP0-COUNT2: bb1:51; SKIP0-COUNT2-NEXT: br label [[BB3:%.*]]52; SKIP0-COUNT2: bb2:53; SKIP0-COUNT2-NEXT: br label [[BB3]]54; SKIP0-COUNT2: bb3:55; SKIP0-COUNT2-NEXT: store i32 0, ptr [[Q:%.*]]56; SKIP0-COUNT2-NEXT: store i32 0, ptr [[R:%.*]]57; SKIP0-COUNT2-NEXT: store i32 0, ptr [[P:%.*]]58; SKIP0-COUNT2-NEXT: ret void59;60; SKIP2-COUNT1-LABEL: @test(61; SKIP2-COUNT1-NEXT: store i32 1, ptr [[P:%.*]]62; SKIP2-COUNT1-NEXT: store i32 1, ptr [[R:%.*]]63; SKIP2-COUNT1-NEXT: br i1 true, label [[BB1:%.*]], label [[BB2:%.*]]64; SKIP2-COUNT1: bb1:65; SKIP2-COUNT1-NEXT: br label [[BB3:%.*]]66; SKIP2-COUNT1: bb2:67; SKIP2-COUNT1-NEXT: br label [[BB3]]68; SKIP2-COUNT1: bb3:69; SKIP2-COUNT1-NEXT: store i32 0, ptr [[Q:%.*]]70; SKIP2-COUNT1-NEXT: store i32 0, ptr [[R]]71; SKIP2-COUNT1-NEXT: store i32 0, ptr [[P]]72; SKIP2-COUNT1-NEXT: ret void73;74 store i32 1, ptr %P75 store i32 1, ptr %R76 br i1 true, label %bb1, label %bb277bb1:78 br label %bb379bb2:80 br label %bb381bb3:82 store i32 0, ptr %Q83 store i32 0, ptr %R84 store i32 0, ptr %P85 ret void86}87