[flang-commits] [flang] [flang][fir]: New optimizer transform of `fir.if` to `scf.if`. (PR #149959)

Tom Eccles via flang-commits flang-commits at lists.llvm.org
Tue Jul 22 04:06:52 PDT 2025


================
@@ -87,13 +87,52 @@ struct DoLoopConversion : public OpRewritePattern<fir::DoLoopOp> {
     return success();
   }
 };
+
+void copyBlocksAndTransformResult(PatternRewriter &rewriter, Block &srcBlock,
+                                  Block &dstBlock) {
+  Operation *srcTerminator = srcBlock.getTerminator();
+  auto resultOp = cast<fir::ResultOp>(srcTerminator);
+
+  dstBlock.getOperations().splice(dstBlock.begin(), srcBlock.getOperations(),
+                                  srcBlock.begin(), std::prev(srcBlock.end()));
+
+  if (!resultOp->getOperands().empty()) {
+    rewriter.setInsertionPointToEnd(&dstBlock);
+    rewriter.create<scf::YieldOp>(resultOp.getLoc(), resultOp.getOperands());
----------------
tblah wrote:

Note that this old syntax is being replaced with `YieldOp::create(rewriter, ....)`. For example, see https://github.com/llvm/llvm-project/pull/149917

https://github.com/llvm/llvm-project/pull/149959


More information about the flang-commits mailing list