Skip to content

Conversation

@tblah
Copy link
Contributor

@tblah tblah commented Jun 4, 2024

The pass constructor can be generated automatically by tablegen.

This pass is module-level and runs on all instances of target operations inside of it and so does not need any modification to support alternative top-level operations.

The pass constructor can be generated automatically by tablegen. This pass is module-level and runs on all instances of target operations inside of it and so does not need any modification to support alternative top-level operations.
@llvmbot llvmbot added flang Flang issues not falling into any other category flang:fir-hlfir flang:codegen labels Jun 4, 2024
@llvmbot
Copy link
Member

llvmbot commented Jun 4, 2024

@llvm/pr-subscribers-flang-codegen

@llvm/pr-subscribers-flang-fir-hlfir

Author: Tom Eccles (tblah)

Changes

The pass constructor can be generated automatically by tablegen.

This pass is module-level and runs on all instances of target operations inside of it and so does not need any modification to support alternative top-level operations.


Full diff: https://github.com/llvm/llvm-project/pull/94329.diff

4 Files Affected:

  • (modified) flang/include/flang/Optimizer/CodeGen/CGPasses.td (-1)
  • (modified) flang/include/flang/Optimizer/CodeGen/CodeGen.h (-5)
  • (modified) flang/include/flang/Tools/CLOptions.inc (+1-1)
  • (modified) flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp (+2-6)
diff --git a/flang/include/flang/Optimizer/CodeGen/CGPasses.td b/flang/include/flang/Optimizer/CodeGen/CGPasses.td index d23f07a5c8f11..df042187b2a71 100644 --- a/flang/include/flang/Optimizer/CodeGen/CGPasses.td +++ b/flang/include/flang/Optimizer/CodeGen/CGPasses.td @@ -43,7 +43,6 @@ def CodeGenRewrite : Pass<"cg-rewrite", "mlir::ModuleOp"> { let description = [{ Fuse specific subgraphs into single Ops for code generation. }]; - let constructor = "::fir::createFirCodeGenRewritePass()"; let dependentDialects = [ "fir::FIROpsDialect", "fir::FIRCodeGenDialect" ]; diff --git a/flang/include/flang/Optimizer/CodeGen/CodeGen.h b/flang/include/flang/Optimizer/CodeGen/CodeGen.h index b2773abbd8411..3063bf1c0e020 100644 --- a/flang/include/flang/Optimizer/CodeGen/CodeGen.h +++ b/flang/include/flang/Optimizer/CodeGen/CodeGen.h @@ -28,11 +28,6 @@ struct NameUniquer; #define GEN_PASS_DECL_BOXEDPROCEDUREPASS #include "flang/Optimizer/CodeGen/CGPasses.h.inc" -/// Prerequiste pass for code gen. Perform intermediate rewrites to perform -/// the code gen (to LLVM-IR dialect) conversion. -std::unique_ptr<mlir::Pass> createFirCodeGenRewritePass( - CodeGenRewriteOptions Options = CodeGenRewriteOptions{}); - /// FirTargetRewritePass options. struct TargetRewriteOptions { bool noCharacterConversion{}; diff --git a/flang/include/flang/Tools/CLOptions.inc b/flang/include/flang/Tools/CLOptions.inc index cca3344da02a1..fb3ec75d4078a 100644 --- a/flang/include/flang/Tools/CLOptions.inc +++ b/flang/include/flang/Tools/CLOptions.inc @@ -178,7 +178,7 @@ inline void addCodeGenRewritePass(mlir::PassManager &pm, bool preserveDeclare) { fir::CodeGenRewriteOptions options; options.preserveDeclare = preserveDeclare; addPassConditionally(pm, disableCodeGenRewrite, - [&]() { return fir::createFirCodeGenRewritePass(options); }); + [&]() { return fir::createCodeGenRewrite(options); }); } inline void addTargetRewritePass(mlir::PassManager &pm) { diff --git a/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp b/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp index c54a7457db761..6a0cd5ef4b34e 100644 --- a/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp +++ b/flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp @@ -327,7 +327,8 @@ class DummyScopeOpConversion class CodeGenRewrite : public fir::impl::CodeGenRewriteBase<CodeGenRewrite> { public: - CodeGenRewrite(fir::CodeGenRewriteOptions opts) : Base(opts) {} + using CodeGenRewriteBase<CodeGenRewrite>::CodeGenRewriteBase; + void runOnOperation() override final { mlir::ModuleOp mod = getOperation(); @@ -361,11 +362,6 @@ class CodeGenRewrite : public fir::impl::CodeGenRewriteBase<CodeGenRewrite> { } // namespace -std::unique_ptr<mlir::Pass> -fir::createFirCodeGenRewritePass(fir::CodeGenRewriteOptions Options) { - return std::make_unique<CodeGenRewrite>(Options); -} - void fir::populatePreCGRewritePatterns(mlir::RewritePatternSet &patterns, bool preserveDeclare) { patterns.insert<EmboxConversion, ArrayCoorConversion, ReboxConversion, 
Copy link
Contributor

@jeanPerier jeanPerier left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks

Copy link
Contributor

@clementval clementval left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jeanPerier
Copy link
Contributor

FYI, the windows failure seems related to #93718, I commented there.

Copy link
Contributor

@abidh abidh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks.

@tblah tblah merged commit 7eaae4e into llvm:main Jun 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

flang:codegen flang:fir-hlfir flang Flang issues not falling into any other category

5 participants