xref: /llvm-project/llvm/test/Transforms/DeadStoreElimination/const-pointers.ll (revision f497a00da968b0ff90d8c98caa184d14b9a92495)
1*f497a00dSBjorn Pettersson; RUN: opt -passes=dse -S < %s | FileCheck %s
2176bbcaeSNikita Popovtarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
3176bbcaeSNikita Popov
4176bbcaeSNikita Popov%t = type { i32 }
5176bbcaeSNikita Popov
6176bbcaeSNikita Popov@g = global i32 42
7176bbcaeSNikita Popov
8c603cefbSNikita Popovdefine void @test1(ptr noalias %pp) {
9176bbcaeSNikita Popov
10c603cefbSNikita Popov  store i32 1, ptr %pp; <-- This is dead
11c603cefbSNikita Popov  %x = load i32, ptr inttoptr (i32 12345 to ptr)
12c603cefbSNikita Popov  store i32 %x, ptr %pp
13176bbcaeSNikita Popov  ret void
14176bbcaeSNikita Popov; CHECK-LABEL: define void @test1(
15176bbcaeSNikita Popov; CHECK: store
16176bbcaeSNikita Popov; CHECK-NOT: store
17176bbcaeSNikita Popov; CHECK: ret void
18176bbcaeSNikita Popov}
19176bbcaeSNikita Popov
20176bbcaeSNikita Popovdefine void @test3() {
21c603cefbSNikita Popov  store i32 1, ptr @g; <-- This is dead.
22c603cefbSNikita Popov  store i32 42, ptr @g
23176bbcaeSNikita Popov  ret void
24176bbcaeSNikita Popov; CHECK-LABEL: define void @test3(
25176bbcaeSNikita Popov; CHECK: store
26176bbcaeSNikita Popov; CHECK-NOT: store
27176bbcaeSNikita Popov; CHECK: ret void
28176bbcaeSNikita Popov}
29176bbcaeSNikita Popov
30c603cefbSNikita Popovdefine void @test4(ptr %p) {
31c603cefbSNikita Popov  store i32 1, ptr %p
32c603cefbSNikita Popov  %x = load i32, ptr @g; <-- %p and @g could alias
33c603cefbSNikita Popov  store i32 %x, ptr %p
34176bbcaeSNikita Popov  ret void
35176bbcaeSNikita Popov; CHECK-LABEL: define void @test4(
36176bbcaeSNikita Popov; CHECK: store
37176bbcaeSNikita Popov; CHECK: store
38176bbcaeSNikita Popov; CHECK: ret void
39176bbcaeSNikita Popov}
40