summaryrefslogtreecommitdiff
path: root/test/Transforms/GlobalOpt
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-01-14 02:09:12 +0000
committerChris Lattner <sabre@nondot.org>2008-01-14 02:09:12 +0000
commit941db495b8233a3753ce72a84021f677073ff4ea (patch)
treed4817297cbda4183beee92b4242855fc910b6d45 /test/Transforms/GlobalOpt
parent6a93fc01a787ae53095504f882781dbf550b23c6 (diff)
downloadllvm-941db495b8233a3753ce72a84021f677073ff4ea.tar.gz
llvm-941db495b8233a3753ce72a84021f677073ff4ea.tar.bz2
llvm-941db495b8233a3753ce72a84021f677073ff4ea.tar.xz
Fix the miscompilation of MiBench/consumer-lame that was exposed by Evan's
byval work. This miscompilation is due to the program indexing an array out of range and us doing a transformation that broke this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45949 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/GlobalOpt')
-rw-r--r--test/Transforms/GlobalOpt/2008-01-13-OutOfRangeSROA.ll16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/Transforms/GlobalOpt/2008-01-13-OutOfRangeSROA.ll b/test/Transforms/GlobalOpt/2008-01-13-OutOfRangeSROA.ll
new file mode 100644
index 0000000000..aace346549
--- /dev/null
+++ b/test/Transforms/GlobalOpt/2008-01-13-OutOfRangeSROA.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | opt -globalopt | llvm-dis | grep {16 x .31 x double.. zeroinitializer}
+
+; The 'X' indices could be larger than 31. Do not SROA the outer indices of this array.
+@mm = internal global [16 x [31 x double]] zeroinitializer, align 32
+
+define void @test(i32 %X) {
+ %P = getelementptr [16 x [31 x double]]* @mm, i32 0, i32 0, i32 %X
+ store double 1.0, double* %P
+ ret void
+}
+
+define double @get(i32 %X) {
+ %P = getelementptr [16 x [31 x double]]* @mm, i32 0, i32 0, i32 %X
+ %V = load double* %P
+ ret double %V
+}