Author: Roman Lebedev Date: 2020-12-14T20:14:31+03:00 New Revision: effbbdec6e954798b8ae6a5f3c5cd45995a0a2eb
URL: https://github.com/llvm/llvm-project/commit/effbbdec6e954798b8ae6a5f3c5cd45995a0a2eb DIFF: https://github.com/llvm/llvm-project/commit/effbbdec6e954798b8ae6a5f3c5cd45995a0a2eb.diff LOG: [NFC][SimplifyCFG] Add another miscompiled test for PR48450 Added: Modified: llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest.ll Removed: ################################################################################ diff --git a/llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest.ll b/llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest.ll index 521ffa89854d..557f47ee4dcf 100644 --- a/llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest.ll +++ b/llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest.ll @@ -779,3 +779,66 @@ for.bodythread-pre-split: if.end.loopexit: ret void } + +define void @pr48450_2(i1 %enable_loopback) { +; CHECK-LABEL: @pr48450_2( +; CHECK-NEXT: entry: +; CHECK-NEXT: br label [[FOR_BODY:%.*]] +; CHECK: for.body: +; CHECK-NEXT: [[COUNTDOWN:%.*]] = phi i16 [ 128, [[ENTRY:%.*]] ], [ [[DEC2:%.*]], [[FOR_BODYTHREAD_PRE_SPLIT:%.*]] ] +; CHECK-NEXT: [[C:%.*]] = call i1 @gen1() +; CHECK-NEXT: br i1 [[C]], label [[FOR_INC:%.*]], label [[IF_THEN:%.*]] +; CHECK: for.inc: +; CHECK-NEXT: [[DOTOLD:%.*]] = add i16 [[COUNTDOWN]], -1 +; CHECK-NEXT: [[DOTOLD3:%.*]] = icmp eq i16 [[COUNTDOWN]], 0 +; CHECK-NEXT: br i1 [[DOTOLD3]], label [[IF_END_LOOPEXIT:%.*]], label [[FOR_BODYTHREAD_PRE_SPLIT]] +; CHECK: if.then: +; CHECK-NEXT: [[C2:%.*]] = call i1 @gen1() +; CHECK-NEXT: [[C2_NOT:%.*]] = xor i1 [[C2]], true +; CHECK-NEXT: [[DEC:%.*]] = add i16 [[COUNTDOWN]], -1 +; CHECK-NEXT: [[CMP_NOT:%.*]] = icmp eq i16 [[COUNTDOWN]], 0 +; CHECK-NEXT: [[OR_COND:%.*]] = or i1 [[C2_NOT]], [[CMP_NOT]] +; CHECK-NEXT: br i1 [[OR_COND]], label [[IF_END_LOOPEXIT]], label [[FOR_BODYTHREAD_PRE_SPLIT]] +; CHECK: for.bodythread-pre-split: +; CHECK-NEXT: [[DEC2]] = phi i16 [ undef, [[FOR_BODYTHREAD_PRE_SPLIT_LOOPBACK:%.*]] ], [ [[DOTOLD]], [[FOR_INC]] ], [ [[DEC]], [[IF_THEN]] ] +; CHECK-NEXT: [[SHOULD_LOOPBACK:%.*]] = phi i1 [ true, [[FOR_INC]] ], [ false, [[FOR_BODYTHREAD_PRE_SPLIT_LOOPBACK]] ], [ true, [[IF_THEN]] ] +; CHECK-NEXT: [[DO_LOOPBACK:%.*]] = and i1 [[SHOULD_LOOPBACK]], [[ENABLE_LOOPBACK:%.*]] +; CHECK-NEXT: call void @sideeffect0() +; CHECK-NEXT: br i1 [[DO_LOOPBACK]], label [[FOR_BODYTHREAD_PRE_SPLIT_LOOPBACK]], label [[FOR_BODY]] +; CHECK: for.bodythread-pre-split.loopback: +; CHECK-NEXT: call void @sideeffect0() +; CHECK-NEXT: br label [[FOR_BODYTHREAD_PRE_SPLIT]] +; CHECK: if.end.loopexit: +; CHECK-NEXT: [[DEC1:%.*]] = phi i16 [ undef, [[IF_THEN]] ], [ [[DOTOLD]], [[FOR_INC]] ] +; CHECK-NEXT: ret void +; +entry: + br label %for.body + +for.body: + %countdown = phi i16 [ 128, %entry ], [ %dec, %for.bodythread-pre-split ] + %c = call i1 @gen1() + br i1 %c, label %for.inc, label %if.then + +for.inc: + %dec = add i16 %countdown, -1 + %cmp.not = icmp eq i16 %countdown, 0 + br i1 %cmp.not, label %if.end.loopexit, label %for.bodythread-pre-split + +if.then: + %c2 = call i1 @gen1() + br i1 %c2, label %for.inc, label %if.end.loopexit + +for.bodythread-pre-split: + %should_loopback = phi i1 [ 1, %for.inc ], [ 0, %for.bodythread-pre-split.loopback ] + %do_loopback = and i1 %should_loopback, %enable_loopback + call void @sideeffect0() + br i1 %do_loopback, label %for.bodythread-pre-split.loopback, label %for.body + +for.bodythread-pre-split.loopback: + call void @sideeffect0() + br label %for.bodythread-pre-split + +if.end.loopexit: + ret void +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits