New testcase for missed optimization
authorChris Lattner <sabre@nondot.org>
Fri, 19 Dec 2003 09:08:15 +0000 (09:08 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 19 Dec 2003 09:08:15 +0000 (09:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10538 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/ADCE/2003-12-19-MergeReturn.llx [new file with mode: 0644]

diff --git a/test/Transforms/ADCE/2003-12-19-MergeReturn.llx b/test/Transforms/ADCE/2003-12-19-MergeReturn.llx
new file mode 100644 (file)
index 0000000..541f2ab
--- /dev/null
@@ -0,0 +1,28 @@
+; This testcase was failing because without merging the return blocks, ADCE
+; didn't know that it could get rid of the then.0 block.
+
+; RUN: llvm-as < %s | opt -adce | llvm-dis | not grep load
+
+
+implementation   ; Functions:
+
+void %main(uint %argc, sbyte** %argv) {
+entry:
+       call void %__main( )
+       %tmp.1 = setle uint %argc, 5            ; <bool> [#uses=1]
+       br bool %tmp.1, label %then.0, label %return
+
+then.0:                ; preds = %entry
+       %tmp.8 = load sbyte** %argv             ; <sbyte*> [#uses=1]
+       %tmp.10 = load sbyte* %tmp.8            ; <sbyte> [#uses=1]
+       %tmp.11 = seteq sbyte %tmp.10, 98               ; <bool> [#uses=1]
+       br bool %tmp.11, label %then.1, label %return
+
+then.1:                ; preds = %then.0
+       ret void
+
+return:                ; preds = %entry, %then.0
+       ret void
+}
+
+declare void %__main()