[PATCH] D96535: [flang][fir] Add fir-opt tool
Valentin Clement via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 16 07:36:26 PST 2021
clementval updated this revision to Diff 324010.
clementval added a comment.
Rebase
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96535/new/
https://reviews.llvm.org/D96535
Files:
flang/test/CMakeLists.txt
flang/test/Fir/fir-ops.fir
flang/test/Fir/fir-types.fir
flang/tools/CMakeLists.txt
flang/tools/fir-opt/CMakeLists.txt
flang/tools/fir-opt/fir-opt.cpp
Index: flang/tools/fir-opt/fir-opt.cpp
===================================================================
--- /dev/null
+++ flang/tools/fir-opt/fir-opt.cpp
@@ -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));
+}
Index: flang/tools/fir-opt/CMakeLists.txt
===================================================================
--- /dev/null
+++ flang/tools/fir-opt/CMakeLists.txt
@@ -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
+)
Index: flang/tools/CMakeLists.txt
===================================================================
--- flang/tools/CMakeLists.txt
+++ flang/tools/CMakeLists.txt
@@ -12,3 +12,4 @@
endif()
add_subdirectory(tco)
add_subdirectory(f18-parse-demo)
+add_subdirectory(fir-opt)
Index: flang/test/Fir/fir-types.fir
===================================================================
--- flang/test/Fir/fir-types.fir
+++ flang/test/Fir/fir-types.fir
@@ -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>
Index: flang/test/Fir/fir-ops.fir
===================================================================
--- flang/test/Fir/fir-ops.fir
+++ flang/test/Fir/fir-ops.fir
@@ -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>
Index: flang/test/CMakeLists.txt
===================================================================
--- flang/test/CMakeLists.txt
+++ flang/test/CMakeLists.txt
@@ -34,7 +34,7 @@
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)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96535.324010.patch
Type: text/x-patch
Size: 3302 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210216/2d3e6478/attachment.bin>
More information about the llvm-commits
mailing list