Skip to content

Commit

Permalink
[flang][fir] Add fir-opt tool
Browse files Browse the repository at this point in the history
This patch introduce the fir-opt tool. Similar to mlir-opt for FIR.
It will be used in following patches to test fir opt and round-trip.

Reviewed By: schweitz, mehdi_amini

Differential Revision: https://reviews.llvm.org/D96535
  • Loading branch information
clementval committed Feb 16, 2021
1 parent 1e007cf commit 8260232
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 5 deletions.
2 changes: 1 addition & 1 deletion flang/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ set(FLANG_TEST_PARAMS
flang_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py)

set(FLANG_TEST_DEPENDS
f18 FileCheck count not module_files
f18 FileCheck count not module_files fir-opt
)

list(APPEND FLANG_TEST_DEPENDS tco)
Expand Down
4 changes: 2 additions & 2 deletions flang/test/Fir/fir-ops.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Test the FIR operations

// RUN: tco -emit-fir %s | tco -emit-fir | FileCheck %s
// Parse operations and check that we can reparse what we print.
// RUN: fir-opt %s | fir-opt | FileCheck %s

// CHECK-LABEL: func private @it1() -> !fir.int<4>
// CHECK: func private @box1() -> !fir.boxchar<2>
Expand Down
4 changes: 2 additions & 2 deletions flang/test/Fir/fir-types.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Test the FIR types

// RUN: tco -emit-fir %s | tco -emit-fir | FileCheck %s
// Parse types and check that we can reparse what we print.
// RUN: fir-opt %s | fir-opt | FileCheck %s

// Fortran Intrinsic types
// CHECK-LABEL: func private @it1() -> !fir.int<4>
Expand Down
1 change: 1 addition & 0 deletions flang/tools/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ if(FLANG_BUILD_NEW_DRIVER)
endif()
add_subdirectory(tco)
add_subdirectory(f18-parse-demo)
add_subdirectory(fir-opt)
13 changes: 13 additions & 0 deletions flang/tools/fir-opt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
add_flang_tool(fir-opt fir-opt.cpp)
llvm_update_compile_flags(fir-opt)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)

target_link_libraries(fir-opt PRIVATE
FIROptimizer
${dialect_libs}

# TODO: these should be transitive dependencies from a target providing
# "registerFIRPasses()"
MLIRAffineToStandard
MLIROptLib
)
25 changes: 25 additions & 0 deletions flang/tools/fir-opt/fir-opt.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//===- 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::registerFIRPasses();
DialectRegistry registry;
fir::support::registerDialects(registry);
return failed(MlirOptMain(argc, argv, "FIR modular optimizer driver\n",
registry, /*preloadDialectsInContext*/ false));
}

0 comments on commit 8260232

Please sign in to comment.