From 8bcdc503eb366f2b2e554ddb5a09b0ec79eda9b0 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 10 Mar 2023 10:29:28 +0100 Subject: [PATCH] [InstSimplify] Add test for PR61312 (NFC) --- llvm/test/Transforms/InstSimplify/phi.ll | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/llvm/test/Transforms/InstSimplify/phi.ll b/llvm/test/Transforms/InstSimplify/phi.ll index f1cdd8b960cb..14f17674bc52 100644 --- a/llvm/test/Transforms/InstSimplify/phi.ll +++ b/llvm/test/Transforms/InstSimplify/phi.ll @@ -152,3 +152,35 @@ EXIT: %r = phi i8 [poison, %A], [poison, %B] ret i8 %r } + +; FIXME: This is a miscompile. +define i32 @pr61312() { +; CHECK-LABEL: @pr61312( +; CHECK-NEXT: entry: +; CHECK-NEXT: br label [[FOR_COND:%.*]] +; CHECK: for.cond: +; CHECK-NEXT: [[A_0:%.*]] = phi i32 [ 2, [[ENTRY:%.*]] ], [ [[DEC:%.*]], [[FOR_INC:%.*]] ] +; CHECK-NEXT: [[CMP:%.*]] = icmp sge i32 [[A_0]], 0 +; CHECK-NEXT: br i1 [[CMP]], label [[FOR_INC]], label [[FOR_END:%.*]] +; CHECK: for.inc: +; CHECK-NEXT: [[DEC]] = add nsw i32 [[A_0]], -1 +; CHECK-NEXT: br label [[FOR_COND]] +; CHECK: for.end: +; CHECK-NEXT: ret i32 -1 +; +entry: + br label %for.cond + +for.cond: + %a.0 = phi i32 [ 2, %entry ], [ %dec, %for.inc ] + %cmp = icmp sge i32 %a.0, 0 + br i1 %cmp, label %for.inc, label %for.end + +for.inc: + %dec = add nsw i32 %a.0, -1 + br label %for.cond + +for.end: + %rem = srem i32 -1, %a.0 + ret i32 %rem +}