New testcase, allow folding of binary operators that use PHI nodes, as long
authorChris Lattner <sabre@nondot.org>
Mon, 12 Jan 2004 03:57:00 +0000 (03:57 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 12 Jan 2004 03:57:00 +0000 (03:57 +0000)
as the result of the binary operator is always constant.  This does not require
the PHI itself to be constant though.

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

test/Transforms/SCCP/phitest.ll [new file with mode: 0644]

diff --git a/test/Transforms/SCCP/phitest.ll b/test/Transforms/SCCP/phitest.ll
new file mode 100644 (file)
index 0000000..18f862a
--- /dev/null
@@ -0,0 +1,23 @@
+; RUN: llvm-as < %s | opt -sccp -dce -simplifycfg | llvm-dis | not grep br
+
+int %test(int %param) {
+entry:
+       %tmp.1 = setne int %param, 0
+       br bool %tmp.1, label %endif.0, label %else
+
+else:
+       br label %endif.0
+
+endif.0:
+       %a.0 = phi int [ 2, %else ], [ 3, %entry ]
+       %b.0 = phi int [ 3, %else ], [ 2, %entry ]
+       %tmp.5 = add int %a.0, %b.0
+       %tmp.7 = setne int %tmp.5, 5
+       br bool %tmp.7, label %UnifiedReturnBlock, label %endif.1
+
+endif.1:
+       ret int 0
+
+UnifiedReturnBlock:
+       ret int 2
+}