New testcase for bug never checked into CVS, but that I hit during debugging a
authorChris Lattner <sabre@nondot.org>
Fri, 4 Oct 2002 23:29:40 +0000 (23:29 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 4 Oct 2002 23:29:40 +0000 (23:29 +0000)
new feature

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4039 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll [new file with mode: 0644]

diff --git a/test/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll b/test/Transforms/CorrelatedExprs/2002-10-04-ForwardingBug.ll
new file mode 100644 (file)
index 0000000..c76c8fd
--- /dev/null
@@ -0,0 +1,35 @@
+; Testcase distilled from bisort where we tried to perform branch target 
+; forwarding where it was not safe.
+; RUN: as < %s | opt -cee
+;
+       %HANDLE = type { int, %HANDLE*, %HANDLE* }
+       %struct.node = type { int, %HANDLE*, %HANDLE* }
+%.LC0 = internal global [11 x sbyte] c"%d @ 0x%x\0A\00"                ; <[11 x sbyte]*> [#uses=1]
+
+implementation   ; Functions:
+
+void %InOrder(%HANDLE* %h) {
+bb0:           ; No predecessors!
+       br label %bb2
+
+bb2:           ; preds = %bb3, %bb0
+       %reg113 = phi %HANDLE* [ %reg109, %bb3 ], [ %h, %bb0 ]          ; <%HANDLE*> [#uses=4]
+       %cond217 = seteq %HANDLE* %reg113, null         ; <bool> [#uses=1]
+       br bool %cond217, label %bb4, label %bb3
+
+bb3:           ; preds = %bb2
+       %reg221 = getelementptr %HANDLE* %reg113, long 0, ubyte 1               ; <%HANDLE**> [#uses=1]
+       %reg108 = load %HANDLE** %reg221                ; <%HANDLE*> [#uses=1]
+       %reg226 = getelementptr %HANDLE* %reg113, long 0, ubyte 2               ; <%HANDLE**> [#uses=1]
+       %reg109 = load %HANDLE** %reg226                ; <%HANDLE*> [#uses=1]
+       call void %InOrder( %HANDLE* %reg108 )
+       %cast231 = getelementptr %HANDLE* %reg113, long 0, ubyte 0              ; <int*> [#uses=1]
+       %reg111 = load int* %cast231            ; <int> [#uses=1]
+       %reg233 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([11 x sbyte]* %.LC0, long 0, long 0), int %reg111, uint 0 )            ; <int> [#uses=0]
+       br label %bb2
+
+bb4:           ; preds = %bb2
+       ret void
+}
+
+declare int %printf(sbyte*, ...)