aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-09-08 21:37:49 +0000
committerChris Lattner <sabre@nondot.org>2002-09-08 21:37:49 +0000
commit05eb9581b2e327032f3ace036ecc34969f17bd9f (patch)
tree83449de260c109a89c6732e64e62545386f7f975
parent823c4abb58bbe2a502657e068b011d864cc6d896 (diff)
New testcase for a bug identified by Vikram
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3625 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll b/test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll
new file mode 100644
index 0000000000..7c84cf2593
--- /dev/null
+++ b/test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll
@@ -0,0 +1,20 @@
+; This tests for a bug exposed by the Olden health benchmark where a shift of a
+; pointer was thrown away, causing this whole example to be "optimized" away,
+; which was quite bogus. Check that this is fixed.
+;
+; RUN: as < %s | opt -instcombine | dis | grep reg162
+
+implementation ; Functions:
+
+int %test(uint %cann-indvar) {
+ %reg189-scale = mul uint %cann-indvar, 4294967295 ; <uint> [#uses=1]
+ %reg189 = add uint %reg189-scale, 3 ; <uint> [#uses=1]
+ %cast362 = cast uint %reg189 to int ; <int> [#uses=1]
+ %cast363 = cast int %cast362 to sbyte* ; <sbyte*> [#uses=2]
+ %reg160 = shl sbyte* %cast363, ubyte 1 ; <sbyte*> [#uses=1]
+ %reg161 = add sbyte* %reg160, %cast363 ; <sbyte*> [#uses=1]
+ %reg162 = shl sbyte* %reg161, ubyte 2 ; <sbyte*> [#uses=1]
+ %RV = cast sbyte* %reg162 to int ; <int> [#uses=1]
+ ret int %RV
+}
+