-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[flang][driver] Remove flang -help
tests
#89504
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
Conversation
@llvm/pr-subscribers-flang-driver Author: Andrzej Warzyński (banach-space) ChangesThese tests were introduced when the Flang driver was originally With the introduction of the concept of "visibility" (see Patch is 37.37 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/89504.diff 2 Files Affected:
diff --git a/flang/test/Driver/driver-help-hidden.f90 b/flang/test/Driver/driver-help-hidden.f90
deleted file mode 100644
index 48f48f5384fdc5..00000000000000
--- a/flang/test/Driver/driver-help-hidden.f90
+++ /dev/null
@@ -1,168 +0,0 @@
-
-!--------------------------
-! FLANG DRIVER (flang-new)
-!--------------------------
-! RUN: %flang --help-hidden 2>&1 | FileCheck %s
-! RUN: not %flang -help-hidden 2>&1 | FileCheck %s --check-prefix=ERROR-FLANG
-
-!----------------------------------------
-! FLANG FRONTEND DRIVER (flang-new -fc1)
-!----------------------------------------
-! RUN: not %flang_fc1 --help-hidden 2>&1 | FileCheck %s --check-prefix=ERROR-FLANG-FC1
-! RUN: not %flang_fc1 -help-hidden 2>&1 | FileCheck %s --check-prefix=ERROR-FLANG-FC1
-
-! CHECK:USAGE: flang-new
-! CHECK-EMPTY:
-! CHECK-NEXT: DRIVER OPTIONS:
-! CHECK-NEXT: --driver-mode=<value> Set the driver mode to either 'gcc', 'g++', 'cpp', 'cl' or 'flang'
-! CHECK-EMPTY:
-! CHECK-NEXT:OPTIONS:
-! CHECK-NEXT: -### Print (but do not run) the commands to run for this compilation
-! CHECK-NEXT: -ccc-print-phases Dump list of actions to perform
-! CHECK-NEXT: -cpp Enable predefined and command line preprocessor macros
-! CHECK-NEXT: -c Only run preprocess, compile, and assemble steps
-! CHECK-NEXT: -dumpmachine Display the compiler's target processor
-! CHECK-NEXT: -dumpversion Display the version of the compiler
-! CHECK-NEXT: -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
-! CHECK-NEXT: -emit-llvm Use the LLVM representation for assembler and object files
-! CHECK-NEXT: -E Only run the preprocessor
-! CHECK-NEXT: -falternative-parameter-statement
-! CHECK-NEXT: Enable the old style PARAMETER statement
-! CHECK-NEXT: -fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-! CHECK-NEXT: -fbackslash Specify that backslash in string introduces an escape character
-! CHECK-NEXT: -fcolor-diagnostics Enable colors in diagnostics
-! CHECK-NEXT: -fconvert=<value> Set endian conversion of data for unformatted files
-! CHECK-NEXT: -fdefault-double-8 Set the default double precision kind to an 8 byte wide type
-! CHECK-NEXT: -fdefault-integer-8 Set the default integer and logical kind to an 8 byte wide type
-! CHECK-NEXT: -fdefault-real-8 Set the default real kind to an 8 byte wide type
-! CHECK-NEXT: -ffast-math Allow aggressive, lossy floating-point optimizations
-! CHECK-NEXT: -ffixed-form Process source files in fixed form
-! CHECK-NEXT: -ffixed-line-length=<value>
-! CHECK-NEXT: Use <value> as character line width in fixed mode
-! CHECK-NEXT: -ffp-contract=<value> Form fused FP ops (e.g. FMAs)
-! CHECK-NEXT: -ffree-form Process source files in free form
-! CHECK-NEXT: -fhonor-infinities Specify that floating-point optimizations are not allowed that assume arguments and results are not +-inf.
-! CHECK-NEXT: -fhonor-nans Specify that floating-point optimizations are not allowed that assume arguments and results are not NANs.
-! CHECK-NEXT: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
-! CHECK-NEXT: -finput-charset=<value> Specify the default character set for source files
-! CHECK-NEXT: -fintegrated-as Enable the integrated assembler
-! CHECK-NEXT: -fintrinsic-modules-path <dir>
-! CHECK-NEXT: Specify where to find the compiled intrinsic modules
-! CHECK-NEXT: -flang-deprecated-no-hlfir
-! CHECK-NEXT: Do not use HLFIR lowering (deprecated)
-! CHECK-NEXT: -flang-experimental-hlfir
-! CHECK-NEXT: Use HLFIR lowering (experimental)
-! CHECK-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
-! CHECK-NEXT: -flogical-abbreviations Enable logical abbreviations
-! CHECK-NEXT: -flto=auto Enable LTO in 'full' mode
-! CHECK-NEXT: -flto=jobserver Enable LTO in 'full' mode
-! CHECK-NEXT: -flto=<value> Set LTO mode
-! CHECK-NEXT: -flto Enable LTO in 'full' mode
-! CHECK-NEXT: -fms-runtime-lib=<value>
-! CHECK-NEXT: Select Windows run-time library
-! CHECK-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
-! CHECK-NEXT: -fno-color-diagnostics Disable colors in diagnostics
-! CHECK-NEXT: -fno-fortran-main Do not include Fortran_main.a (provided by Flang) when linking
-! CHECK-NEXT: -fno-integrated-as Disable the integrated assembler
-! CHECK-NEXT: -fno-lto Disable LTO mode (default)
-! CHECK-NEXT: -fno-ppc-native-vector-element-order
-! CHECK-NEXT: Specifies PowerPC non-native vector element order
-! CHECK-NEXT: -fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-! CHECK-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default)
-! CHECK-NEXT: -fno-version-loops-for-stride
-! CHECK-NEXT: Do not create unit-strided loops (default)
-! CHECK-NEXT: -fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions
-! CHECK-NEXT: -fopenacc Enable OpenACC
-! CHECK-NEXT: -fopenmp-assume-no-nested-parallelism
-! CHECK-NEXT: Assert no nested parallel regions in the GPU
-! CHECK-NEXT: -fopenmp-assume-no-thread-state
-! CHECK-NEXT: Assert no thread in a parallel region modifies an ICV
-! CHECK-NEXT: -fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
-! CHECK-NEXT: -fopenmp-targets=<value>
-! CHECK-NEXT: Specify comma-separated list of triples OpenMP offloading targets to be supported
-! CHECK-NEXT: -fopenmp-version=<value>
-! CHECK-NEXT: Set OpenMP version (e.g. 45 for OpenMP 4.5, 51 for OpenMP 5.1). Default value is 11 for Flang
-! CHECK-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
-! CHECK-NEXT: -foptimization-record-file=<file>
-! CHECK-NEXT: Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.
-! CHECK-NEXT: -foptimization-record-passes=<regex>
-! CHECK-NEXT: Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)
-! CHECK-NEXT: -fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
-! CHECK-NEXT: -fppc-native-vector-element-order
-! CHECK-NEXT: Specifies PowerPC native vector element order (default)
-! CHECK-NEXT: -freciprocal-math Allow division operations to be reassociated
-! CHECK-NEXT: -fropi Generate read-only position independent code (ARM only)
-! CHECK-NEXT: -frwpi Generate read-write position independent code (ARM only)
-! CHECK-NEXT: -fsave-optimization-record=<format>
-! CHECK-NEXT: Generate an optimization record file in a specific format
-! CHECK-NEXT: -fsave-optimization-record
-! CHECK-NEXT: Generate a YAML optimization record file
-! CHECK-NEXT: -fstack-arrays Attempt to allocate array temporaries on the stack, no matter their size
-! CHECK-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
-! CHECK-NEXT: -funderscoring Appends one trailing underscore to external names
-! CHECK-NEXT: -fveclib=<value> Use the given vector functions library
-! CHECK-NEXT: -fversion-loops-for-stride
-! CHECK-NEXT: Create unit-strided versions of loops
-! CHECK-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
-! CHECK-NEXT: --gcc-install-dir=<value>
-! CHECK-NEXT: Use GCC installation in the specified directory. The directory ends with path components like 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Note: executables (e.g. ld) used by the compiler are not overridden by the selected GCC installation
-! CHECK-NEXT: --gcc-toolchain=<value> Specify a directory where Clang can find 'include' and 'lib{,32,64}/gcc{,-cross}/$triple/$version'. Clang will use the GCC installation with the largest version
-! CHECK-NEXT: -gline-directives-only Emit debug line info directives only
-! CHECK-NEXT: -gline-tables-only Emit debug line number tables only
-! CHECK-NEXT: -gpulibc Link the LLVM C Library for GPUs
-! CHECK-NEXT: -g Generate source-level debug information
-! CHECK-NEXT: --help-hidden Display help for hidden options
-! CHECK-NEXT: -help Display available options
-! CHECK-NEXT: -isysroot <dir> Set the system root directory (usually /)
-! CHECK-NEXT: -I <dir> Add directory to the end of the list of include search paths
-! CHECK-NEXT: -L <dir> Add directory to library search path
-! CHECK-NEXT: -march=<value> For a list of available architectures for the target use '-mcpu=help'
-! CHECK-NEXT: -mcode-object-version=<value>
-! CHECK-NEXT: Specify code object ABI version. Defaults to 5. (AMDGPU only)
-! CHECK-NEXT: -mcpu=<value> For a list of available CPUs for the target use '-mcpu=help'
-! CHECK-NEXT: -mllvm=<arg> Alias for -mllvm
-! CHECK-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
-! CHECK-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
-! CHECK-NEXT: -mno-outline-atomics Don't generate local calls to out-of-line atomic operations
-! CHECK-NEXT: -module-dir <dir> Put MODULE files in <dir>
-! CHECK-NEXT: -moutline-atomics Generate local calls to out-of-line atomic operations
-! CHECK-NEXT: -mrvv-vector-bits=<value>
-! CHECK-NEXT: Specify the size in bits of an RVV vector register
-! CHECK-NEXT: -msve-vector-bits=<value>
-! CHECK-NEXT: Specify the size in bits of an SVE vector register. Defaults to the vector length agnostic value of "scalable". (AArch64 only)
-! CHECK-NEXT: --no-offload-arch=<value>
-! CHECK-NEXT: Remove CUDA/HIP offloading device architecture (e.g. sm_35, gfx906) from the list of devices to compile for. 'all' resets the list to its default value.
-! CHECK-NEXT: -nocpp Disable predefined and command line preprocessor macros
-! CHECK-NEXT: -nogpulib Do not link device library for CUDA/HIP device compilation
-! CHECK-NEXT: --offload-arch=<value> Specify an offloading device architecture for CUDA, HIP, or OpenMP. (e.g. sm_35). If 'native' is used the compiler will detect locally installed architectures. For HIP offloading, the device architecture can be followed by target ID features delimited by a colon (e.g. gfx908:xnack+:sramecc-). May be specified more than once.
-! CHECK-NEXT: --offload-device-only Only compile for the offloading device.
-! CHECK-NEXT: --offload-host-device Compile for both the offloading host and device (default).
-! CHECK-NEXT: --offload-host-only Only compile for the offloading host.
-! CHECK-NEXT: -o <file> Write output to <file>
-! CHECK-NEXT: -pedantic Warn on language extensions
-! CHECK-NEXT: -print-effective-triple Print the effective target triple
-! CHECK-NEXT: -print-target-triple Print the normalized target triple
-! CHECK-NEXT: -pthread Support POSIX threads in generated code
-! CHECK-NEXT: -P Disable linemarker output in -E mode
-! CHECK-NEXT: -Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
-! CHECK-NEXT: -Rpass-missed=<value> Report missed transformations by optimization passes whose name matches the given POSIX regular expression
-! CHECK-NEXT: -Rpass=<value> Report transformations performed by optimization passes whose name matches the given POSIX regular expression
-! CHECK-NEXT: -R<remark> Enable the specified remark
-! CHECK-NEXT: -save-temps=<value> Save intermediate compilation results.
-! CHECK-NEXT: -save-temps Alias for --save-temps=cwd
-! CHECK-NEXT: -std=<value> Language standard to compile for
-! CHECK-NEXT: -S Only run preprocess and compilation steps
-! CHECK-NEXT: --target=<value> Generate code for the given target
-! CHECK-NEXT: -U <macro> Undefine macro <macro>
-! CHECK-NEXT: --version Print version information
-! CHECK-NEXT: -v Show commands to run and use verbose output
-! CHECK-NEXT: -Wl,<arg> Pass the comma separated arguments in <arg> to the linker
-! CHECK-NEXT: -W<warning> Enable the specified warning
-! CHECK-NEXT: -Xflang <arg> Pass <arg> to the flang compiler
-! CHECK-NEXT: -x <language> Treat subsequent input files as having type <language>
-
-
-! ERROR-FLANG: error: unknown argument '-help-hidden'; did you mean '--help-hidden'?
-
-! Frontend driver -help-hidden is not supported
-! ERROR-FLANG-FC1: error: unknown argument: '{{.*}}'
diff --git a/flang/test/Driver/driver-help.f90 b/flang/test/Driver/driver-help.f90
index 38f74395a678ab..4c3609db80b9ac 100644
--- a/flang/test/Driver/driver-help.f90
+++ b/flang/test/Driver/driver-help.f90
@@ -1,293 +1,15 @@
-
-!--------------------------
-! FLANG DRIVER (flang)
-!--------------------------
! RUN: %flang -help 2>&1 | FileCheck %s --check-prefix=HELP
! RUN: not %flang -helps 2>&1 | FileCheck %s --check-prefix=ERROR
-!----------------------------------------
-! FLANG FRONTEND DRIVER (flang -fc1)
-!----------------------------------------
! RUN: %flang_fc1 -help 2>&1 | FileCheck %s --check-prefix=HELP-FC1
! RUN: not %flang_fc1 -helps 2>&1 | FileCheck %s --check-prefix=ERROR
! HELP:USAGE: flang
! HELP-EMPTY:
! HELP-NEXT:OPTIONS:
-! HELP-NEXT: -### Print (but do not run) the commands to run for this compilation
-! HELP-NEXT: -cpp Enable predefined and command line preprocessor macros
-! HELP-NEXT: -c Only run preprocess, compile, and assemble steps
-! HELP-NEXT: -dumpmachine Display the compiler's target processor
-! HELP-NEXT: -dumpversion Display the version of the compiler
-! HELP-NEXT: -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
-! HELP-NEXT: -emit-llvm Use the LLVM representation for assembler and object files
-! HELP-NEXT: -E Only run the preprocessor
-! HELP-NEXT: -falternative-parameter-statement
-! HELP-NEXT: Enable the old style PARAMETER statement
-! HELP-NEXT: -fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-! HELP-NEXT: -fbackslash Specify that backslash in string introduces an escape character
-! HELP-NEXT: -fcolor-diagnostics Enable colors in diagnostics
-! HELP-NEXT: -fconvert=<value> Set endian conversion of data for unformatted files
-! HELP-NEXT: -fdefault-double-8 Set the default double precision kind to an 8 byte wide type
-! HELP-NEXT: -fdefault-integer-8 Set the default integer and logical kind to an 8 byte wide type
-! HELP-NEXT: -fdefault-real-8 Set the default real kind to an 8 byte wide type
-! HELP-NEXT: -ffast-math Allow aggressive, lossy floating-point optimizations
-! HELP-NEXT: -ffixed-form Process source files in fixed form
-! HELP-NEXT: -ffixed-line-length=<value>
-! HELP-NEXT: Use <value> as character line width in fixed mode
-! HELP-NEXT: -ffp-contract=<value> Form fused FP ops (e.g. FMAs)
-! HELP-NEXT: -ffree-form Process source files in free form
-! HELP-NEXT: -fhonor-infinities Specify that floating-point optimizations are not allowed that assume arguments and results are not +-inf.
-! HELP-NEXT: -fhonor-nans Specify that floating-point optimizations are not allowed that assume arguments and results are not NANs.
-! HELP-NEXT: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
-! HELP-NEXT: -finput-charset=<value> Specify the default character set for source files
-! HELP-NEXT: -fintegrated-as Enable the integrated assembler
-! HELP-NEXT: -fintrinsic-modules-path <dir>
-! HELP-NEXT: Specify where to find the compiled intrinsic modules
-! HELP-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
-! HELP-NEXT: -flogical-abbreviations Enable logical abbreviations
-! HELP-NEXT: -flto=auto Enable LTO in 'full' mode
-! HELP-NEXT: -flto=jobserver Enable LTO in 'full' mode
-! HELP-NEXT: -flto=<value> Set LTO mode
-! HELP-NEXT: -flto Enable LTO in 'full' mode
-! HELP-NEXT: -fms-runtime-lib=<value>
-! HELP-NEXT: Select Windows run-time library
-! HELP-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
-! HELP-NEXT: -fno-color-diagnostics Disable colors in diagnostics
-! HELP-NEXT: -fno-fortran-main Do not include Fortran_main.a (provided by Flang) when linking
-! HELP-NEXT: -fno-integrated-as Disable the integrated assembler
-! HELP-NEXT: -fno-lto Disable LTO mode (default)
-! HELP-NEXT: -fno-ppc-native-vector-element-order
-! HELP-NEXT: Specifies PowerPC non-native vector element order
-! HELP-NEXT: -fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-! HELP-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default)
-! HELP-NEXT: -fno-version-loops-for-stride
-! HELP-NEXT: Do not create unit-strided loops (default)
-! HELP-NEXT: -fomit-frame-pointer Omit the frame pointer from functions that don't need it. Some stack unwinding cases, such as profilers and sanitizers, may prefer specifying -fno-omit-frame-pointer. On many targets, -O1 and higher omit the frame pointer by default. -m[no-]omit-leaf-frame-pointer takes precedence for leaf functions
-! HELP-NEXT: -fopenacc Enable OpenACC
-! HELP-NEXT: -fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
-! HELP-NEXT: -fopenmp-targets=<value>
-! HELP-NEXT: Specify comma-separated list of triples OpenMP offloading targets to be supported
-! HELP-NEXT: -fopenmp-version=<value>
-! HELP-NEXT: Set OpenMP version (e.g. 45 for OpenMP 4.5, 51 for OpenMP 5.1). Default value is 11 for Flang
-! HELP-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
-! HELP-NEXT: -foptimization-record-file=<file>
-! HELP-NEXT: Specify the output name of the file containing the optimization remarks. Implies -fsave-optimization-record. On Darwin platforms, this cannot be used with multiple -arch <arch> options.
-! HELP-NEXT: -foptimization-record-passes=<regex>
-! HELP-NEXT: Only include passes which match a specified regular expression in the generated optimization record (by default, include all passes)
-! HELP-NEXT: -fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
-! HELP-NEXT: -fppc-native-vector-element-order
-! HELP-NEXT: Specifies PowerPC native vector element order (default)
-! HELP-NEXT: -freciprocal-math Allow division operations to be reassociated
-! HELP-NEXT: ...
[truncated]
|
I'm not entirely against this, but I do currently find these tests useful when reviewing driver patches. They do make it easier to confirm my understanding of exactly what is being changed. If others want to see this change then I won't oppose it |
Thanks for the feedback @tblah ! @Meinersbur and I discussed this one at EuroLLVM couple of weeks ago. I don't feel super strong about this one - I've actually sent it for review to see what the sentiments are :)
Well, I think that we should get into a habit of using "proper" tests for that :) In fact, I feel that folks assume that updating these files qualifies as "testing" (IMHO, it doesn't). That's one additional argument for removing them. |
Yeah I agree that we need "proper" testing in addition to these. I am happy to merge if nobody else raises objections over the next few days. |
As @banach-space already brought up, I don't think these add much value. They are effectively just testing the print-loop over all options correctly considers the |
I'm OK with this going in, unless someone gives a good reason for keeping it. Whilst not difficult to change the test, it adds little value to check that every option comes out in the correct order and has the right wording next to it. And if you so much as change the spelling on the help text, you need to go fix the test as well... |
9dabbe8
to
7cdc051
Compare
These tests were introduced when the Flang driver was originally incepted. Back then, `flang-new` only supported a handful of basic options (e.g. `-v`, `-help`, `-E`) and those `-help` tests were used to guard against Clang options "leaking" into `flang-new -help`. With the introduction of the concept of "visibility" (see https://reviews.llvm.org/D157837 and https://reviews.llvm.org/D157151), these tests are effectively redundant. Also, with the number of flags growing, these tests are getting rather brittle.
7cdc051
to
ca564e9
Compare
This file was originally removed in llvm#89504 and then accidentally re-added in llvm#89938.
These tests were introduced when the Flang driver was originally
incepted. Back then,
flang-new
only supported a handful of basicoptions (e.g.
-v
,-help
,-E
) and those-help
tests were used toguard against Clang options "leaking" into
flang-new -help
.With the introduction of the concept of "visibility" (see
https://reviews.llvm.org/D157837 and https://reviews.llvm.org/D157151),
these tests are effectively redundant. Also, with the number of flags
growing, these tests are getting rather brittle.