Before the conversion to LLVM-IR dialect and ultimately LLVM IR, FIR is partially rewritten into a codegen form. This patch adds that pass, the fircg dialect, and the small set of Ops in the fircg (sub) dialect. Fircg is not part of the FIR dialect and should never be used outside of the (closed) conversion to LLVM IR. Authors: Eric Schweitz, Jean Perier, Rajan Walia, et.al. Differential Revision: https://reviews.llvm.org/D98063
26 lines
968 B
C++
26 lines
968 B
C++
//===- fir-opt.cpp - FIR Optimizer Driver -----------------------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This is to be like LLVM's opt program, only for FIR. Such a program is
|
|
// required for roundtrip testing, etc.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "mlir/Support/MlirOptMain.h"
|
|
#include "flang/Optimizer/Support/InitFIR.h"
|
|
|
|
using namespace mlir;
|
|
|
|
int main(int argc, char **argv) {
|
|
fir::support::registerMLIRPassesForFortranTools();
|
|
DialectRegistry registry;
|
|
fir::support::registerDialects(registry);
|
|
return failed(MlirOptMain(argc, argv, "FIR modular optimizer driver\n",
|
|
registry, /*preloadDialectsInContext=*/false));
|
|
}
|