================ @@ -54,6 +56,67 @@ struct CIRFlattenCFGPass : public CIRFlattenCFGBase<CIRFlattenCFGPass> { void runOnOperation() override; }; +struct CIRIfFlattening : public mlir::OpRewritePattern<cir::IfOp> { + using OpRewritePattern<IfOp>::OpRewritePattern; + + mlir::LogicalResult + matchAndRewrite(cir::IfOp ifOp, + mlir::PatternRewriter &rewriter) const override { + mlir::OpBuilder::InsertionGuard guard(rewriter); + mlir::Location loc = ifOp.getLoc(); + bool emptyElse = ifOp.getElseRegion().empty(); + mlir::Block *currentBlock = rewriter.getInsertionBlock(); + mlir::Block *remainingOpsBlock = + rewriter.splitBlock(currentBlock, rewriter.getInsertionPoint()); + mlir::Block *continueBlock; + if (ifOp->getResults().empty()) + continueBlock = remainingOpsBlock; + else + llvm_unreachable("NYI"); ---------------- andykaylor wrote:
@bcardosolopes What does this mean? What's not implemented here? https://github.com/llvm/llvm-project/pull/134333 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits