diff options
author | Michael Zolotukhin <mzolotukhin@apple.com> | 2016-11-18 21:01:12 +0000 |
---|---|---|
committer | Michael Zolotukhin <mzolotukhin@apple.com> | 2016-11-18 21:01:12 +0000 |
commit | 5020c9971b2049d255069ea81ce02a085be2e191 (patch) | |
tree | a2443bd7a2265e6769273ade1e8a662bfb60ebc7 /llvm/test/Transforms/LoopSimplify | |
parent | 85d93a877846380567e8e28786f4591d1b61d34f (diff) | |
download | bcm5719-llvm-5020c9971b2049d255069ea81ce02a085be2e191.tar.gz bcm5719-llvm-5020c9971b2049d255069ea81ce02a085be2e191.zip |
[LoopSimplify] Preserve LCSSA when removing edges from unreachable blocks.
This fixes PR30454.
llvm-svn: 287379
Diffstat (limited to 'llvm/test/Transforms/LoopSimplify')
-rw-r--r-- | llvm/test/Transforms/LoopSimplify/pr30454.ll | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopSimplify/pr30454.ll b/llvm/test/Transforms/LoopSimplify/pr30454.ll new file mode 100644 index 00000000000..3dcc393aa81 --- /dev/null +++ b/llvm/test/Transforms/LoopSimplify/pr30454.ll @@ -0,0 +1,32 @@ +; RUN: opt < %s -lcssa -licm -S | FileCheck %s +; PR30454 +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +declare i8 @bar() + +; Test that we preserve LCSSA form when removing edges from unreachable blocks. +; CHECK-LABEL: @foo +define void @foo() { +entry: + br label %for.cond + +for.cond: + %x = phi i8 [ undef, %entry ], [ %y, %for.latch ] + br i1 undef, label %for.latch, label %exit + +; CHECK: unreachable.bb: +; CHECK-NEXT: unreachable +unreachable.bb: + br i1 undef, label %exit, label %for.latch + +for.latch: + %y = call i8 @bar() + br label %for.cond + +; CHECK: exit: +; CHECK-NEXT: %x.lcssa = phi i8 [ %x, %for.cond ] +exit: + %z = zext i8 %x to i32 + ret void +} |