Skip to content

[flang] Build a dedicated fir-test-opt for testing #123473

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-1.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// CHECK-LABEL: Testing : "_QPtest"
// CHECK-DAG: alloca_1#0 <-> address_of#0: NoAlias
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-2.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// CHECK-LABEL: Testing : "_QFPtest"

Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-3.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// module m
// type t
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-4.fir
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

// use --mlir-disable-threading so that the AA queries are serialised
// as well as its diagnostic output.
// RUN: fir-opt %s --test-fir-alias-analysis -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s --test-fir-alias-analysis -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// designate for a derived type component:
// module m
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-5.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// CHECK-LABEL: Testing : "_QPtest1"
// CHECK: arraya(ii)#0 <-> arrayc(ii)#0: NoAlias
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-6.fir
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' 2>&1 | FileCheck %s

// CHECK: test_y(1)#0 <-> test_x(1)#0: MayAlias
func.func @_QPtest(%arg0: !fir.ref<!fir.box<!fir.ptr<!fir.array<?xf32>>>> {fir.bindc_name = "y"}) {
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-7.fir
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' 2>&1 | FileCheck %s

// leslie3d case with two allocatable module variables
// that cannot alias:
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-8.fir
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' 2>&1 | FileCheck %s

// Exercise that a box reference does not alias with the address loaded from the box
// module mm
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/alias-analysis-9.fir
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// Fortran source code:
// program TestTmpArrayAssignment
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Test alias analysis queries for host associated accesses.
// RUN: fir-opt %s --test-fir-alias-analysis -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s --test-fir-alias-analysis -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// subroutine test1
// integer :: x(10)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// Fortran code before simplification:
// SUBROUTINE mysub(ns,ne)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// Fortran source code:
//
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// Fortran source code:
//
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// Fortran code:
// program main
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Use --mlir-disable-threading so that the AA queries are serialized
// as well as its diagnostic output.
// RUN: fir-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

// Fortran code:
//
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
// RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
// RUN: --mlir-disable-threading %s -o /dev/null 2>&1 | FileCheck %s

// Test fir.call modref with internal procedures after the host function has been inlined in
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/modref-call-args.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \
! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s

! Test fir.call modref when arguments are passed to the call. This focus
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/modref-call-dummies.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \
! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s

! Test fir.call modref for dummy argument variables. This focus on
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \
! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s

! Test that mod ref effects for variables captured in internal procedures
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/modref-call-globals.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \
! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s

! Test fir.call modref for global variables (module, saved, common).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \
! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s

! Test fir.call modref with internal procedures
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/modref-call-locals.f90
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
! RUN: bbc -emit-hlfir %s -o - | %python %S/gen_mod_ref_test.py | \
! RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
! RUN: --mlir-disable-threading -o /dev/null 2>&1 | FileCheck %s

! Test fir.call modref for local variables.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: fir-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
// RUN: fir-test-opt -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis-modref))' \
// RUN: --mlir-disable-threading %s -o /dev/null 2>&1 | FileCheck %s

// Test that fir.call modref is conservative when it cannot enusre it is
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Analysis/AliasAnalysis/ptr-component.fir
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// is via fir.coordinate_of instead of hlfir.designate. We would like alias
// analysis results to be the same in both versions.

// RUN: fir-opt %s -split-input-file -o /dev/null --mlir-disable-threading \
// RUN: fir-test-opt %s -split-input-file -o /dev/null --mlir-disable-threading \
// RUN: -pass-pipeline='builtin.module(func.func(test-fir-alias-analysis))' \
// RUN: 2>&1 | FileCheck -match-full-lines %s

Expand Down
1 change: 1 addition & 0 deletions flang/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ set(FLANG_TEST_DEPENDS
not
module_files
fir-opt
fir-test-opt
tco
bbc
llvm-dis
Expand Down
2 changes: 1 addition & 1 deletion flang/test/Fir/OpenACC/openacc-mappable.fir
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Use --mlir-disable-threading so that the diagnostic printing is serialized.
// RUN: fir-opt %s -pass-pipeline='builtin.module(test-fir-openacc-interfaces)' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s
// RUN: fir-test-opt %s -pass-pipeline='builtin.module(test-fir-openacc-interfaces)' -split-input-file --mlir-disable-threading 2>&1 | FileCheck %s

module attributes {dlti.dl_spec = #dlti.dl_spec<f16 = dense<16> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, !llvm.ptr<270> = dense<32> : vector<4xi64>, f64 = dense<64> : vector<2xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, "dlti.endianness" = "little", "dlti.stack_alignment" = 128 : i64>, fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"} {
func.func @_QPsub() {
Expand Down
2 changes: 1 addition & 1 deletion flang/test/HLFIR/assign-side-effects.fir
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Test side effects of hlfir.assign op.
// RUN: fir-opt %s --test-side-effects --verify-diagnostics
// RUN: fir-test-opt %s --test-side-effects --verify-diagnostics

func.func @test1(%x: !fir.ref<i32>, %i: i32) {
// expected-remark @below {{found an instance of 'write' on a op operand, on resource '<Default>'}}
Expand Down
2 changes: 1 addition & 1 deletion flang/test/HLFIR/memory-effects.fir
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: fir-opt %s --test-side-effects --verify-diagnostics
// RUN: fir-test-opt %s --test-side-effects --verify-diagnostics

func.func @concat(%arg0: !fir.ref<!fir.char<1,10>>, %arg1: !fir.ref<!fir.char<1, 20>>) {
// expected-remark@+1 {{operation has no memory effects}}
Expand Down
26 changes: 16 additions & 10 deletions flang/tools/fir-opt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,10 @@ llvm_update_compile_flags(fir-opt)
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
get_property(extension_libs GLOBAL PROPERTY MLIR_EXTENSION_LIBS)

if(FLANG_INCLUDE_TESTS)
set(test_libs
FIRTestAnalysis
FIRTestOpenACCInterfaces
MLIRTestIR
)
endif()
add_library(fir-opt-common INTERFACE)
target_link_libraries(fir-opt PRIVATE fir-opt-common)

target_link_libraries(fir-opt PRIVATE
target_link_libraries(fir-opt-common INTERFACE
CUFAttrs
CUFDialect
FIRDialect
Expand All @@ -23,10 +18,9 @@ target_link_libraries(fir-opt PRIVATE
FIROpenACCSupport
FlangOpenMPTransforms
FIRAnalysis
${test_libs}
)

mlir_target_link_libraries(fir-opt PRIVATE
mlir_target_link_libraries(fir-opt-common INTERFACE
${dialect_libs}
${extension_libs}

Expand All @@ -45,3 +39,15 @@ mlir_target_link_libraries(fir-opt PRIVATE
MLIRVectorToLLVM
MLIROptLib
)

if(FLANG_INCLUDE_TESTS)
add_flang_executable(fir-test-opt fir-opt.cpp)
llvm_update_compile_flags(fir-test-opt)
target_compile_definitions(fir-test-opt PRIVATE FIR_TEST_OPT)
target_link_libraries(fir-test-opt PRIVATE
fir-opt-common
FIRTestAnalysis
FIRTestOpenACCInterfaces
MLIRTestIR
)
endif()
2 changes: 1 addition & 1 deletion flang/tools/fir-opt/fir-opt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ int main(int argc, char **argv) {
fir::registerOptTransformPasses();
hlfir::registerHLFIRPasses();
flangomp::registerFlangOpenMPPasses();
#ifdef FLANG_INCLUDE_TESTS
#ifdef FIR_TEST_OPT
fir::test::registerTestFIRAliasAnalysisPass();
fir::test::registerTestFIROpenACCInterfacesPass();
mlir::registerSideEffectTestPasses();
Expand Down
Loading