[PATCH] D76350: [mlir] lower loop.if operations that yield a result

Alex Zinenko via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 18 06:30:21 PDT 2020


ftynse requested changes to this revision.
ftynse added a comment.
This revision now requires changes to proceed.

Unfortunately, this is harder than it looks. We need to make sure all IR changes in the pattern go through `rewriter` and we currently don't have a way of adding new block arguments there. If you are blocked by this, feel free to temporarily loop.if lowering from the pattern rewriter infra and run it as a plain IR-mutating pass.



================
Comment at: mlir/lib/Conversion/LoopToStandard/ConvertLoopToStandard.cpp:243
+  for (auto result : ifOp.results())
+    result.replaceAllUsesWith(continueBlock->addArgument(result.getType()));
+
----------------
We should not be calling `replaceAllUsesWith` inside `matchAndRewrite`, it messes up with the pattern rewriter (it tracks all transformations and may roll some changes back, going outside the rewrite makes changes untrackable and ultimately leads to tricky crashes).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D76350





More information about the llvm-commits mailing list