This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG83a06997c69a: [flang][driver] Update the visibility of Clang
options in Flang (authored by awarzynski).
Changed prior to commit:
https://reviews.llvm.org/D157837?vs=550668&id=551220#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D157837/new/
https://reviews.llvm.org/D157837
Files:
clang/include/clang/Driver/Options.td
clang/lib/Driver/Driver.cpp
clang/test/Driver/flang/flang.f90
clang/test/Driver/flang/flang_ucase.F90
flang/test/Driver/driver-help-hidden.f90
flang/test/Driver/driver-help.f90
flang/test/Driver/fast_math.f90
Index: flang/test/Driver/fast_math.f90
===================================================================
--- flang/test/Driver/fast_math.f90
+++ flang/test/Driver/fast_math.f90
@@ -70,7 +70,7 @@
! UNSUPPORTED: system-windows
! UNSUPPORTED: target=powerpc{{.*}}
! RUN: %flang -ffast-math -### %s -o %t 2>&1 \
-! RUN: --target=x86_64-unknown-linux -no-pie --gcc-toolchain="" \
+! RUN: --target=x86_64-unknown-linux -no-pie \
! RUN: --sysroot=%S/../../../clang/test/Driver/Inputs/basic_linux_tree \
! RUN: | FileCheck --check-prefix=CHECK-CRT %s
! CHECK-CRT: {{crtbegin.?\.o}}
Index: flang/test/Driver/driver-help.f90
===================================================================
--- flang/test/Driver/driver-help.f90
+++ flang/test/Driver/driver-help.f90
@@ -14,224 +14,242 @@
! 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: -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: -### 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: -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: 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: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
+! 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: -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: 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=<value> Set LTO mode
-! HELP-NEXT: -flto Enable LTO in 'full' mode
-! HELP-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
+! 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: -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-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: 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: -fopenacc Enable OpenACC
+! HELP-NEXT: Do not create unit-strided loops (default)
+! 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, 50 for OpenMP 5.0). Default value is 50 for Clang and 11 for Flang
-! HELP-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
+! HELP-NEXT: Set OpenMP version (e.g. 45 for OpenMP 4.5, 50 for OpenMP 5.0). Default value is 50 for Clang and 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: 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: 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
-! HELP-NEXT: -freciprocal-math Allow division operations to be reassociated
+! HELP-NEXT: Specifies PowerPC native vector element order (default)
+! HELP-NEXT: -freciprocal-math Allow division operations to be reassociated
! HELP-NEXT: -fsave-optimization-record=<format>
-! HELP-NEXT: Generate an optimization record file in a specific format
+! HELP-NEXT: Generate an optimization record file in a specific format
! HELP-NEXT: -fsave-optimization-record
-! HELP-NEXT: Generate a YAML optimization record file
-! HELP-NEXT: -fstack-arrays Attempt to allocate array temporaries on the stack, no matter their size
-! HELP-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
-! HELP-NEXT: -funderscoring Appends one trailing underscore to external names
+! HELP-NEXT: Generate a YAML optimization record file
+! HELP-NEXT: -fstack-arrays Attempt to allocate array temporaries on the stack, no matter their size
+! HELP-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
+! HELP-NEXT: -funderscoring Appends one trailing underscore to external names
! HELP-NEXT: -fversion-loops-for-stride
-! HELP-NEXT: Create unit-strided versions of loops
-! HELP-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
-! HELP-NEXT: -gline-tables-only Emit debug line number tables only
-! HELP-NEXT: -g Generate source-level debug information
-! HELP-NEXT: -help Display available options
-! HELP-NEXT: -I <dir> Add directory to the end of the list of include search paths
-! HELP-NEXT: -mllvm=<arg> Alias for -mllvm
-! HELP-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
-! HELP-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
-! HELP-NEXT: -module-dir <dir> Put MODULE files in <dir>
-! HELP-NEXT: -nocpp Disable predefined and command line preprocessor macros
+! HELP-NEXT: Create unit-strided versions of loops
+! HELP-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
+! HELP-NEXT: -gline-directives-only Emit debug line info directives only
+! HELP-NEXT: -gline-tables-only Emit debug line number tables only
+! HELP-NEXT: -g Generate source-level debug information
+! HELP-NEXT: --help-hidden Display help for hidden options
+! HELP-NEXT: -help Display available options
+! HELP-NEXT: -I <dir> Add directory to the end of the list of include search paths
+! HELP-NEXT: -march=<value> For a list of available architectures for the target use '-mcpu=help'
+! HELP-NEXT: -mcpu=<value> For a list of available CPUs for the target use '-mcpu=help'
+! HELP-NEXT: -mllvm=<arg> Alias for -mllvm
+! HELP-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
+! HELP-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
+! HELP-NEXT: -module-dir <dir> Put MODULE files in <dir>
+! HELP-NEXT: --no-offload-arch=<value>
+! HELP-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.
+! HELP-NEXT: -nocpp Disable predefined and command line preprocessor macros
+! HELP-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.
! HELP-NEXT: --offload-device-only Only compile for the offloading device.
! HELP-NEXT: --offload-host-device Compile for both the offloading host and device (default).
! HELP-NEXT: --offload-host-only Only compile for the offloading host.
-! HELP-NEXT: -o <file> Write output to <file>
-! HELP-NEXT: -pedantic Warn on language extensions
+! HELP-NEXT: -o <file> Write output to <file>
+! HELP-NEXT: -pedantic Warn on language extensions
! HELP-NEXT: -print-effective-triple Print the effective target triple
! HELP-NEXT: -print-target-triple Print the normalized target triple
-! HELP-NEXT: -P Disable linemarker output in -E mode
+! HELP-NEXT: -P Disable linemarker output in -E mode
! HELP-NEXT: -Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
! HELP-NEXT: -Rpass-missed=<value> Report missed transformations by optimization passes whose name matches the given POSIX regular expression
! HELP-NEXT: -Rpass=<value> Report transformations performed by optimization passes whose name matches the given POSIX regular expression
! HELP-NEXT: -R<remark> Enable the specified remark
-! HELP-NEXT: -save-temps=<value> Save intermediate compilation results.
-! HELP-NEXT: -save-temps Save intermediate compilation results
-! HELP-NEXT: -std=<value> Language standard to compile for
-! HELP-NEXT: -S Only run preprocess and compilation steps
-! HELP-NEXT: --target=<value> Generate code for the given target
-! HELP-NEXT: -U <macro> Undefine macro <macro>
-! HELP-NEXT: --version Print version information
-! HELP-NEXT: -W<warning> Enable the specified warning
-! HELP-NEXT: -Xflang <arg> Pass <arg> to the flang compiler
+! HELP-NEXT: -save-temps=<value> Save intermediate compilation results.
+! HELP-NEXT: -save-temps Save intermediate compilation results
+! HELP-NEXT: -std=<value> Language standard to compile for
+! HELP-NEXT: -S Only run preprocess and compilation steps
+! HELP-NEXT: --target=<value> Generate code for the given target
+! HELP-NEXT: -U <macro> Undefine macro <macro>
+! HELP-NEXT: --version Print version information
+! HELP-NEXT: -W<warning> Enable the specified warning
+! HELP-NEXT: -Xflang <arg> Pass <arg> to the flang compiler
+! HELP-NEXT: -x <language> Treat subsequent input files as having type <language>
+
! HELP-FC1:USAGE: flang
! HELP-FC1-EMPTY:
! HELP-FC1-NEXT:OPTIONS:
-! HELP-FC1-NEXT: -cpp Enable predefined and command line preprocessor macros
-! HELP-FC1-NEXT: -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
-! HELP-FC1-NEXT: -emit-fir Build the parse tree, then lower it to FIR
-! HELP-FC1-NEXT: -emit-hlfir Build the parse tree, then lower it to HLFIR
-! HELP-FC1-NEXT: -emit-llvm-bc Build ASTs then convert to LLVM, emit .bc file
-! HELP-FC1-NEXT: -emit-llvm Use the LLVM representation for assembler and object files
-! HELP-FC1-NEXT: -emit-obj Emit native object files
-! HELP-FC1-NEXT: -E Only run the preprocessor
+! HELP-FC1-NEXT: -cpp Enable predefined and command line preprocessor macros
+! HELP-FC1-NEXT: -D <macro>=<value> Define <macro> to <value> (or 1 if <value> omitted)
+! HELP-FC1-NEXT: -emit-fir Build the parse tree, then lower it to FIR
+! HELP-FC1-NEXT: -emit-hlfir Build the parse tree, then lower it to HLFIR
+! HELP-FC1-NEXT: -emit-llvm-bc Build ASTs then convert to LLVM, emit .bc file
+! HELP-FC1-NEXT: -emit-llvm Use the LLVM representation for assembler and object files
+! HELP-FC1-NEXT: -emit-obj Emit native object files
+! HELP-FC1-NEXT: -E Only run the preprocessor
! HELP-FC1-NEXT: -falternative-parameter-statement
-! HELP-FC1-NEXT: Enable the old style PARAMETER statement
-! HELP-FC1-NEXT: -fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
-! HELP-FC1-NEXT: -fbackslash Specify that backslash in string introduces an escape character
+! HELP-FC1-NEXT: Enable the old style PARAMETER statement
+! HELP-FC1-NEXT: -fapprox-func Allow certain math function calls to be replaced with an approximately equivalent calculation
+! HELP-FC1-NEXT: -fbackslash Specify that backslash in string introduces an escape character
! HELP-FC1-NEXT: -fcolor-diagnostics Enable colors in diagnostics
-! HELP-FC1-NEXT: -fconvert=<value> Set endian conversion of data for unformatted files
-! HELP-FC1-NEXT: -fdebug-dump-all Dump symbols and the parse tree after the semantic checks
+! HELP-FC1-NEXT: -fconvert=<value> Set endian conversion of data for unformatted files
+! HELP-FC1-NEXT: -fdebug-dump-all Dump symbols and the parse tree after the semantic checks
! HELP-FC1-NEXT: -fdebug-dump-parse-tree-no-sema
-! HELP-FC1-NEXT: Dump the parse tree (skips the semantic checks)
+! HELP-FC1-NEXT: Dump the parse tree (skips the semantic checks)
! HELP-FC1-NEXT: -fdebug-dump-parse-tree Dump the parse tree
! HELP-FC1-NEXT: -fdebug-dump-parsing-log
-! HELP-FC1-NEXT: Run instrumented parse and dump the parsing log
+! HELP-FC1-NEXT: Run instrumented parse and dump the parsing log
! HELP-FC1-NEXT: -fdebug-dump-pft Dump the pre-fir parse tree
! HELP-FC1-NEXT: -fdebug-dump-provenance Dump provenance
! HELP-FC1-NEXT: -fdebug-dump-symbols Dump symbols after the semantic analysis
! HELP-FC1-NEXT: -fdebug-measure-parse-tree
! HELP-FC1-NEXT: Measure the parse tree
! HELP-FC1-NEXT: -fdebug-module-writer Enable debug messages while writing module files
-! HELP-FC1-NEXT: -fdebug-pass-manager Prints debug information for the new pass manage
+! HELP-FC1-NEXT: -fdebug-pass-manager Prints debug information for the new pass manager
! HELP-FC1-NEXT: -fdebug-pre-fir-tree Dump the pre-FIR tree
! HELP-FC1-NEXT: -fdebug-unparse-no-sema Unparse and stop (skips the semantic checks)
! HELP-FC1-NEXT: -fdebug-unparse-with-symbols
-! HELP-FC1-NEXT: Unparse and stop.
-! HELP-FC1-NEXT: -fdebug-unparse Unparse and stop.
-! HELP-FC1-NEXT: -fdefault-double-8 Set the default double precision kind to an 8 byte wide type
-! HELP-FC1-NEXT: -fdefault-integer-8 Set the default integer and logical kind to an 8 byte wide type
-! HELP-FC1-NEXT: -fdefault-real-8 Set the default real kind to an 8 byte wide type
+! HELP-FC1-NEXT: Unparse and stop.
+! HELP-FC1-NEXT: -fdebug-unparse Unparse and stop.
+! HELP-FC1-NEXT: -fdefault-double-8 Set the default double precision kind to an 8 byte wide type
+! HELP-FC1-NEXT: -fdefault-integer-8 Set the default integer and logical kind to an 8 byte wide type
+! HELP-FC1-NEXT: -fdefault-real-8 Set the default real kind to an 8 byte wide type
! HELP-FC1-NEXT: -fembed-offload-object=<value>
-! HELP-FC1-NEXT: Embed Offloading device-side binary into host object file as a section.
-! HELP-FC1-NEXT: -ffast-math Allow aggressive, lossy floating-point optimizations
-! HELP-FC1-NEXT: -ffixed-form Process source files in fixed form
+! HELP-FC1-NEXT: Embed Offloading device-side binary into host object file as a section.
+! HELP-FC1-NEXT: -ffast-math Allow aggressive, lossy floating-point optimizations
+! HELP-FC1-NEXT: -ffixed-form Process source files in fixed form
! HELP-FC1-NEXT: -ffixed-line-length=<value>
-! HELP-FC1-NEXT: Use <value> as character line width in fixed mode
-! HELP-FC1-NEXT: -ffp-contract=<value> Form fused FP ops (e.g. FMAs)
-! HELP-FC1-NEXT: -ffree-form Process source files in free form
+! HELP-FC1-NEXT: Use <value> as character line width in fixed mode
+! HELP-FC1-NEXT: -ffp-contract=<value> Form fused FP ops (e.g. FMAs)
+! HELP-FC1-NEXT: -ffree-form Process source files in free form
! HELP-FC1-NEXT: -fget-definition <value> <value> <value>
-! HELP-FC1-NEXT: Get the symbol definition from <line> <start-column> <end-column>
+! HELP-FC1-NEXT: Get the symbol definition from <line> <start-column> <end-column>
! HELP-FC1-NEXT: -fget-symbols-sources Dump symbols and their source code locations
-! HELP-FC1-NEXT: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
+! HELP-FC1-NEXT: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
! HELP-FC1-NEXT: -finput-charset=<value> Specify the default character set for source files
! HELP-FC1-NEXT: -fintrinsic-modules-path <dir>
-! HELP-FC1-NEXT: Specify where to find the compiled intrinsic modules
-! HELP-FC1-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
+! HELP-FC1-NEXT: Specify where to find the compiled intrinsic modules
+! HELP-FC1-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
! HELP-FC1-NEXT: -flogical-abbreviations Enable logical abbreviations
! HELP-FC1-NEXT: -flto=<value> Set LTO mode
! HELP-FC1-NEXT: -flto Enable LTO in 'full' mode
! HELP-FC1-NEXT: -fno-analyzed-objects-for-unparse
-! HELP-FC1-NEXT: Do not use the analyzed objects when unparsing
-! HELP-FC1-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
+! HELP-FC1-NEXT: Do not use the analyzed objects when unparsing
+! HELP-FC1-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
! HELP-FC1-NEXT: -fno-debug-pass-manager Disables debug printing for the new pass manager
! HELP-FC1-NEXT: -fno-ppc-native-vector-element-order
-! HELP-FC1-NEXT: Specifies PowerPC non-native vector element order
-! HELP-FC1-NEXT: -fno-reformat Dump the cooked character stream in -E mode
-! HELP-FC1-NEXT: -fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
-! HELP-FC1-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default)
+! HELP-FC1-NEXT: Specifies PowerPC non-native vector element order
+! HELP-FC1-NEXT: -fno-reformat Dump the cooked character stream in -E mode
+! HELP-FC1-NEXT: -fno-signed-zeros Allow optimizations that ignore the sign of floating point zeros
+! HELP-FC1-NEXT: -fno-stack-arrays Allocate array temporaries on the heap (default)
! HELP-FC1-NEXT: -fno-version-loops-for-stride
-! HELP-FC1-NEXT: Do not create unit-strided loops (default)
-! HELP-FC1-NEXT: -fopenacc Enable OpenACC
-! HELP-FC1-NEXT: -fopenmp-host-ir-file-path <value>
-! HELP-FC1-NEXT: Path to the IR file produced by the frontend for the host.
+! HELP-FC1-NEXT: Do not create unit-strided loops (default)
+! HELP-FC1-NEXT: -fopenacc Enable OpenACC
+! HELP-FC1-NEXT: -fopenmp-host-ir-file-path <value>
+! HELP-FC1-NEXT: Path to the IR file produced by the frontend for the host.
! HELP-FC1-NEXT: -fopenmp-is-target-device
-! HELP-FC1-NEXT: Generate code only for an OpenMP target device.
-! HELP-FC1-NEXT: -fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
+! HELP-FC1-NEXT: Generate code only for an OpenMP target device.
+! HELP-FC1-NEXT: -fopenmp-target-debug Enable debugging in the OpenMP offloading device RTL
! HELP-FC1-NEXT: -fopenmp-version=<value>
-! HELP-FC1-NEXT: Set OpenMP version (e.g. 45 for OpenMP 4.5, 50 for OpenMP 5.0). Default value is 50 for Clang and 11 for Flang
-! HELP-FC1-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
+! HELP-FC1-NEXT: Set OpenMP version (e.g. 45 for OpenMP 4.5, 50 for OpenMP 5.0). Default value is 50 for Clang and 11 for Flang
+! HELP-FC1-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
! HELP-FC1-NEXT: -fpass-plugin=<dsopath> Load pass plugin from a dynamic shared object file (only with new pass manager).
! HELP-FC1-NEXT: -fppc-native-vector-element-order
-! HELP-FC1-NEXT: Specifies PowerPC native vector element order
-! HELP-FC1-NEXT: -freciprocal-math Allow division operations to be reassociated
-! HELP-FC1-NEXT: -fstack-arrays Attempt to allocate array temporaries on the stack, no matter their size
-! HELP-FC1-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
-! HELP-FC1-NEXT: -funderscoring Appends one trailing underscore to external names
+! HELP-FC1-NEXT: Specifies PowerPC native vector element order (default)
+! HELP-FC1-NEXT: -freciprocal-math Allow division operations to be reassociated
+! HELP-FC1-NEXT: -fstack-arrays Attempt to allocate array temporaries on the stack, no matter their size
+! HELP-FC1-NEXT: -fsyntax-only Run the preprocessor, parser and semantic analysis stages
+! HELP-FC1-NEXT: -funderscoring Appends one trailing underscore to external names
! HELP-FC1-NEXT: -fversion-loops-for-stride
-! HELP-FC1-NEXT: Create unit-strided versions of loops
-! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
-! HELP-FC1-NEXT: -help Display available options
-! HELP-FC1-NEXT: -init-only Only execute frontend initialization
-! HELP-FC1-NEXT: -I <dir> Add directory to the end of the list of include search paths
-! HELP-FC1-NEXT: -load <dsopath> Load the named plugin (dynamic shared object)
-! HELP-FC1-NEXT: -menable-no-infs Allow optimization to assume there are no infinities.
-! HELP-FC1-NEXT: -menable-no-nans Allow optimization to assume there are no NaNs.
-! HELP-FC1-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
-! HELP-FC1-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
-! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir>
+! HELP-FC1-NEXT: Create unit-strided versions of loops
+! HELP-FC1-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
+! HELP-FC1-NEXT: -help Display available options
+! HELP-FC1-NEXT: -init-only Only execute frontend initialization
+! HELP-FC1-NEXT: -I <dir> Add directory to the end of the list of include search paths
+! HELP-FC1-NEXT: -load <dsopath> Load the named plugin (dynamic shared object)
+! HELP-FC1-NEXT: -menable-no-infs Allow optimization to assume there are no infinities.
+! HELP-FC1-NEXT: -menable-no-nans Allow optimization to assume there are no NaNs.
+! HELP-FC1-NEXT: -mllvm <value> Additional arguments to forward to LLVM's option processing
+! HELP-FC1-NEXT: -mmlir <value> Additional arguments to forward to MLIR's option processing
+! HELP-FC1-NEXT: -module-dir <dir> Put MODULE files in <dir>
! HELP-FC1-NEXT: -module-suffix <suffix> Use <suffix> as the suffix for module files (the default value is `.mod`)
-! HELP-FC1-NEXT: -mreassociate Allow reassociation transformations for floating-point instructions
+! HELP-FC1-NEXT: -mreassociate Allow reassociation transformations for floating-point instructions
! HELP-FC1-NEXT: -mrelocation-model <value>
-! HELP-FC1-NEXT: The relocation model to use
-! HELP-FC1-NEXT: -nocpp Disable predefined and command line preprocessor macros
+! HELP-FC1-NEXT: The relocation model to use
+! HELP-FC1-NEXT: -nocpp Disable predefined and command line preprocessor macros
! HELP-FC1-NEXT: -opt-record-file <value>
-! HELP-FC1-NEXT: File name to use for YAML optimization record output
+! HELP-FC1-NEXT: File name to use for YAML optimization record output
! HELP-FC1-NEXT: -opt-record-format <value>
-! HELP-FC1-NEXT: The format used for serializing remarks (default: YAML)
+! HELP-FC1-NEXT: The format used for serializing remarks (default: YAML)
! HELP-FC1-NEXT: -opt-record-passes <value>
-! HELP-FC1-NEXT: Only record remark information for passes whose names match the given regular expression
-! HELP-FC1-NEXT: -o <file> Write output to <file>
-! HELP-FC1-NEXT: -pedantic Warn on language extensions
+! HELP-FC1-NEXT: Only record remark information for passes whose names match the given regular expression
+! HELP-FC1-NEXT: -o <file> Write output to <file>
+! HELP-FC1-NEXT: -pedantic Warn on language extensions
! HELP-FC1-NEXT: -pic-is-pie File is for a position independent executable
! HELP-FC1-NEXT: -pic-level <value> Value for __PIC__
-! HELP-FC1-NEXT: -plugin <name> Use the named plugin action instead of the default action (use "help" to list available options)
-! HELP-FC1-NEXT: -P Disable linemarker output in -E mode
+! HELP-FC1-NEXT: -plugin <name> Use the named plugin action instead of the default action (use "help" to list available options)
+! HELP-FC1-NEXT: -P Disable linemarker output in -E mode
! HELP-FC1-NEXT: -Rpass-analysis=<value> Report transformation analysis from optimization passes whose name matches the given POSIX regular expression
! HELP-FC1-NEXT: -Rpass-missed=<value> Report missed transformations by optimization passes whose name matches the given POSIX regular expression
! HELP-FC1-NEXT: -Rpass=<value> Report transformations performed by optimization passes whose name matches the given POSIX regular expression
! HELP-FC1-NEXT: -R<remark> Enable the specified remark
-! HELP-FC1-NEXT: -save-temps=<value> Save intermediate compilation results.
-! HELP-FC1-NEXT: -save-temps Save intermediate compilation results
-! HELP-FC1-NEXT: -std=<value> Language standard to compile for
-! HELP-FC1-NEXT: -S Only run preprocess and compilation steps
-! HELP-FC1-NEXT: -target-cpu <value> Target a specific cpu type
+! HELP-FC1-NEXT: -save-temps=<value> Save intermediate compilation results.
+! HELP-FC1-NEXT: -save-temps Save intermediate compilation results
+! HELP-FC1-NEXT: -std=<value> Language standard to compile for
+! HELP-FC1-NEXT: -S Only run preprocess and compilation steps
+! HELP-FC1-NEXT: -target-cpu <value> Target a specific cpu type
! HELP-FC1-NEXT: -target-feature <value> Target specific attributes
-! HELP-FC1-NEXT: -test-io Run the InputOuputTest action. Use for development and testing only.
-! HELP-FC1-NEXT: -triple <value> Specify target triple (e.g. i686-apple-darwin9)
-! HELP-FC1-NEXT: -U <macro> Undefine macro <macro>
-! HELP-FC1-NEXT: -version Print the compiler version
-! HELP-FC1-NEXT: -W<warning> Enable the specified warning
+! HELP-FC1-NEXT: -test-io Run the InputOuputTest action. Use for development and testing only.
+! HELP-FC1-NEXT: -triple <value> Specify target triple (e.g. i686-apple-darwin9)
+! HELP-FC1-NEXT: -U <macro> Undefine macro <macro>
+! HELP-FC1-NEXT: -version Print the compiler version
+! HELP-FC1-NEXT: -W<warning> Enable the specified warning
+! HELP-FC1-NEXT: -x <language> Treat subsequent input files as having type <language>
! ERROR: error: unknown argument '-helps'; did you mean '-help'
Index: flang/test/Driver/driver-help-hidden.f90
===================================================================
--- flang/test/Driver/driver-help-hidden.f90
+++ flang/test/Driver/driver-help-hidden.f90
@@ -13,101 +13,125 @@
! 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: -cpp Enable predefined and command line preprocessor macros
-! CHECK-NEXT: -c Only run preprocess, compile, and assemble steps
-! 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: -### 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: -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: 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: -fimplicit-none No implicit typing allowed unless overridden by IMPLICIT statements
+! 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: -fintrinsic-modules-path <dir>
-! CHECK-NEXT: Specify where to find the compiled intrinsic modules
+! CHECK-NEXT: Specify where to find the compiled intrinsic modules
! CHECK-NEXT: -flang-experimental-hlfir
-! CHECK-NEXT: Use HLFIR lowering (experimental)
+! CHECK-NEXT: Use HLFIR lowering (experimental)
! CHECK-NEXT: -flang-experimental-polymorphism
-! CHECK-NEXT: Enable Fortran 2003 polymorphism (experimental)
-! CHECK-NEXT: -flarge-sizes Use INTEGER(KIND=8) for the result type in size-related intrinsics
+! CHECK-NEXT: Enable Fortran 2003 polymorphism (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=<value> Set LTO mode
-! CHECK-NEXT: -flto Enable LTO in 'full' mode
-! CHECK-NEXT: -fno-automatic Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE
+! 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: -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-integrated-as Disable the integrated assembler
+! 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: 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: -fopenacc Enable OpenACC
+! CHECK-NEXT: Do not create unit-strided loops (default)
+! 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, 50 for OpenMP 5.0). Default value is 50 for Clang and 11 for Flang
-! CHECK-NEXT: -fopenmp Parse OpenMP pragmas and generate parallel code.
+! CHECK-NEXT: Set OpenMP version (e.g. 45 for OpenMP 4.5, 50 for OpenMP 5.0). Default value is 50 for Clang and 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: 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: 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
-! CHECK-NEXT: -freciprocal-math Allow division operations to be reassociated
+! CHECK-NEXT: Specifies PowerPC native vector element order (default)
+! CHECK-NEXT: -freciprocal-math Allow division operations to be reassociated
! CHECK-NEXT: -fsave-optimization-record=<format>
-! CHECK-NEXT: Generate an optimization record file in a specific 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: 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: -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: -gline-tables-only Emit debug line number tables only
-! CHECK-NEXT: -g Generate source-level debug information
-! CHECK-NEXT: -help Display available options
-! CHECK-NEXT: -I <dir> Add directory to the end of the list of include search paths
-! 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: -module-dir <dir> Put MODULE files in <dir>
-! CHECK-NEXT: -nocpp Disable predefined and command line preprocessor macros
+! CHECK-NEXT: Create unit-strided versions of loops
+! CHECK-NEXT: -fxor-operator Enable .XOR. as a synonym of .NEQV.
+! CHECK-NEXT: -gline-directives-only Emit debug line info directives only
+! CHECK-NEXT: -gline-tables-only Emit debug line number tables only
+! 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: -I <dir> Add directory to the end of the list of include search paths
+! CHECK-NEXT: -march=<value> For a list of available architectures for the target use '-mcpu=help'
+! 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: -module-dir <dir> Put MODULE files in <dir>
+! 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: --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: -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: -P Disable linemarker output in -E mode
+! 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 Save intermediate compilation results
-! CHECK-NEXT: -std=<value> Language standard to compile for
-! CHECK-NEXT: -S Only run preprocess and compilation steps
+! CHECK-NEXT: -save-temps=<value> Save intermediate compilation results.
+! CHECK-NEXT: -save-temps Save intermediate compilation results
+! 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: -W<warning> Enable the specified warning
-! CHECK-NEXT: -Xflang <arg> Pass <arg> to the flang compiler
+! CHECK-NEXT: -U <macro> Undefine macro <macro>
+! CHECK-NEXT: --version Print version information
+! 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'?
Index: clang/test/Driver/flang/flang_ucase.F90
===================================================================
--- clang/test/Driver/flang/flang_ucase.F90
+++ clang/test/Driver/flang/flang_ucase.F90
@@ -22,10 +22,6 @@
! CHECK-E-DAG: "-E"
! CHECK-E-DAG: "-o" "-"
-! RUN: %clang --driver-mode=flang -### -emit-ast %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-AST %s
-! CHECK-EMIT-AST-DAG: "-emit-ast"
-! CHECK-EMIT-AST-DAG: "-o" "{{[^"]*}}.ast"
-
! RUN: %clang --driver-mode=flang -### -fsyntax-only %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-SYNTAX-ONLY %s
! CHECK-SYNTAX-ONLY-NOT: "-o"
! CHECK-SYNTAX-ONLY-DAG: "-fsyntax-only"
@@ -42,7 +38,7 @@
! CHECK-S-DAG: "-S"
! CHECK-S-DAG: "-o" "{{[^"]*}}.s"
-! RUN: %clang --driver-mode=flang -### -fintegrated-as %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-OBJ %s
+! RUN: %clang --driver-mode=flang -### %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-OBJ %s
! CHECK-EMIT-OBJ-DAG: "-emit-obj"
! CHECK-EMIT-OBJ-DAG: "-o" "{{[^"]*}}.o"
Index: clang/test/Driver/flang/flang.f90
===================================================================
--- clang/test/Driver/flang/flang.f90
+++ clang/test/Driver/flang/flang.f90
@@ -22,10 +22,6 @@
! CHECK-E-DAG: "-E"
! CHECK-E-DAG: "-o" "-"
-! RUN: %clang --driver-mode=flang -### -emit-ast %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-AST %s
-! CHECK-EMIT-AST-DAG: "-emit-ast"
-! CHECK-EMIT-AST-DAG: "-o" "{{[^"]*}}.ast"
-
! RUN: %clang --driver-mode=flang -### -fsyntax-only %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-SYNTAX-ONLY %s
! CHECK-SYNTAX-ONLY-NOT: "-o"
! CHECK-SYNTAX-ONLY-DAG: "-fsyntax-only"
@@ -42,7 +38,7 @@
! CHECK-S-DAG: "-S"
! CHECK-S-DAG: "-o" "{{[^"]*}}.s"
-! RUN: %clang --driver-mode=flang -### -fintegrated-as %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-OBJ %s
+! RUN: %clang --driver-mode=flang -### %s 2>&1 | FileCheck --check-prefixes=ALL,CHECK-EMIT-OBJ %s
! CHECK-EMIT-OBJ-DAG: "-emit-obj"
! CHECK-EMIT-OBJ-DAG: "-o" "{{[^"]*}}.o"
Index: clang/lib/Driver/Driver.cpp
===================================================================
--- clang/lib/Driver/Driver.cpp
+++ clang/lib/Driver/Driver.cpp
@@ -6495,9 +6495,7 @@
if (IsDXCMode())
return llvm::opt::Visibility(options::DXCOption);
if (IsFlangMode()) {
- // TODO: Does flang really want *all* of the clang driver options?
- // We probably need to annotate more specifically.
- return llvm::opt::Visibility(options::ClangOption | options::FlangOption);
+ return llvm::opt::Visibility(options::FlangOption);
}
return llvm::opt::Visibility(options::ClangOption);
}
Index: clang/include/clang/Driver/Options.td
===================================================================
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -615,8 +615,8 @@
Flags<[NoXarchOption, HelpHidden]>;
def driver_mode : Joined<["--"], "driver-mode=">, Group<internal_driver_Group>,
Flags<[NoXarchOption, HelpHidden]>,
- Visibility<[ClangOption, CLOption, DXCOption]>,
- HelpText<"Set the driver mode to either 'gcc', 'g++', 'cpp', or 'cl'">;
+ Visibility<[ClangOption, FlangOption, CLOption, DXCOption]>,
+ HelpText<"Set the driver mode to either 'gcc', 'g++', 'cpp', 'cl' or 'flang'">;
def rsp_quoting : Joined<["--"], "rsp-quoting=">, Group<internal_driver_Group>,
Flags<[NoXarchOption, HelpHidden]>,
Visibility<[ClangOption, CLOption, DXCOption]>,
@@ -630,7 +630,9 @@
Visibility<[ClangOption, CLOption, DXCOption]>;
def ccc_install_dir : Separate<["-"], "ccc-install-dir">, InternalDebugOpt,
HelpText<"Simulate installation in the given directory">;
-def ccc_print_phases : Flag<["-"], "ccc-print-phases">, InternalDebugOpt,
+def ccc_print_phases : Flag<["-"], "ccc-print-phases">,
+ Flags<[NoXarchOption, HelpHidden]>, Visibility<[ClangOption, CLOption, DXCOption,
+ FlangOption]>,
HelpText<"Dump list of actions to perform">;
def ccc_print_bindings : Flag<["-"], "ccc-print-bindings">, InternalDebugOpt,
HelpText<"Show bindings of tools to actions">;
@@ -849,15 +851,15 @@
Normalizer<"makeFlagToValueNormalizer(DependencyOutputFormat::NMake)">;
def Mach : Flag<["-"], "Mach">, Group<Link_Group>;
def O0 : Flag<["-"], "O0">, Group<O_Group>, Flags<[HelpHidden]>,
- Visibility<[ClangOption, CC1Option, FC1Option]>;
+ Visibility<[ClangOption, CC1Option, FC1Option, FlangOption]>;
def O4 : Flag<["-"], "O4">, Group<O_Group>, Flags<[HelpHidden]>,
- Visibility<[ClangOption, CC1Option, FC1Option]>;
+ Visibility<[ClangOption, CC1Option, FC1Option, FlangOption]>;
def ObjCXX : Flag<["-"], "ObjC++">, Flags<[NoXarchOption]>,
HelpText<"Treat source input files as Objective-C++ inputs">;
def ObjC : Flag<["-"], "ObjC">, Flags<[NoXarchOption]>,
HelpText<"Treat source input files as Objective-C inputs">;
def O : Joined<["-"], "O">, Group<O_Group>,
- Visibility<[ClangOption, CC1Option, FC1Option]>;
+ Visibility<[ClangOption, CC1Option, FC1Option, FlangOption]>;
def O_flag : Flag<["-"], "O">, Visibility<[ClangOption, CC1Option, FC1Option]>,
Alias<O>, AliasArgs<["1"]>;
def Ofast : Joined<["-"], "Ofast">, Group<O_Group>,
@@ -893,7 +895,7 @@
HelpText<"Pass the comma separated arguments in <arg> to the assembler">,
MetaVarName<"<arg>">;
def Wall : Flag<["-"], "Wall">, Group<W_Group>, Flags<[HelpHidden]>,
- Visibility<[ClangOption, CC1Option]>;
+ Visibility<[ClangOption, CC1Option, FlangOption]>;
def WCL4 : Flag<["-"], "WCL4">, Group<W_Group>, Flags<[HelpHidden]>,
Visibility<[ClangOption, CC1Option]>;
def Wsystem_headers : Flag<["-"], "Wsystem-headers">, Group<W_Group>,
@@ -1095,12 +1097,14 @@
// Common offloading options
let Group = offload_Group in {
def offload_arch_EQ : Joined<["--"], "offload-arch=">, Flags<[NoXarchOption]>,
+ Visibility<[ClangOption, FlangOption]>,
HelpText<"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.">;
def no_offload_arch_EQ : Joined<["--"], "no-offload-arch=">,
Flags<[NoXarchOption]>,
+ Visibility<[ClangOption, FlangOption]>,
HelpText<"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.">;
@@ -1999,7 +2003,7 @@
PosFlag<SetTrue, [], [ClangOption, CC1Option, FC1Option, FlangOption],
"Allow aggressive, lossy floating-point optimizations",
[cl_fast_relaxed_math.KeyPath]>,
- NegFlag<SetFalse>>;
+ NegFlag<SetFalse, [], [ClangOption, CC1Option, FC1Option, FlangOption]>>;
defm math_errno : BoolFOption<"math-errno",
LangOpts<"MathErrno">, DefaultFalse,
PosFlag<SetTrue, [], [ClangOption, CC1Option],
@@ -2356,8 +2360,8 @@
ImpliedByAnyOf<[cl_unsafe_math_optimizations.KeyPath, ffast_math.KeyPath]>;
def fno_unsafe_math_optimizations : Flag<["-"], "fno-unsafe-math-optimizations">,
Group<f_Group>;
-def fassociative_math : Flag<["-"], "fassociative-math">, Group<f_Group>;
-def fno_associative_math : Flag<["-"], "fno-associative-math">, Group<f_Group>;
+def fassociative_math : Flag<["-"], "fassociative-math">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>;
+def fno_associative_math : Flag<["-"], "fno-associative-math">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>;
defm reciprocal_math : BoolFOption<"reciprocal-math",
LangOpts<"AllowRecip">, DefaultFalse,
PosFlag<SetTrue, [], [ClangOption, CC1Option, FC1Option, FlangOption],
@@ -2385,14 +2389,16 @@
[cl_no_signed_zeros.KeyPath, funsafe_math_optimizations.KeyPath]>,
PosFlag<SetFalse>>;
def fhonor_nans : Flag<["-"], "fhonor-nans">, Group<f_Group>,
+ Visibility<[ClangOption, FlangOption]>,
HelpText<"Specify that floating-point optimizations are not allowed that "
"assume arguments and results are not NANs.">;
-def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Group<f_Group>;
+def fno_honor_nans : Flag<["-"], "fno-honor-nans">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>;
def fhonor_infinities : Flag<["-"], "fhonor-infinities">,
- Group<f_Group>,
+ Group<f_Group>, Visibility<[ClangOption, FlangOption]>,
HelpText<"Specify that floating-point optimizations are not allowed that "
"assume arguments and results are not +-inf.">;
-def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">, Group<f_Group>;
+def fno_honor_infinities : Flag<["-"], "fno-honor-infinities">,
+ Visibility<[ClangOption, FlangOption]>, Group<f_Group>;
// This option was originally misspelt "infinites" [sic].
def : Flag<["-"], "fhonor-infinites">, Alias<fhonor_infinities>;
def : Flag<["-"], "fno-honor-infinites">, Alias<fno_honor_infinities>;
@@ -2682,9 +2688,9 @@
Visibility<[ClangOption, CLOption, CC1Option, FC1Option, FlangOption]>,
Group<f_Group>,
HelpText<"Set LTO mode">, Values<"thin,full">;
-def flto_EQ_jobserver : Flag<["-"], "flto=jobserver">, Group<f_Group>,
+def flto_EQ_jobserver : Flag<["-"], "flto=jobserver">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>,
Alias<flto_EQ>, AliasArgs<["full"]>, HelpText<"Enable LTO in 'full' mode">;
-def flto_EQ_auto : Flag<["-"], "flto=auto">, Group<f_Group>,
+def flto_EQ_auto : Flag<["-"], "flto=auto">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>,
Alias<flto_EQ>, AliasArgs<["full"]>, HelpText<"Enable LTO in 'full' mode">;
def flto : Flag<["-"], "flto">,
Visibility<[ClangOption, CLOption, CC1Option, FC1Option, FlangOption]>,
@@ -2696,7 +2702,7 @@
NegFlag<SetFalse, [], [ClangOption], "Use distinct LTO pipelines">,
BothFlags<[], [ClangOption, CC1Option], "">>;
def fno_lto : Flag<["-"], "fno-lto">,
- Visibility<[ClangOption, CLOption, CC1Option]>, Group<f_Group>,
+ Visibility<[ClangOption, CLOption, DXCOption, CC1Option, FlangOption]>, Group<f_Group>,
HelpText<"Disable LTO mode (default)">;
def foffload_lto_EQ : Joined<["-"], "foffload-lto=">,
Visibility<[ClangOption, CLOption]>, Group<f_Group>,
@@ -3207,7 +3213,7 @@
def fnoopenmp_use_tls : Flag<["-"], "fnoopenmp-use-tls">, Group<f_Group>,
Flags<[NoArgumentUnused, HelpHidden]>, Visibility<[ClangOption, CC1Option]>;
def fopenmp_targets_EQ : CommaJoined<["-"], "fopenmp-targets=">,
- Flags<[NoXarchOption]>, Visibility<[ClangOption, CC1Option]>,
+ Flags<[NoXarchOption]>, Visibility<[ClangOption, CC1Option, FlangOption]>,
HelpText<"Specify comma-separated list of triples OpenMP offloading targets to be supported">;
def fopenmp_relocatable_target : Flag<["-"], "fopenmp-relocatable-target">,
Group<f_Group>, Flags<[NoArgumentUnused, HelpHidden]>,
@@ -3239,7 +3245,7 @@
//===----------------------------------------------------------------------===//
let Flags = [NoArgumentUnused] in {
-let Visibility = [ClangOption, CC1Option, FC1Option] in {
+let Visibility = [ClangOption, CC1Option, FC1Option, FlangOption] in {
let Group = f_Group in {
def fopenmp_target_debug : Flag<["-"], "fopenmp-target-debug">,
@@ -3272,7 +3278,7 @@
} // let Visibility = [ClangOption, CC1Option, FC1Option, FlangOption]
let Flags = [NoArgumentUnused, HelpHidden] in {
-let Visibility = [ClangOption, CC1Option, FC1Option] in {
+let Visibility = [ClangOption, CC1Option, FC1Option, FlangOption] in {
let Group = f_Group in {
def fopenmp_target_debug_EQ : Joined<["-"], "fopenmp-target-debug=">;
@@ -3363,8 +3369,8 @@
def fpch_preprocess : Flag<["-"], "fpch-preprocess">, Group<f_Group>;
def fpic : Flag<["-"], "fpic">, Group<f_Group>;
def fno_pic : Flag<["-"], "fno-pic">, Group<f_Group>;
-def fpie : Flag<["-"], "fpie">, Group<f_Group>;
-def fno_pie : Flag<["-"], "fno-pie">, Group<f_Group>;
+def fpie : Flag<["-"], "fpie">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>;
+def fno_pie : Flag<["-"], "fno-pie">, Visibility<[ClangOption, FlangOption]>, Group<f_Group>;
defm pic_data_is_text_relative : SimpleMFlag<"pic-data-is-text-relative",
"Assume", "Don't assume", " data segments are relative to text segment">;
def fdirect_access_external_data : Flag<["-"], "fdirect-access-external-data">, Group<f_Group>,
@@ -3928,13 +3934,13 @@
Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
HelpText<"Emit debug line number tables only">;
def gline_directives_only : Flag<["-"], "gline-directives-only">, Group<gN_Group>,
- Visibility<[ClangOption, CLOption, DXCOption]>,
+ Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
HelpText<"Emit debug line info directives only">;
def gmlt : Flag<["-"], "gmlt">, Alias<gline_tables_only>;
-def g0 : Flag<["-"], "g0">, Group<gN_Group>;
-def g1 : Flag<["-"], "g1">, Group<gN_Group>, Alias<gline_tables_only>;
-def g2 : Flag<["-"], "g2">, Group<gN_Group>;
-def g3 : Flag<["-"], "g3">, Group<gN_Group>;
+def g0 : Flag<["-"], "g0">, Group<gN_Group>, Visibility<[ClangOption, FlangOption]>;
+def g1 : Flag<["-"], "g1">, Group<gN_Group>, Visibility<[ClangOption, FlangOption]>, Alias<gline_tables_only>;
+def g2 : Flag<["-"], "g2">, Group<gN_Group>, Visibility<[ClangOption, FlangOption]>;
+def g3 : Flag<["-"], "g3">, Group<gN_Group>, Visibility<[ClangOption, FlangOption]>;
def ggdb : Flag<["-"], "ggdb">, Group<gTune_Group>;
def ggdb0 : Flag<["-"], "ggdb0">, Group<ggdbN_Group>;
def ggdb1 : Flag<["-"], "ggdb1">, Group<ggdbN_Group>;
@@ -4217,7 +4223,7 @@
def mwatchsimulator_version_min_EQ : Joined<["-"], "mwatchsimulator-version-min=">, Alias<mwatchos_simulator_version_min_EQ>;
} // let Flags = [TargetSpecific]
def march_EQ : Joined<["-"], "march=">, Group<m_Group>,
- Flags<[TargetSpecific]>, Visibility<[ClangOption, CLOption]>,
+ Flags<[TargetSpecific]>, Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
HelpText<"For a list of available architectures for the target use '-mcpu=help'">;
def masm_EQ : Joined<["-"], "masm=">, Group<m_Group>, Flags<[NoXarchOption]>;
def inline_asm_EQ : Joined<["-"], "inline-asm=">, Group<m_Group>,
@@ -4246,8 +4252,6 @@
def mguard_EQ : Joined<["-"], "mguard=">, Group<m_Group>,
HelpText<"Enable or disable Control Flow Guard checks and guard tables emission">,
Values<"none,cf,cf-nochecks">;
-def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>,
- HelpText<"For a list of available CPUs for the target use '-mcpu=help'">;
def mmcu_EQ : Joined<["-"], "mmcu=">, Group<m_Group>;
def msim : Flag<["-"], "msim">, Group<m_Group>;
def mdynamic_no_pic : Joined<["-"], "mdynamic-no-pic">, Group<m_Group>;
@@ -5032,8 +5036,8 @@
def nofixprebinding : Flag<["-"], "nofixprebinding">;
def nolibc : Flag<["-"], "nolibc">;
def nomultidefs : Flag<["-"], "nomultidefs">;
-def nopie : Flag<["-"], "nopie">;
-def no_pie : Flag<["-"], "no-pie">, Alias<nopie>;
+def nopie : Flag<["-"], "nopie">, Visibility<[ClangOption, FlangOption]>;
+def no_pie : Flag<["-"], "no-pie">, Visibility<[ClangOption, FlangOption]>, Alias<nopie>;
def noprebind : Flag<["-"], "noprebind">;
def noprofilelib : Flag<["-"], "noprofilelib">;
def noseglinkedit : Flag<["-"], "noseglinkedit">;
@@ -5392,8 +5396,6 @@
def _for_linker : Separate<["--"], "for-linker">, Alias<Xlinker>;
def _force_link_EQ : Joined<["--"], "force-link=">, Alias<u>;
def _force_link : Separate<["--"], "force-link">, Alias<u>;
-def _help_hidden : Flag<["--"], "help-hidden">,
- HelpText<"Display help for hidden options">;
def _imacros_EQ : Joined<["--"], "imacros=">, Alias<imacros>;
def _include_barrier : Flag<["--"], "include-barrier">, Alias<I_>;
def _include_directory_after_EQ : Joined<["--"], "include-directory-after=">, Alias<idirafter>;
@@ -5449,8 +5451,6 @@
def _signed_char : Flag<["--"], "signed-char">, Alias<fsigned_char>;
def _std : Separate<["--"], "std">, Alias<std_EQ>;
def _stdlib : Separate<["--"], "stdlib">, Alias<stdlib_EQ>;
-def _sysroot_EQ : Joined<["--"], "sysroot=">;
-def _sysroot : Separate<["--"], "sysroot">, Alias<_sysroot_EQ>;
def _target_help : Flag<["--"], "target-help">;
def _trace_includes : Flag<["--"], "trace-includes">, Alias<H>;
def _undefine_macro_EQ : Joined<["--"], "undefine-macro=">, Alias<U>;
@@ -5463,6 +5463,24 @@
def _write_dependencies : Flag<["--"], "write-dependencies">, Alias<MD>;
def _write_user_dependencies : Flag<["--"], "write-user-dependencies">, Alias<MMD>;
+def _help_hidden : Flag<["--"], "help-hidden">,
+ Visibility<[ClangOption, FlangOption]>,
+ HelpText<"Display help for hidden options">;
+def _sysroot_EQ : Joined<["--"], "sysroot=">, Visibility<[ClangOption, FlangOption]>;
+def _sysroot : Separate<["--"], "sysroot">, Alias<_sysroot_EQ>;
+
+//===----------------------------------------------------------------------===//
+// Target Options (clang + flang-new)
+//===----------------------------------------------------------------------===//
+let Flags = [TargetSpecific] in {
+let Visibility = [ClangOption, FlangOption] in {
+
+def mcpu_EQ : Joined<["-"], "mcpu=">, Group<m_Group>,
+ HelpText<"For a list of available CPUs for the target use '-mcpu=help'">;
+
+} // let Vis = [Default, FlangOption]
+} // let Flags = [TargetSpecific]
+
// Hexagon feature flags.
let Flags = [TargetSpecific] in {
def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">,
@@ -5810,7 +5828,7 @@
// style of double-dash and equals-joined flags.
def target_legacy_spelling : Separate<["-"], "target">,
Alias<target>,
- Visibility<[ClangOption, CLOption, DXCOption]>;
+ Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>;
// Special internal option to handle -Xlinker --no-demangle.
def Z_Xlinker__no_demangle : Flag<["-"], "Z-Xlinker-no-demangle">,
@@ -5835,7 +5853,8 @@
}
multiclass FlangIgnoredDiagOpt<string name> {
- def unsupported_warning_w#NAME : Flag<["-", "--"], "W"#name>, Group<flang_ignored_w_Group>;
+ def unsupported_warning_w#NAME : Flag<["-", "--"], "W"#name>,
+ Visibility<[FlangOption]>, Group<flang_ignored_w_Group>;
}
defm : BooleanFFlag<"keep-inline-functions">, Group<clang_ignored_gcc_optimization_f_Group>;
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits