diff options
Diffstat (limited to 'llvm/test/Transforms/LoopUnroll/pr28132.ll')
| -rw-r--r-- | llvm/test/Transforms/LoopUnroll/pr28132.ll | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopUnroll/pr28132.ll b/llvm/test/Transforms/LoopUnroll/pr28132.ll new file mode 100644 index 00000000000..dc2c0b88023 --- /dev/null +++ b/llvm/test/Transforms/LoopUnroll/pr28132.ll @@ -0,0 +1,77 @@ +; RUN: opt -loop-unroll -S < %s | FileCheck %s +target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" +target triple = "i686-pc-windows-msvc" + +declare void @fn1(i8*) + +declare i1 @fn2(i8*, i8*) + +define void @fn4() personality i32 (...)* @__CxxFrameHandler3 { +entry: + br label %for.body + +for.body: ; preds = %for.inc, %entry + %i.05 = phi i8 [ 0, %entry ], [ %inc, %for.inc ] + store i8 undef, i8* undef, align 4 + invoke void @fn1(i8* undef) + to label %call.i.noexc unwind label %ehcleanup + +call.i.noexc: ; preds = %for.body + %call1.i2 = invoke i1 @fn2(i8* undef, i8* undef) + to label %call1.i.noexc unwind label %ehcleanup + +call1.i.noexc: ; preds = %call.i.noexc + br i1 undef, label %if.then.i, label %if.end4.i + +if.then.i: ; preds = %call1.i.noexc + %tmp1 = load i8, i8* undef, align 4 + %tobool.i = icmp eq i8 undef, undef + br i1 undef, label %if.end4.i, label %if.then2.i + +if.then2.i: ; preds = %if.then.i + %call3.i3 = invoke i1 @fn2(i8* undef, i8* null) + to label %call3.i.noexc unwind label %ehcleanup + +call3.i.noexc: ; preds = %if.then2.i + br label %if.end4.i + +if.end4.i: ; preds = %call3.i.noexc, %if.then.i, %call1.i.noexc + %tmp2 = load i8, i8* undef, align 4 + br label %if.then6.i + +if.then6.i: ; preds = %if.end4.i + %call7.i4 = invoke i1 @fn2(i8* undef, i8* null) + to label %call7.i.noexc unwind label %ehcleanup + +call7.i.noexc: ; preds = %if.then6.i + br label %fn3 + +fn3: ; preds = %call7.i.noexc + %tmp3 = load i8, i8* undef, align 4 + %inc.i = add nsw i8 undef, undef + store i8 undef, i8* undef, align 4 + br label %for.inc + +for.inc: ; preds = %fn3 + %inc = add nsw i8 %i.05, 1 + %cmp = icmp slt i8 %inc, 6 + br i1 %cmp, label %for.body, label %for.end + +for.end: ; preds = %for.inc + invoke void @throw() + to label %unreachable unwind label %ehcleanup + +ehcleanup: ; preds = %for.end, %if.then6.i, %if.then2.i, %call.i.noexc, %for.body + %cp = cleanuppad within none [] + cleanupret from %cp unwind to caller + +; CHECK: cleanuppad +; CHECK-NOT: cleanuppad + +unreachable: ; preds = %for.end + unreachable +} + +declare i32 @__CxxFrameHandler3(...) + +declare void @throw() |

