[PATCH] D114650: [SCEV] Construct SCEV iteratively.

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 28 06:28:28 PDT 2022


nikic accepted this revision.
nikic added a comment.
This revision is now accepted and ready to land.

LG. Seems to be a recurring problem, and the solution looks sufficiently non-intrusive. I like that there is no requirement to precisely synchronize the logic between createSCEV and createSCEVIter here, which would be a PITA. If we don't queue enough operands, those will just get computed recursively.



================
Comment at: llvm/lib/Analysis/ScalarEvolution.cpp:7349
+    // returned getUnknown for a select constant expressions anyway.
+    if (isa<Instruction>(U)) {
+      for (Value *Inc : cast<Instruction>(U)->operands())
----------------
I don't think this is strictly true due to the createNodeForSelectViaUMinSeq() code. And either way, I don't think we need to handle it this precisely here.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D114650



More information about the llvm-commits mailing list