New testcase
authorChris Lattner <sabre@nondot.org>
Wed, 25 Jun 2003 17:08:34 +0000 (17:08 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 25 Jun 2003 17:08:34 +0000 (17:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6902 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/LevelRaise/2003-06-25-ExprAnalysis.ll [new file with mode: 0644]

diff --git a/test/Transforms/LevelRaise/2003-06-25-ExprAnalysis.ll b/test/Transforms/LevelRaise/2003-06-25-ExprAnalysis.ll
new file mode 100644 (file)
index 0000000..0b0255a
--- /dev/null
@@ -0,0 +1,27 @@
+; The expr analysis routines were being too aggressive across cast instructions!
+
+; RUN: if as < %s | opt -raise | dis | grep 4294967295
+; RUN: then exit 1
+; RUN: else exit 0
+; RUN: fi
+
+target endian = big
+target pointersize = 64
+       %struct..istack_struct = type { %struct..istack_struct*, %struct..istk_entry*, uint }
+       %struct..istk_entry = type { double, int, int, double, double, sbyte* }
+
+implementation   ; Functions:
+bool %Intersection(%struct..istack_struct* %tmp.0, uint %tmp.12) {              ; No predecessors!
+        %tmp.8 = getelementptr %struct..istack_struct* %tmp.0, long 0, ubyte 1          ; <%struct..istk_entry**> [#uses=1]
+        %tmp.9 = load %struct..istk_entry** %tmp.8              ; <%struct..istk_entry*> [#uses=1]
+        %dec = sub uint %tmp.12, 1              ; <uint> [#uses=1]
+        %tmp.13 = cast uint %dec to ulong               ; <ulong> [#uses=1]
+        %tmp.14 = mul ulong %tmp.13, 40         ; <ulong> [#uses=1]
+        %tmp.16 = cast %struct..istk_entry* %tmp.9 to long              ; <long> [#uses=1]
+        %tmp.17 = cast ulong %tmp.14 to long            ; <long> [#uses=1]
+        %tmp.18 = add long %tmp.16, %tmp.17             ; <long> [#uses=1]
+        %tmp.19 = cast long %tmp.18 to %struct..istk_entry*             ; <%struct..istk_entry*> [#uses=1]
+        %tmp.21 = setne %struct..istk_entry* %tmp.19, null              ; <bool> [#uses=1]
+        ret bool %tmp.21
+}
+