summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPawel Wodnicki <pawel@32bitmicro.com>2012-11-22 06:21:31 +0000
committerPawel Wodnicki <pawel@32bitmicro.com>2012-11-22 06:21:31 +0000
commitdf46b9004b0ac81d6cd37a644e5c8243af0afc61 (patch)
treee1b72543ab0dde49ea2e8c4abfcb88fc55e01c0e /test
parentd11161f404bf670f4f4b3b993bdad6894fbfd5ba (diff)
downloadllvm-df46b9004b0ac81d6cd37a644e5c8243af0afc61.tar.gz
llvm-df46b9004b0ac81d6cd37a644e5c8243af0afc61.tar.bz2
llvm-df46b9004b0ac81d6cd37a644e5c8243af0afc61.tar.xz
Merging r168291: into the 3.2 release branch.
Fix PR14060, an infinite loop in reassociate. The problem was that one of the operands of the expression being written was wrongly thought to be reusable as an inner node of the expression resulting in it turning up as both an inner node *and* a leaf, creating a cycle in the def-use graph. This would have caused the verifier to blow up if things had gotten that far, however it managed to provoke an infinite loop first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_32@168489 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Transforms/Reassociate/crash.ll19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/Transforms/Reassociate/crash.ll b/test/Transforms/Reassociate/crash.ll
index a617e9f327..e29b5dc9c0 100644
--- a/test/Transforms/Reassociate/crash.ll
+++ b/test/Transforms/Reassociate/crash.ll
@@ -153,3 +153,22 @@ define i32 @bar(i32 %arg, i32 %arg1, i32 %arg2) {
%ret = add i32 %tmp2, %tmp3
ret i32 %ret
}
+
+; PR14060
+define i8 @hang(i8 %p, i8 %p0, i8 %p1, i8 %p2, i8 %p3, i8 %p4, i8 %p5, i8 %p6, i8 %p7, i8 %p8, i8 %p9) {
+ %tmp = zext i1 false to i8
+ %tmp16 = or i8 %tmp, 1
+ %tmp22 = or i8 %p7, %p0
+ %tmp23 = or i8 %tmp16, %tmp22
+ %tmp28 = or i8 %p9, %p1
+ %tmp31 = or i8 %tmp23, %p2
+ %tmp32 = or i8 %tmp31, %tmp28
+ %tmp38 = or i8 %p8, %p3
+ %tmp39 = or i8 %tmp16, %tmp38
+ %tmp43 = or i8 %tmp39, %p4
+ %tmp44 = or i8 %tmp43, 1
+ %tmp47 = or i8 %tmp32, %p5
+ %tmp50 = or i8 %tmp47, %p6
+ %tmp51 = or i8 %tmp44, %tmp50
+ ret i8 %tmp51
+}