Skip to content

Commit c1e312b

Browse files
committed
[Driver] Make supported Clang options visible to Classic Flang
Classic Flang accepts some Clang options that LLVM Flang (F18) does not. The Visibility of such options are modified to include "FlangOption".
1 parent 046d9fc commit c1e312b

File tree

1 file changed

+90
-36
lines changed

1 file changed

+90
-36
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 90 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,11 @@ def ccc_gcc_name : Separate<["-"], "ccc-gcc-name">, InternalDriverOpt,
683683

684684
class InternalDebugOpt : Group<internal_debug_Group>,
685685
Flags<[NoXarchOption, HelpHidden]>,
686+
#ifdef ENABLE_CLASSIC_FLANG
687+
Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>;
688+
#else
686689
Visibility<[ClangOption, CLOption, DXCOption]>;
690+
#endif
687691
def ccc_install_dir : Separate<["-"], "ccc-install-dir">, InternalDebugOpt,
688692
HelpText<"Simulate installation in the given directory">;
689693
def ccc_print_phases : Flag<["-"], "ccc-print-phases">,
@@ -816,6 +820,9 @@ def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>,
816820
def A : JoinedOrSeparate<["-"], "A">, Flags<[RenderJoined]>,
817821
Group<gfortran_Group>;
818822
def B : JoinedOrSeparate<["-"], "B">, MetaVarName<"<prefix>">,
823+
#ifdef ENABLE_CLASSIC_FLANG
824+
Visibility<[ClangOption, FlangOption]>,
825+
#endif
819826
HelpText<"Search $prefix$file for executables, libraries, and data files. "
820827
"If $prefix is a directory, search $prefix/$file">;
821828
def gcc_install_dir_EQ : Joined<["--"], "gcc-install-dir=">,
@@ -1527,6 +1534,7 @@ def emit_ast : Flag<["-"], "emit-ast">,
15271534
HelpText<"Emit Clang AST files for source inputs">;
15281535
#ifdef ENABLE_CLASSIC_FLANG
15291536
def emit_flang_llvm : Flag<["-"], "emit-flang-llvm">,
1537+
Visibility<[FlangOption]>,
15301538
HelpText<"Emit Flang LLVM files for source inputs">;
15311539
#endif
15321540
def emit_llvm : Flag<["-"], "emit-llvm">,
@@ -3520,6 +3528,9 @@ def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>,
35203528
Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
35213529
HelpText<"Parse OpenMP pragmas and generate parallel code.">;
35223530
def fno_openmp : Flag<["-"], "fno-openmp">, Group<f_Group>,
3531+
#ifdef ENABLE_CLASSIC_FLANG
3532+
Visibility<[ClangOption, FlangOption]>,
3533+
#endif
35233534
Flags<[NoArgumentUnused]>;
35243535
class OpenMPVersionHelp<string program, string default> {
35253536
string str = !strconcat(
@@ -3659,6 +3670,9 @@ defm openmp_optimistic_collapse : BoolFOption<"openmp-optimistic-collapse",
36593670
PosFlag<SetTrue, [], [ClangOption, CC1Option]>,
36603671
NegFlag<SetFalse>, BothFlags<[NoArgumentUnused, HelpHidden], []>>;
36613672
def static_openmp: Flag<["-"], "static-openmp">,
3673+
#ifdef ENABLE_CLASSIC_FLANG
3674+
Visibility<[ClangOption, FlangOption]>,
3675+
#endif
36623676
HelpText<"Use the static host OpenMP runtime while linking.">;
36633677
def fopenmp_new_driver : Flag<["-"], "fopenmp-new-driver">, Flags<[HelpHidden]>,
36643678
HelpText<"Use the new driver for OpenMP offloading.">;
@@ -4371,15 +4385,31 @@ def gdbx : Flag<["-"], "gdbx">, Group<gTune_Group>;
43714385
// Equivalent to our default dwarf version. Forces usual dwarf emission when
43724386
// CodeView is enabled.
43734387
def gdwarf : Flag<["-"], "gdwarf">, Group<g_Group>,
4388+
#ifdef ENABLE_CLASSIC_FLANG
4389+
Visibility<[ClangOption, CLOption, DXCOption, FlangOption]>,
4390+
#else
43744391
Visibility<[ClangOption, CLOption, DXCOption]>,
4392+
#endif
43754393
HelpText<"Generate source-level debug information with the default dwarf version">;
43764394
def gdwarf_2 : Flag<["-"], "gdwarf-2">, Group<g_Group>,
4395+
#ifdef ENABLE_CLASSIC_FLANG
4396+
Visibility<[ClangOption, FlangOption]>,
4397+
#endif
43774398
HelpText<"Generate source-level debug information with dwarf version 2">;
43784399
def gdwarf_3 : Flag<["-"], "gdwarf-3">, Group<g_Group>,
4400+
#ifdef ENABLE_CLASSIC_FLANG
4401+
Visibility<[ClangOption, FlangOption]>,
4402+
#endif
43794403
HelpText<"Generate source-level debug information with dwarf version 3">;
43804404
def gdwarf_4 : Flag<["-"], "gdwarf-4">, Group<g_Group>,
4405+
#ifdef ENABLE_CLASSIC_FLANG
4406+
Visibility<[ClangOption, FlangOption]>,
4407+
#endif
43814408
HelpText<"Generate source-level debug information with dwarf version 4">;
43824409
def gdwarf_5 : Flag<["-"], "gdwarf-5">, Group<g_Group>,
4410+
#ifdef ENABLE_CLASSIC_FLANG
4411+
Visibility<[ClangOption, FlangOption]>,
4412+
#endif
43834413
HelpText<"Generate source-level debug information with dwarf version 5">;
43844414
def gdwarf64 : Flag<["-"], "gdwarf64">, Group<g_Group>,
43854415
Visibility<[ClangOption, CC1Option, CC1AsOption]>,
@@ -4465,9 +4495,16 @@ def gno_simple_template_names : Flag<["-"], "gno-simple-template-names">,
44654495
def ggnu_pubnames : Flag<["-"], "ggnu-pubnames">, Group<g_flags_Group>,
44664496
Visibility<[ClangOption, CC1Option]>;
44674497
def gno_gnu_pubnames : Flag<["-"], "gno-gnu-pubnames">, Group<g_flags_Group>;
4498+
#ifdef ENABLE_CLASSIC_FLANG
4499+
def gpubnames : Flag<["-"], "gpubnames">, Group<g_flags_Group>,
4500+
Visibility<[ClangOption, CC1Option, FlangOption]>;
4501+
def gno_pubnames : Flag<["-"], "gno-pubnames">, Group<g_flags_Group>,
4502+
Visibility<[ClangOption, CC1Option, FlangOption]>;
4503+
#else
44684504
def gpubnames : Flag<["-"], "gpubnames">, Group<g_flags_Group>,
44694505
Visibility<[ClangOption, CC1Option]>;
44704506
def gno_pubnames : Flag<["-"], "gno-pubnames">, Group<g_flags_Group>;
4507+
#endif
44714508
def gdwarf_aranges : Flag<["-"], "gdwarf-aranges">, Group<g_flags_Group>;
44724509
def gmodules : Flag <["-"], "gmodules">, Group<gN_Group>,
44734510
HelpText<"Generate debug info with external references to clang modules"
@@ -5542,7 +5579,12 @@ def nostdincxx : Flag<["-"], "nostdinc++">, Visibility<[ClangOption, CC1Option]>
55425579
Group<IncludePath_Group>,
55435580
HelpText<"Disable standard #include directories for the C++ standard library">,
55445581
MarshallingInfoNegativeFlag<HeaderSearchOpts<"UseStandardCXXIncludes">>;
5582+
#ifdef ENABLE_CLASSIC_FLANG
5583+
def nostdlib : Flag<["-"], "nostdlib">, Group<Link_Group>,
5584+
Visibility<[ClangOption, FlangOption]>;
5585+
#else
55455586
def nostdlib : Flag<["-"], "nostdlib">, Group<Link_Group>;
5587+
#endif
55465588
def nostdlibxx : Flag<["-"], "nostdlib++">;
55475589
def object : Flag<["-"], "object">;
55485590
def o : JoinedOrSeparate<["-"], "o">,
@@ -5793,7 +5835,11 @@ def : Flag<["-"], "mtune=help">, Alias<print_supported_cpus>;
57935835
def time : Flag<["-"], "time">,
57945836
HelpText<"Time individual commands">;
57955837
def traditional_cpp : Flag<["-", "--"], "traditional-cpp">,
5838+
#ifdef ENABLE_CLASSIC_FLANG
5839+
Visibility<[ClangOption, CC1Option, FlangOption]>,
5840+
#else
57965841
Visibility<[ClangOption, CC1Option]>,
5842+
#endif
57975843
HelpText<"Enable some traditional CPP emulation">,
57985844
MarshallingInfoFlag<LangOpts<"TraditionalCPP">>;
57995845
def traditional : Flag<["-", "--"], "traditional">;
@@ -5870,7 +5916,12 @@ def fno_integrated_objemitter : Flag<["-"], "fno-integrated-objemitter">,
58705916
Group<f_Group>,
58715917
HelpText<"Use external machine object code emitter.">;
58725918

5919+
#ifdef ENABLE_CLASSIC_FLANG
5920+
def : Flag<["-"], "integrated-as">, Alias<fintegrated_as>,
5921+
Visibility<[ClangOption, CC1Option, FlangOption]>;
5922+
#else
58735923
def : Flag<["-"], "integrated-as">, Alias<fintegrated_as>;
5924+
#endif
58745925
def : Flag<["-"], "no-integrated-as">, Alias<fno_integrated_as>,
58755926
Visibility<[ClangOption, CC1Option, FlangOption]>;
58765927

@@ -6778,7 +6829,7 @@ def fhermetic_module_files : Flag<["-"], "fhermetic-module-files">, Group<f_Grou
67786829

67796830
#ifdef ENABLE_CLASSIC_FLANG
67806831
def J : JoinedOrSeparate<["-"], "J">,
6781-
Flags<[RenderJoined]>,
6832+
Flags<[RenderJoined]>, Visibility<[FlangOption, FC1Option]>,
67826833
Group<gfortran_Group>;
67836834

67846835
let Visibility = [FlangOption] in {
@@ -8874,7 +8925,40 @@ def fcgl : DXCFlag<"fcgl">, Alias<emit_pristine_llvm>;
88748925
def enable_16bit_types : DXCFlag<"enable-16bit-types">, Alias<fnative_half_type>,
88758926
HelpText<"Enable 16-bit types and disable min precision types."
88768927
"Available in HLSL 2018 and shader model 6.2.">;
8877-
8928+
def hlsl_entrypoint : Option<["-"], "hlsl-entry", KIND_SEPARATE>,
8929+
Group<dxc_Group>,
8930+
Visibility<[ClangOption, CC1Option]>,
8931+
MarshallingInfoString<TargetOpts<"HLSLEntry">, "\"main\"">,
8932+
HelpText<"Entry point name for hlsl">;
8933+
def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>,
8934+
Group<dxc_Group>,
8935+
Visibility<[DXCOption]>,
8936+
HelpText<"Entry point name">;
8937+
def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>,
8938+
Group<dxc_Group>,
8939+
Visibility<[DXCOption]>,
8940+
HelpText<"HLSL Version">,
8941+
Values<"2016, 2017, 2018, 2021, 202x">;
8942+
def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group<dxc_Group>,
8943+
HelpText<"DXIL validator installation path">;
8944+
def dxc_disable_validation : DXCFlag<"Vd">,
8945+
HelpText<"Disable validation">;
8946+
def : Option<["/", "-"], "Qembed_debug", KIND_FLAG>, Group<dxc_Group>,
8947+
Flags<[Ignored]>, Visibility<[DXCOption]>,
8948+
HelpText<"Embed PDB in shader container (ignored)">;
8949+
def spirv : DXCFlag<"spirv">,
8950+
HelpText<"Generate SPIR-V code">;
8951+
def fspv_target_env_EQ : Joined<["-"], "fspv-target-env=">, Group<dxc_Group>,
8952+
HelpText<"Specify the target environment">,
8953+
Values<"vulkan1.2, vulkan1.3">;
8954+
def no_wasm_opt : Flag<["--"], "no-wasm-opt">,
8955+
Group<m_Group>,
8956+
HelpText<"Disable the wasm-opt optimizer">,
8957+
MarshallingInfoFlag<LangOpts<"NoWasmOpt">>;
8958+
def wasm_opt : Flag<["--"], "wasm-opt">,
8959+
Group<m_Group>,
8960+
HelpText<"Enable the wasm-opt optimizer (default)">,
8961+
MarshallingInfoNegativeFlag<LangOpts<"NoWasmOpt">>;
88788962
#ifdef ENABLE_CLASSIC_FLANG
88798963
// Classic Flang options that we recognize in the driver and pass along when
88808964
// invoking flang1/flang2 to compile Fortran code.
@@ -8893,6 +8977,8 @@ multiclass BooleanMFlag<string name> {
88938977
def _off : Flag<["-"], "Mno"#name>;
88948978
}
88958979

8980+
let Visibility = [FlangOption] in {
8981+
88968982
def Mfixed : Flag<["-"], "Mfixed">, Group<fortran_format_Group>,
88978983
HelpText<"Force fixed-form format Fortran">,
88988984
Flags<[HelpHidden]>;
@@ -9012,38 +9098,6 @@ def Hq_EQ : Joined<["-"], "Hq,">, Group<pgi_fortran_Group>;
90129098
def Mqq_EQ : Joined<["-"], "Mqq,">, Group<pgi_fortran_Group>;
90139099
def Hqq_EQ : Joined<["-"], "Hqq,">, Group<pgi_fortran_Group>;
90149100
def Wh_EQ : Joined<["-"], "Wh,">, Group<pgi_fortran_Group>;
9101+
9102+
} // let Visibility = [FlangOption]
90159103
#endif
9016-
def hlsl_entrypoint : Option<["-"], "hlsl-entry", KIND_SEPARATE>,
9017-
Group<dxc_Group>,
9018-
Visibility<[ClangOption, CC1Option]>,
9019-
MarshallingInfoString<TargetOpts<"HLSLEntry">, "\"main\"">,
9020-
HelpText<"Entry point name for hlsl">;
9021-
def dxc_entrypoint : Option<["--", "/", "-"], "E", KIND_JOINED_OR_SEPARATE>,
9022-
Group<dxc_Group>,
9023-
Visibility<[DXCOption]>,
9024-
HelpText<"Entry point name">;
9025-
def dxc_hlsl_version : Option<["/", "-"], "HV", KIND_JOINED_OR_SEPARATE>,
9026-
Group<dxc_Group>,
9027-
Visibility<[DXCOption]>,
9028-
HelpText<"HLSL Version">,
9029-
Values<"2016, 2017, 2018, 2021, 202x">;
9030-
def dxc_validator_path_EQ : Joined<["--"], "dxv-path=">, Group<dxc_Group>,
9031-
HelpText<"DXIL validator installation path">;
9032-
def dxc_disable_validation : DXCFlag<"Vd">,
9033-
HelpText<"Disable validation">;
9034-
def : Option<["/", "-"], "Qembed_debug", KIND_FLAG>, Group<dxc_Group>,
9035-
Flags<[Ignored]>, Visibility<[DXCOption]>,
9036-
HelpText<"Embed PDB in shader container (ignored)">;
9037-
def spirv : DXCFlag<"spirv">,
9038-
HelpText<"Generate SPIR-V code">;
9039-
def fspv_target_env_EQ : Joined<["-"], "fspv-target-env=">, Group<dxc_Group>,
9040-
HelpText<"Specify the target environment">,
9041-
Values<"vulkan1.2, vulkan1.3">;
9042-
def no_wasm_opt : Flag<["--"], "no-wasm-opt">,
9043-
Group<m_Group>,
9044-
HelpText<"Disable the wasm-opt optimizer">,
9045-
MarshallingInfoFlag<LangOpts<"NoWasmOpt">>;
9046-
def wasm_opt : Flag<["--"], "wasm-opt">,
9047-
Group<m_Group>,
9048-
HelpText<"Enable the wasm-opt optimizer (default)">,
9049-
MarshallingInfoNegativeFlag<LangOpts<"NoWasmOpt">>;

0 commit comments

Comments
 (0)