New testcase for a bug identified by Vikram
authorChris Lattner <sabre@nondot.org>
Sun, 8 Sep 2002 21:37:49 +0000 (21:37 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 8 Sep 2002 21:37:49 +0000 (21:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3625 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll [new file with mode: 0644]

diff --git a/test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll b/test/Transforms/InstCombine/2002-09-08-PointerShiftBug.ll
new file mode 100644 (file)
index 0000000..7c84cf2
--- /dev/null
@@ -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
+}
+