[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 ®istry) {
- // 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 ®istry) {
+ 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