[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Transforms / DeadStoreElimination / const-pointers.ll
blobe4403edbed206b2358d3c78e2255eec05aee0270
1 ; RUN: opt -basicaa -dse -S < %s | FileCheck %s
2 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4 %t = type { i32 }
6 @g = global i32 42
8 define void @test1(%t* noalias %pp) {
9   %p = getelementptr inbounds %t, %t* %pp, i32 0, i32 0
11   store i32 1, i32* %p; <-- This is dead
12   %x = load i32, i32* inttoptr (i32 12345 to i32*)
13   store i32 %x, i32* %p
14   ret void
15 ; CHECK-LABEL: define void @test1(
16 ; CHECK: store
17 ; CHECK-NOT: store
18 ; CHECK: ret void
21 define void @test3() {
22   store i32 1, i32* @g; <-- This is dead.
23   store i32 42, i32* @g
24   ret void
25 ; CHECK-LABEL: define void @test3(
26 ; CHECK: store
27 ; CHECK-NOT: store
28 ; CHECK: ret void
31 define void @test4(i32* %p) {
32   store i32 1, i32* %p
33   %x = load i32, i32* @g; <-- %p and @g could alias
34   store i32 %x, i32* %p
35   ret void
36 ; CHECK-LABEL: define void @test4(
37 ; CHECK: store
38 ; CHECK: store
39 ; CHECK: ret void