[flang-commits] [flang] f800a9b - [flang][fir][NFC] Move code from FIRDialect.h into a new header.

Eric Schweitz via flang-commits flang-commits at lists.llvm.org
Fri Feb 12 15:16:06 PST 2021


Author: Eric Schweitz
Date: 2021-02-12T15:15:46-08:00
New Revision: f800a9bd42bf5cab31fcdc3b74d3bd75502afd3c

URL: https://github.com/llvm/llvm-project/commit/f800a9bd42bf5cab31fcdc3b74d3bd75502afd3c
DIFF: https://github.com/llvm/llvm-project/commit/f800a9bd42bf5cab31fcdc3b74d3bd75502afd3c.diff

LOG: [flang][fir][NFC] Move code from FIRDialect.h into a new header.

Differential Revision: https://reviews.llvm.org/D96630

Added: 
    flang/include/flang/Optimizer/Support/InitFIR.h

Modified: 
    flang/include/flang/Optimizer/Dialect/FIRDialect.h
    flang/tools/tco/tco.cpp

Removed: 
    


################################################################################
diff  --git a/flang/include/flang/Optimizer/Dialect/FIRDialect.h b/flang/include/flang/Optimizer/Dialect/FIRDialect.h
index 8938b02cad4b..fb82d520dbc2 100644
--- a/flang/include/flang/Optimizer/Dialect/FIRDialect.h
+++ b/flang/include/flang/Optimizer/Dialect/FIRDialect.h
@@ -10,12 +10,10 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef OPTIMIZER_DIALECT_FIRDIALECT_H
-#define OPTIMIZER_DIALECT_FIRDIALECT_H
+#ifndef FORTRAN_OPTIMIZER_DIALECT_FIRDIALECT_H
+#define FORTRAN_OPTIMIZER_DIALECT_FIRDIALECT_H
 
 #include "mlir/IR/Dialect.h"
-#include "mlir/InitAllDialects.h"
-#include "mlir/InitAllPasses.h"
 
 namespace fir {
 
@@ -36,47 +34,6 @@ class FIROpsDialect final : public mlir::Dialect {
                       mlir::DialectAsmPrinter &p) const override;
 };
 
-/// Register the dialect with the provided registry.
-inline void registerFIRDialects(mlir::DialectRegistry &registry) {
-  // clang-format off
-  registry.insert<mlir::AffineDialect,
-                  mlir::LLVM::LLVMDialect,
-                  mlir::acc::OpenACCDialect,
-                  mlir::omp::OpenMPDialect,
-                  mlir::scf::SCFDialect,
-                  mlir::StandardOpsDialect,
-                  mlir::vector::VectorDialect,
-                  FIROpsDialect>();
-  // clang-format on
-}
-
-/// Register the standard passes we use. This comes from registerAllPasses(),
-/// but is a smaller set since we aren't using many of the passes found there.
-inline void registerGeneralPasses() {
-  mlir::createCanonicalizerPass();
-  mlir::createCSEPass();
-  mlir::createSuperVectorizePass({});
-  mlir::createLoopUnrollPass();
-  mlir::createLoopUnrollAndJamPass();
-  mlir::createSimplifyAffineStructuresPass();
-  mlir::createLoopFusionPass();
-  mlir::createLoopInvariantCodeMotionPass();
-  mlir::createAffineLoopInvariantCodeMotionPass();
-  mlir::createPipelineDataTransferPass();
-  mlir::createLowerAffinePass();
-  mlir::createLoopTilingPass(0);
-  mlir::createLoopCoalescingPass();
-  mlir::createAffineDataCopyGenerationPass(0, 0);
-  mlir::createMemRefDataFlowOptPass();
-  mlir::createStripDebugInfoPass();
-  mlir::createPrintOpStatsPass();
-  mlir::createInlinerPass();
-  mlir::createSymbolDCEPass();
-  mlir::createLocationSnapshotPass({});
-}
-
-inline void registerFIRPasses() { registerGeneralPasses(); }
-
 } // namespace fir
 
-#endif // OPTIMIZER_DIALECT_FIRDIALECT_H
+#endif // FORTRAN_OPTIMIZER_DIALECT_FIRDIALECT_H

