Skip to content

Commit af76071

Browse files
authored
[flang][CodeGen][NFC] Reduce TargetRewrite pass boilerplate (llvm#94450)
Tablegen can automatically generate the pass constructor. Tablegen will create a constructor for all of the pass options (not only the subset in the old constructor), but the pass options seem unused anyway. This pass does not require any modification to support alternative top-level ops. It walks all operations in the module. Functions have special handling (adding attributes, converting signatures) but this wouldn't make sense for top level operations in general.
1 parent 5a20141 commit af76071

File tree

4 files changed

+3
-26
lines changed

4 files changed

+3
-26
lines changed

flang/include/flang/Optimizer/CodeGen/CGPasses.td

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ def TargetRewritePass : Pass<"target-rewrite", "mlir::ModuleOp"> {
6161
Certain abstractions in the FIR dialect need to be rewritten to reflect
6262
representations that may differ based on the target machine.
6363
}];
64-
let constructor = "::fir::createFirTargetRewritePass()";
6564
let dependentDialects = [ "fir::FIROpsDialect", "mlir::func::FuncDialect",
6665
"mlir::DLTIDialect" ];
6766
let options = [

flang/include/flang/Optimizer/CodeGen/CodeGen.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,6 @@ struct NameUniquer;
2828
#define GEN_PASS_DECL_BOXEDPROCEDUREPASS
2929
#include "flang/Optimizer/CodeGen/CGPasses.h.inc"
3030

31-
/// FirTargetRewritePass options.
32-
struct TargetRewriteOptions {
33-
bool noCharacterConversion{};
34-
bool noComplexConversion{};
35-
bool noStructConversion{};
36-
};
37-
38-
/// Prerequiste pass for code gen. Perform intermediate rewrites to tailor the
39-
/// FIR for the chosen target.
40-
std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>> createFirTargetRewritePass(
41-
const TargetRewriteOptions &options = TargetRewriteOptions());
42-
4331
/// FIR to LLVM translation pass options.
4432
struct FIRToLLVMPassOptions {
4533
// Do not fail when type descriptors are not found when translating

flang/include/flang/Tools/CLOptions.inc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,8 @@ inline void addCodeGenRewritePass(mlir::PassManager &pm, bool preserveDeclare) {
182182
}
183183

184184
inline void addTargetRewritePass(mlir::PassManager &pm) {
185-
addPassConditionally(pm, disableTargetRewrite, []() {
186-
return fir::createFirTargetRewritePass(fir::TargetRewriteOptions{});
187-
});
185+
addPassConditionally(pm, disableTargetRewrite,
186+
[]() { return fir::createTargetRewritePass(); });
188187
}
189188

190189
inline mlir::LLVM::DIEmissionKind getEmissionKind(

flang/lib/Optimizer/CodeGen/TargetRewrite.cpp

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,7 @@ struct FixupTy {
7676
/// idioms that are used for distinct target processor and ABI combinations.
7777
class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
7878
public:
79-
TargetRewrite(const fir::TargetRewriteOptions &options) {
80-
noCharacterConversion = options.noCharacterConversion;
81-
noComplexConversion = options.noComplexConversion;
82-
noStructConversion = options.noStructConversion;
83-
}
79+
using TargetRewritePassBase<TargetRewrite>::TargetRewritePassBase;
8480

8581
void runOnOperation() override final {
8682
auto &context = getContext();
@@ -1255,8 +1251,3 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
12551251
mlir::func::FuncOp stackRestoreFn = nullptr;
12561252
};
12571253
} // namespace
1258-
1259-
std::unique_ptr<mlir::OperationPass<mlir::ModuleOp>>
1260-
fir::createFirTargetRewritePass(const fir::TargetRewriteOptions &options) {
1261-
return std::make_unique<TargetRewrite>(options);
1262-
}

0 commit comments

Comments
 (0)