summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-03-09 00:48:33 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-03-09 00:48:33 +0000
commitaac35b3fbbc1215671ae3e8656d96be0f8701ea7 (patch)
treeede429f0ef6141f4ce5938e76fea8153321b7df4 /llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll
parent4fa0f3040ddb3fec80a5021898e399bc9b9a03ab (diff)
downloadbcm5719-llvm-aac35b3fbbc1215671ae3e8656d96be0f8701ea7.tar.gz
bcm5719-llvm-aac35b3fbbc1215671ae3e8656d96be0f8701ea7.zip
PR9420; an instruction before an unreachable is guaranteed not to have any
reachable uses, but there still might be uses in dead blocks. Use the standard solution of replacing all the uses with undef. This is a rare case because it's very sensitive to phase ordering in SimplifyCFG. llvm-svn: 127299
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll31
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll b/llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll
new file mode 100644
index 00000000000..329774e2242
--- /dev/null
+++ b/llvm/test/Transforms/SimplifyCFG/2011-03-08-UnreachableUse.ll
@@ -0,0 +1,31 @@
+; RUN: opt < %s -simplifycfg -S | FileCheck %s
+; PR9420
+
+; Note that the crash in PR9420 test is sensitive to the ordering of
+; the transformations done by SimplifyCFG, so this test is likely to rot
+; quickly.
+
+define noalias i8* @func_29() nounwind {
+; CHECK: entry:
+; CHECK-NEXT: unreachable
+entry:
+ br label %for.cond
+
+for.cond: ; preds = %for.inc38, %entry
+ %p_34.addr.0 = phi i16 [ 1, %entry ], [ %conv40, %for.inc38 ]
+ br label %for.cond1
+
+for.cond1: ; preds = %for.inc29, %for.cond
+ %p_32.addr.0 = phi i1 [ true, %for.cond ], [ true, %for.inc29 ]
+ br i1 %p_32.addr.0, label %for.body8, label %for.inc38
+
+for.body8: ; preds = %for.cond1
+ unreachable
+
+for.inc29: ; preds = %for.cond17
+ br label %for.cond1
+
+for.inc38: ; preds = %for.end32
+ %conv40 = add i16 %p_34.addr.0, 1
+ br label %for.cond
+}
OpenPOWER on IntegriCloud