summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopUnswitch
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-04-20 05:09:16 +0000
committerChris Lattner <sabre@nondot.org>2010-04-20 05:09:16 +0000
commit5814d9d9dabb8e7d59e3d94b04ee22210f5217c7 (patch)
tree08ffaa7769dc1938c43226ff73375c259d5528c6 /llvm/test/Transforms/LoopUnswitch
parent3d4218570ad4c87ea86cf709da78d6e450476d01 (diff)
downloadbcm5719-llvm-5814d9d9dabb8e7d59e3d94b04ee22210f5217c7.tar.gz
bcm5719-llvm-5814d9d9dabb8e7d59e3d94b04ee22210f5217c7.zip
RewriteLoopBodyWithConditionConstant can end up rewriting the
condition we're unswitching on. In this case, don't try to simplify the second copy of the loop which may be dead or not, but is probably a constant now. This fixes PR6879 llvm-svn: 101870
Diffstat (limited to 'llvm/test/Transforms/LoopUnswitch')
-rw-r--r--llvm/test/Transforms/LoopUnswitch/crash.ll19
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopUnswitch/crash.ll b/llvm/test/Transforms/LoopUnswitch/crash.ll
index fac55a6bb1a..101fb7a2c2c 100644
--- a/llvm/test/Transforms/LoopUnswitch/crash.ll
+++ b/llvm/test/Transforms/LoopUnswitch/crash.ll
@@ -45,3 +45,22 @@ for.body: ; preds = %for.body, %bb.nph
for.end: ; preds = %for.body, %entry
ret void
}
+
+; PR6879
+define i32* @test3(i32** %p_45, i16 zeroext %p_46, i64 %p_47, i64 %p_48, i16 signext %p_49) nounwind {
+entry:
+ br label %for.cond
+
+for.cond: ; preds = %for.cond4, %entry
+ br i1 false, label %for.cond4, label %for.end88
+
+for.cond4: ; preds = %for.cond
+ %conv46 = trunc i32 0 to i8 ; <i8> [#uses=2]
+ %cmp60 = icmp sgt i8 %conv46, 124 ; <i1> [#uses=1]
+ %or.cond = and i1 undef, %cmp60 ; <i1> [#uses=1]
+ %cond = select i1 %or.cond, i8 %conv46, i8 undef ; <i8> [#uses=0]
+ br label %for.cond
+
+for.end88: ; preds = %for.cond
+ ret i32* undef
+}
OpenPOWER on IntegriCloud