[flang-commits] [flang] [flang][tco] Add -emit-final-mlir flag (PR #146533)
Kajetan Puchalski via flang-commits
flang-commits at lists.llvm.org
Tue Jul 1 07:03:42 PDT 2025
https://github.com/mrkajetanp created https://github.com/llvm/llvm-project/pull/146533
Add a flag to tco for emitting the final MLIR, prior to lowering to LLVM IR. This is intended to produce output that can be passed directly to mlir-translate.
>From 072a3cfd4fdfcb43f7cb292879b6daf5f8540de5 Mon Sep 17 00:00:00 2001
From: Kajetan Puchalski <kajetan.puchalski at arm.com>
Date: Tue, 1 Jul 2025 13:56:43 +0000
Subject: [PATCH] [flang][tco] Add -emit-final-mlir flag
Add a flag to tco for emitting the final MLIR, prior to lowering to LLVM
IR. This is intended to produce output that can be passed directly to
mlir-translate.
Signed-off-by: Kajetan Puchalski <kajetan.puchalski at arm.com>
---
flang/tools/tco/tco.cpp | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/flang/tools/tco/tco.cpp b/flang/tools/tco/tco.cpp
index eaf4bae088454..806cd3148d09f 100644
--- a/flang/tools/tco/tco.cpp
+++ b/flang/tools/tco/tco.cpp
@@ -70,6 +70,11 @@ static cl::opt<bool> codeGenLLVM(
cl::desc("Run only CodeGen passes and translate FIR to LLVM IR"),
cl::init(false));
+static cl::opt<bool> emitFinalMLIR(
+ "emit-final-mlir",
+ cl::desc("Only translate FIR to MLIR, do not lower to LLVM IR"),
+ cl::init(false));
+
#include "flang/Optimizer/Passes/CommandLineOpts.h"
#include "flang/Optimizer/Passes/Pipelines.h"
@@ -149,13 +154,15 @@ compileFIR(const mlir::PassPipelineCLParser &passPipeline) {
fir::registerDefaultInlinerPass(config);
fir::createMLIRToLLVMPassPipeline(pm, config);
}
- fir::addLLVMDialectToLLVMPass(pm, out.os());
+ if (!emitFinalMLIR)
+ fir::addLLVMDialectToLLVMPass(pm, out.os());
}
// run the pass manager
if (mlir::succeeded(pm.run(*owningRef))) {
// passes ran successfully, so keep the output
- if ((emitFir || passPipeline.hasAnyOccurrences()) && !codeGenLLVM)
+ if ((emitFir || passPipeline.hasAnyOccurrences() || emitFinalMLIR) &&
+ !codeGenLLVM)
printModule(*owningRef, out.os());
out.keep();
return mlir::success();
More information about the flang-commits
mailing list