summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-07-29 05:39:21 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-07-29 05:39:21 +0000
commit130b9f99d6ec88bf9850335850a5a0e4f6be0b6b (patch)
tree901f6f83c6060db1badf0e93fd3c068e0aa63710 /llvm/test
parent41e9dad437f12b2c35a97a2eff94b34e5a6620c2 (diff)
downloadbcm5719-llvm-130b9f99d6ec88bf9850335850a5a0e4f6be0b6b.tar.gz
bcm5719-llvm-130b9f99d6ec88bf9850335850a5a0e4f6be0b6b.zip
[EarlyCSE] Correctly handle simplified, but live, instructions
Some instructions may have their uses replaced with a symbolic constant. However, the instruction may still have side effects which percludes it from being removed from the function. EarlyCSE treated such an instruction as if it were removed, resulting in PR28763. llvm-svn: 277114
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Transforms/EarlyCSE/basic.ll14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/Transforms/EarlyCSE/basic.ll b/llvm/test/Transforms/EarlyCSE/basic.ll
index fa1a7059db9..3c427d899f6 100644
--- a/llvm/test/Transforms/EarlyCSE/basic.ll
+++ b/llvm/test/Transforms/EarlyCSE/basic.ll
@@ -276,3 +276,17 @@ define void @dse_neg2(i32 *%P) {
ret void
}
+@c = external global i32, align 4
+declare i32 @reads_c(i32 returned)
+define void @pr28763() {
+entry:
+; CHECK-LABEL: @pr28763(
+; CHECK: store i32 0, i32* @c, align 4
+; CHECK: call i32 @reads_c(i32 0)
+; CHECK: store i32 2, i32* @c, align 4
+ %load = load i32, i32* @c, align 4
+ store i32 0, i32* @c, align 4
+ %call = call i32 @reads_c(i32 0)
+ store i32 2, i32* @c, align 4
+ ret void
+}
OpenPOWER on IntegriCloud