From: Florian Hahn Date: Fri, 26 Nov 2021 13:23:48 +0000 (+0000) Subject: [SCEV] Turn check in createSimpleAffineAddRec to assertion. (NFC) X-Git-Tag: upstream/15.0.7~24719 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b927aa69bf2fd50ecf33e3f5ec853eb3c70312c5;p=platform%2Fupstream%2Fllvm.git [SCEV] Turn check in createSimpleAffineAddRec to assertion. (NFC) Accum is guaranteed to be defined outside L (via Loop::isLoopInvariant checks above). I think that should guarantee that the more powerful ScalarEvolution::isLoopInvariant also determines that the value is loop invariant. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D114634 --- diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 587d632..4cdb833 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -5341,9 +5341,12 @@ const SCEV *ScalarEvolution::createSimpleAffineAddRec(PHINode *PN, // We can add Flags to the post-inc expression only if we // know that it is *undefined behavior* for BEValueV to // overflow. - if (auto *BEInst = dyn_cast(BEValueV)) - if (isLoopInvariant(Accum, L) && isAddRecNeverPoison(BEInst, L)) + if (auto *BEInst = dyn_cast(BEValueV)) { + assert(isLoopInvariant(Accum, L) && + "Accum is defined outside L, but is not invariant?"); + if (isAddRecNeverPoison(BEInst, L)) (void)getAddRecExpr(getAddExpr(StartVal, Accum), Accum, L, Flags); + } return PHISCEV; }