[PATCH] D103007: [LoopUtils] Avoid expanding complicated SCEVNAry when rewriteLoopExitValues

guopeilin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon May 24 05:35:09 PDT 2021


guopeilin added a comment.

In D103007#2776571 <https://reviews.llvm.org/D103007#2776571>, @nikic wrote:

> Why is this not already covered by the isHighCostExpansion() check?

Firstly,within the function `isHighCostExpansion`, only the SCEVUDivExpr and SCEVMinMaxExpr could have the chance to return true.
Secondly, even though function isHighCostExpansion return true, the result is used in the following code:

  // Only do the rewrite when the ExitValue can be expanded cheaply.
  // If LoopCanBeDel is true, rewrite exit value aggressively.
  if (ReplaceExitValue == OnlyCheapRepl && !LoopCanBeDel && Phi.HighCost) {
    DeadInsts.push_back(ExitVal);
    continue;
  }

And in this case, the variable LoopCanBeDel  is true,  this means we will expand anyway.
So I guess we need some early-return way to avoid this extremely complicated cases.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103007/new/

https://reviews.llvm.org/D103007



More information about the llvm-commits mailing list