1 ; RUN: opt -basicaa -dse -S < %s | FileCheck %s 2 3 %t = type { i32 } 4 5 @g = global i32 42 6 7 define void @test1(%t* noalias %pp) { 8 %p = getelementptr inbounds %t* %pp, i32 0, i32 0 9 10 store i32 1, i32* %p; <-- This is dead 11 %x = load i32* inttoptr (i32 12345 to i32*) 12 store i32 %x, i32* %p 13 ret void 14 ; CHECK: define void @test1 15 ; CHECK: store 16 ; CHECK-NOT: store 17 ; CHECK: ret void 18 } 19 20 define void @test3() { 21 store i32 1, i32* @g; <-- This is dead. 22 store i32 42, i32* @g 23 ret void 24 ; CHECK: define void @test3 25 ; CHECK: store 26 ; CHECK-NOT: store 27 ; CHECK: ret void 28 } 29 30 define void @test4(i32* %p) { 31 store i32 1, i32* %p 32 %x = load i32* @g; <-- %p and @g could alias 33 store i32 %x, i32* %p 34 ret void 35 ; CHECK: define void @test4 36 ; CHECK: store 37 ; CHECK: store 38 ; CHECK: ret void 39 } 40