Add testcase for raise opportunity missed.
authorChris Lattner <sabre@nondot.org>
Tue, 16 Jul 2002 19:10:00 +0000 (19:10 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 16 Jul 2002 19:10:00 +0000 (19:10 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2930 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/LevelRaise/2002-07-16-MissedRaise.ll [new file with mode: 0644]

diff --git a/test/Transforms/LevelRaise/2002-07-16-MissedRaise.ll b/test/Transforms/LevelRaise/2002-07-16-MissedRaise.ll
new file mode 100644 (file)
index 0000000..4aec440
--- /dev/null
@@ -0,0 +1,25 @@
+; This case fails raise because the store requires that it's argument is of a 
+; particular type, but the gep is unable to propogate types backwards through 
+; it, because it doesn't know what type to ask it's operand to be.
+;
+; This could be fixed by making all stores add themselves to a list, and check
+; their arguments are consistent AFTER all other values are propogated.
+
+; RUN: if as < %s | opt -raise | dis | grep '= cast' 
+; RUN: then exit 1
+; RUN: else exit 0
+; RUN: fi
+
+        %Tree = type %struct.tree*
+        %struct.tree = type { int, double, double, %Tree, %Tree, %Tree, %Tree }
+
+void %reverse(%Tree %t) {
+bb0:                                    ;[#uses=0]
+        %cast219 = cast %Tree %t to sbyte***            ; <sbyte***> [#uses=2]
+        %reg2221 = getelementptr sbyte*** %cast219, uint 6              ; <sbyte***> [#uses=1]
+        %reg108 = load sbyte*** %reg2221                ; <sbyte**> [#uses=2]
+        %reg247 = getelementptr sbyte*** %cast219, uint 5               ; <sbyte***> [#uses=1]
+        store sbyte** %reg108, sbyte*** %reg247
+        ret void
+}
+