diff  --git a/flang/include/flang/Optimizer/Support/InitFIR.h b/flang/include/flang/Optimizer/Support/InitFIR.h
new file mode 100644
index 000000000000..cb2dd4f4776b
--- /dev/null
+++ b/flang/include/flang/Optimizer/Support/InitFIR.h
@@ -0,0 +1,76 @@
+//===-- Optimizer/Support/InitFIR.h -----------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef FORTRAN_OPTIMIZER_SUPPORT_INITFIR_H
+#define FORTRAN_OPTIMIZER_SUPPORT_INITFIR_H
+
+#include "flang/Optimizer/Dialect/FIRDialect.h"
+#include "mlir/Conversion/Passes.h"
+#include "mlir/Dialect/Affine/Passes.h"
+#include "mlir/InitAllDialects.h"
+#include "mlir/Pass/Pass.h"
+#include "mlir/Pass/PassRegistry.h"
+#include "mlir/Transforms/LocationSnapshot.h"
+#include "mlir/Transforms/Passes.h"
+
+namespace fir::support {
+
+// The definitive list of dialects used by flang.
+#define FLANG_DIALECT_LIST                                                     \
+  mlir::AffineDialect, FIROpsDialect, mlir::LLVM::LLVMDialect,                 \
+      mlir::acc::OpenACCDialect, mlir::omp::OpenMPDialect,                     \
+      mlir::scf::SCFDialect, mlir::StandardOpsDialect,                         \
+      mlir::vector::VectorDialect
+
+/// Register all the dialects used by flang.
+inline void registerDialects(mlir::DialectRegistry &registry) {
+  registry.insert<FLANG_DIALECT_LIST>();
+}
+
+/// Forced load of all the dialects used by flang.  Lowering is not an MLIR
+/// pass, but a producer of FIR and MLIR. It is therefore a requirement that the
+/// dialects be preloaded to be able to build the IR.
+inline void loadDialects(mlir::MLIRContext &context) {
+  context.loadDialect<FLANG_DIALECT_LIST>();
+}
+
+/// Register the standard passes we use. This comes from registerAllPasses(),
+/// but is a smaller set since we aren't using many of the passes found there.
+inline void registerFIRPasses() {
+  mlir::registerCanonicalizerPass();
+  mlir::registerCSEPass();
+  mlir::registerAffineLoopFusionPass();
+  mlir::registerLoopInvariantCodeMotionPass();
+  mlir::registerLoopCoalescingPass();
+  mlir::registerStripDebugInfoPass();
+  mlir::registerPrintOpStatsPass();
+  mlir::registerInlinerPass();
+  mlir::registerSCCPPass();
+  mlir::registerMemRefDataFlowOptPass();
+  mlir::registerSymbolDCEPass();
+  mlir::registerLocationSnapshotPass();
+  mlir::registerAffinePipelineDataTransferPass();
+
+  mlir::registerAffineVectorizePass();
+  mlir::registerAffineLoopUnrollPass();
+  mlir::registerAffineLoopUnrollAndJamPass();
+  mlir::registerSimplifyAffineStructuresPass();
+  mlir::registerAffineLoopInvariantCodeMotionPass();
+  mlir::registerAffineLoopTilingPass();
+  mlir::registerAffineDataCopyGenerationPass();
+
+  mlir::registerConvertAffineToStandardPass();
+}
+
+} // namespace fir::support
+
+#endif // FORTRAN_OPTIMIZER_SUPPORT_INITFIR_H

diff  --git a/flang/tools/tco/tco.cpp b/flang/tools/tco/tco.cpp
index 49f35474048e..a67b1453fc28 100644
--- a/flang/tools/tco/tco.cpp
+++ b/flang/tools/tco/tco.cpp
@@ -11,7 +11,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "flang/Optimizer/Dialect/FIRDialect.h"
+#include "flang/Optimizer/Support/InitFIR.h"
 #include "flang/Optimizer/Support/KindMapping.h"
 #include "mlir/IR/BuiltinOps.h"
 #include "mlir/IR/MLIRContext.h"
@@ -62,7 +62,7 @@ compileFIR(const mlir::PassPipelineCLParser &passPipeline) {
   SourceMgr sourceMgr;
   sourceMgr.AddNewSourceBuffer(std::move(*fileOrErr), SMLoc());
   mlir::DialectRegistry registry;
-  fir::registerFIRDialects(registry);
+  fir::support::registerDialects(registry);
   mlir::MLIRContext context(registry);
   auto owningRef = mlir::parseSourceFile(sourceMgr, &context);
 
@@ -106,7 +106,7 @@ compileFIR(const mlir::PassPipelineCLParser &passPipeline) {
 }
 
 int main(int argc, char **argv) {
-  fir::registerFIRPasses();
+  fir::support::registerFIRPasses();
   [[maybe_unused]] InitLLVM y(argc, argv);
   mlir::registerPassManagerCLOptions();
   mlir::PassPipelineCLParser passPipe("", "Compiler passes to run");


        


More information about the flang-commits mailing list