brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 67d07ee Raw
58 lines · cpp
1//===- fir-opt.cpp - FIR Optimizer Driver -----------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This is to be like LLVM's opt program, only for FIR.  Such a program is10// required for roundtrip testing, etc.11//12//===----------------------------------------------------------------------===//13 14#include "mlir/Tools/mlir-opt/MlirOptMain.h"15#include "flang/Optimizer/CodeGen/CodeGen.h"16#include "flang/Optimizer/HLFIR/Passes.h"17#include "flang/Optimizer/OpenACC/Passes.h"18#include "flang/Optimizer/OpenMP/Passes.h"19#include "flang/Optimizer/Support/InitFIR.h"20#include "flang/Optimizer/Transforms/Passes.h"21 22using namespace mlir;23namespace fir {24namespace test {25void registerTestFIRAliasAnalysisPass();26void registerTestFIROpenACCInterfacesPass();27} // namespace test28} // namespace fir29 30// Defined in mlir/test, no pulic header.31namespace mlir {32void registerSideEffectTestPasses();33namespace test {34void registerTestOpenACC();35} // namespace test36} // namespace mlir37 38int main(int argc, char **argv) {39  fir::support::registerMLIRPassesForFortranTools();40  fir::registerOptCodeGenPasses();41  fir::registerOptTransformPasses();42  hlfir::registerHLFIRPasses();43  flangomp::registerFlangOpenMPPasses();44  fir::acc::registerFIROpenACCPasses();45#ifdef FLANG_INCLUDE_TESTS46  fir::test::registerTestFIRAliasAnalysisPass();47  fir::test::registerTestFIROpenACCInterfacesPass();48  mlir::registerSideEffectTestPasses();49  mlir::test::registerTestOpenACC();50#endif51  DialectRegistry registry;52  fir::support::registerDialects(registry);53  registry.insert<mlir::memref::MemRefDialect>();54  fir::support::addFIRExtensions(registry);55  return failed(MlirOptMain(argc, argv, "FIR modular optimizer driver\n",56      registry));57}58