summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2008-06-13 22:02:12 +0000
committerEli Friedman <eli.friedman@gmail.com>2008-06-13 22:02:12 +0000
commit6903a24f32e11d10ad7232b2c16c8d07f27a31c7 (patch)
tree25392f38f7effd961eacdff4946754d73a7cbac4 /test/Transforms/InstCombine
parente562b1725ee068ff525082d1e9ba885c8928c72e (diff)
downloadllvm-6903a24f32e11d10ad7232b2c16c8d07f27a31c7.tar.gz
llvm-6903a24f32e11d10ad7232b2c16c8d07f27a31c7.tar.bz2
llvm-6903a24f32e11d10ad7232b2c16c8d07f27a31c7.tar.xz
Don't skip over instructions other than loads that might read memory
when trying to sink stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52259 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine')
-rw-r--r--test/Transforms/InstCombine/2008-06-13-ReadOnlyCallStore.ll19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/2008-06-13-ReadOnlyCallStore.ll b/test/Transforms/InstCombine/2008-06-13-ReadOnlyCallStore.ll
new file mode 100644
index 0000000000..3f23098225
--- /dev/null
+++ b/test/Transforms/InstCombine/2008-06-13-ReadOnlyCallStore.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep {store i8} | count 2
+
+define i32 @a(i8* %s) nounwind {
+entry:
+ store i8 0, i8* %s, align 1 ; This store cannot be eliminated!
+ %tmp3 = call i32 @strlen( i8* %s ) nounwind readonly
+ %tmp5 = icmp ne i32 %tmp3, 0
+ br i1 %tmp5, label %bb, label %bb8
+
+bb: ; preds = %entry
+ store i8 0, i8* %s, align 1
+ br label %bb8
+
+bb8:
+ ret i32 %tmp3
+}
+
+declare i32 @strlen(i8*) nounwind readonly
+