[PATCH] D110060: [LoopBoundSplit] Handle the case in which exiting block is loop header
Max Kazantsev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 22 23:18:33 PDT 2021
mkazantsev requested changes to this revision.
mkazantsev added inline comments.
This revision now requires changes to proceed.
================
Comment at: llvm/lib/Transforms/Scalar/LoopBoundSplit.cpp:81
+ // value from backedge.
+ if (Cond.AddRecSCEV && isa<PHINode>(Cond.AddRecValue)) {
+ PHINode *PN = cast<PHINode>(Cond.AddRecValue);
----------------
You can use `L.getLoopPreheader` or `L.getLoopPredecessor` to find a block from which a non-loop value is coming.
================
Comment at: llvm/test/Transforms/LoopBoundSplit/bug51866.ll:39
+; CHECK-NEXT: [[I_0_SPLIT:%.*]] = phi i16 [ [[INC_SPLIT:%.*]], [[FOR_INC_SPLIT:%.*]] ], [ 5, [[FOR_COND_SPLIT_PREHEADER]] ]
+; CHECK-NEXT: [[I_1_SPLIT:%.*]] = phi i16 [ [[INC_SPLIT]], [[FOR_INC_SPLIT]] ], [ 10, [[FOR_COND_SPLIT_PREHEADER]] ]
+; CHECK-NEXT: [[EXITCOND_NOT_SPLIT:%.*]] = icmp eq i16 [[I_0_SPLIT]], 10
----------------
Why is it 10 again?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D110060/new/
https://reviews.llvm.org/D110060
More information about the llvm-commits
mailing list