Author: Andrzej Warzynski
Date: 2023-08-17T19:12:12Z
New Revision: 83a06997c69a17def2f58fd556c094b8f1060b89

URL: 
https://github.com/llvm/llvm-project/commit/83a06997c69a17def2f58fd556c094b8f1060b89
DIFF: 
https://github.com/llvm/llvm-project/commit/83a06997c69a17def2f58fd556c094b8f1060b89.diff

LOG: [flang][driver] Update the visibility of Clang options in Flang

Prior to D157151, there was no mechanism to "disable" unsupported Clang
options in Flang. While the "help" text (`flang-new -help`) was indeed
configured not to display such options, the Flang compiler driver would
happily consume such options and only issue a warning when there was no
logic to parse it:
```
flang-new -fno-experimental-relative-c++-abi-vtables file.f90
flang-new: warning: argument unused during compilation: 
'-fno-experimental-relative-c++-abi-vtables'
```

D157151 introduces visibility flags. In particular, all Clang options
gain a visibility flag (`ClangOption`) that can be excluded when in
Flang driver mode. This way the above invocation will lead to:

```
flang-new: error: unknown argument 
'-fno-experimental-relative-c++-abi-vtables'; did you mean '-Xclang 
-fno-experimental-relative-c++-abi-vtables'?
```

This won't work unless all options/flags supported by Flang have their
visibility flags updated accordingly, hence the changes in Options.td.
Moving forward, this change will allow Flang better control over the
supported options.

Depends on D157151

Differential Revision: https://reviews.llvm.org/D157837

Added: 
    

Modified: 
    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

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index 85ce340255d99a..0ef80dafd0586b 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -615,8 +615,8 @@ class InternalDriverOpt : Group<internal_driver_Group>,
   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 @@ class InternalDebugOpt : Group<internal_debug_Group>,
   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 @@ def MV : Flag<["-"], "MV">, Group<M_Group>, 
Visibility<[ClangOption, CC1Option]>
     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 @@ def Wa_COMMA : CommaJoined<["-"], "Wa,">,
   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 @@ defm convergent_functions : 
BoolFOption<"convergent-functions",
 // 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 @@ defm fast_math : BoolFOption<"fast-math",
   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 @@ def funsafe_math_optimizations : Flag<["-"], 
"funsafe-math-optimizations">,
   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 @@ defm signed_zeros : BoolFOption<"signed-zeros",
             [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 @@ def flto_EQ : Joined<["-"], "flto=">,
   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 @@ defm unified_lto : BoolFOption<"unified-lto",
   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 fopenmp_use_tls : Flag<["-"], "fopenmp-use-tls">, 
Group<f_Group>,
 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 @@ def fopenmp_cuda_teams_reduction_recs_num_EQ : 
Joined<["-"], "fopenmp-cuda-teams
 
//===----------------------------------------------------------------------===//
 
 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 @@ def R_Joined : Joined<["-"], "R">, Group<R_Group>,
 } // 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 fpcc_struct_return : Flag<["-"], 
"fpcc-struct-return">, Group<f_Group>,
 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 @@ def gline_tables_only : Flag<["-"], 
"gline-tables-only">, Group<gN_Group>,
   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 mwatchos_simulator_version_min_EQ : Joined<["-"], 
"mwatchos-simulator-versio
 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 mthreads : Joined<["-"], "mthreads">, Group<m_Group>;
 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 nodriverkitlib : Flag<["-"], "nodriverkitlib">;
 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_EQ : Joined<["--"], "for-linker=">, 
Alias<Xlinker>;
 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 _version : Flag<["--"], "version">,
 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 _warn_ : Joined<["--"], "warn-">, Alias<W_Joined>;
 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 @@ def mno_vzeroupper : Flag<["-"], "mno-vzeroupper">, 
Group<m_x86_Features_Group>;
 // 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 BooleanFFlag<string name> {
 }
 
 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>;

diff  --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index ede9967d8cef26..adaad6760534e3 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -6495,9 +6495,7 @@ Driver::getOptionVisibilityMask(bool UseDriverMode) const 
{
   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);
 }

diff  --git a/clang/test/Driver/flang/flang.f90 
b/clang/test/Driver/flang/flang.f90
index ae8f644f986c7a..ad4a3a3b6bd44d 100644
--- a/clang/test/Driver/flang/flang.f90
+++ b/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"
 

diff  --git a/clang/test/Driver/flang/flang_ucase.F90 
b/clang/test/Driver/flang/flang_ucase.F90
index 9bb9e3c806fd51..e89c053b327bc9 100644
--- a/clang/test/Driver/flang/flang_ucase.F90
+++ b/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"
 

diff  --git a/flang/test/Driver/driver-help-hidden.f90 
b/flang/test/Driver/driver-help-hidden.f90
index 2c70b870ef0a45..5f5e47dfdb7549 100644
--- a/flang/test/Driver/driver-help-hidden.f90
+++ b/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'?
 

diff  --git a/flang/test/Driver/driver-help.f90 
b/flang/test/Driver/driver-help.f90
index dc9db6be89fe55..60e5d65db836d4 100644
--- a/flang/test/Driver/driver-help.f90
+++ b/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'

diff  --git a/flang/test/Driver/fast_math.f90 b/flang/test/Driver/fast_math.f90
index aadd7231b52b53..47175488b98bcc 100644
--- a/flang/test/Driver/fast_math.f90
+++ b/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}}


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to