]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Transforms/DeadStoreElimination/const-pointers.ll
Vendor import of llvm release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / Transforms / DeadStoreElimination / const-pointers.ll
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-LABEL: 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-LABEL: 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-LABEL: define void @test4(
36 ; CHECK: store
37 ; CHECK: store
38 ; CHECK: ret void
39 }