[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