| ; RUN: opt -passes=dse -S < %s | FileCheck %s |
| target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
| |
| %t = type { i32 } |
| |
| @g = global i32 42 |
| |
| define void @test1(ptr noalias %pp) { |
| |
| store i32 1, ptr %pp; <-- This is dead |
| %x = load i32, ptr inttoptr (i32 12345 to ptr) |
| store i32 %x, ptr %pp |
| ret void |
| ; CHECK-LABEL: define void @test1( |
| ; CHECK: store |
| ; CHECK-NOT: store |
| ; CHECK: ret void |
| } |
| |
| define void @test3() { |
| store i32 1, ptr @g; <-- This is dead. |
| store i32 42, ptr @g |
| ret void |
| ; CHECK-LABEL: define void @test3( |
| ; CHECK: store |
| ; CHECK-NOT: store |
| ; CHECK: ret void |
| } |
| |
| define void @test4(ptr %p) { |
| store i32 1, ptr %p |
| %x = load i32, ptr @g; <-- %p and @g could alias |
| store i32 %x, ptr %p |
| ret void |
| ; CHECK-LABEL: define void @test4( |
| ; CHECK: store |
| ; CHECK: store |
| ; CHECK: ret void |
| } |