@@ -3348,10 +3348,17 @@ def fno_experimental_isel : Flag<["-"], "fno-experimental-isel">, Group<f_clang_
33483348def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>,
33493349 Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
33503350 HelpText<"Use the given vector functions library">,
3351+ #ifdef ENABLE_CLASSIC_FLANG
3352+ Values<"Accelerate,libmvec,MASSV,PGMATH,SVML,SLEEF,Darwin_libsystem_m,ArmPL,AMDLIBM,none">,
3353+ NormalizedValuesScope<"llvm::driver::VectorLibrary">,
3354+ NormalizedValues<["Accelerate", "LIBMVEC", "MASSV", "PGMATH", "SVML", "SLEEF",
3355+ "Darwin_libsystem_m", "ArmPL", "AMDLIBM", "NoLibrary"]>,
3356+ #else
33513357 Values<"Accelerate,libmvec,MASSV,SVML,SLEEF,Darwin_libsystem_m,ArmPL,AMDLIBM,none">,
33523358 NormalizedValuesScope<"llvm::driver::VectorLibrary">,
33533359 NormalizedValues<["Accelerate", "LIBMVEC", "MASSV", "SVML", "SLEEF",
33543360 "Darwin_libsystem_m", "ArmPL", "AMDLIBM", "NoLibrary"]>,
3361+ #endif
33553362 MarshallingInfoEnum<CodeGenOpts<"VecLib">, "NoLibrary">;
33563363def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>,
33573364 Alias<flax_vector_conversions_EQ>, AliasArgs<["none"]>;
@@ -6683,6 +6690,20 @@ def module_dir : JoinedOrSeparate<["-"], "module-dir">, MetaVarName<"<dir>">,
66836690It is also added to the list of directories to be searched by an USE statement.
66846691The default is the current directory.}]>;
66856692
6693+ #ifdef ENABLE_CLASSIC_FLANG
6694+ // Define a group for Fortran source format options.
6695+ def fortran_format_Group : OptionGroup<"Fortran format Group">, Group<gfortran_Group>;
6696+ def ffixed_form : Flag<["-"], "ffixed-form">, Group<fortran_format_Group>,
6697+ HelpText<"Process source files in fixed form">;
6698+ def fno_fixed_form : Flag<["-"], "fno-fixed-form">, Group<fortran_format_Group>,
6699+ HelpText<"Disable fixed-form format for Fortran">;
6700+ def ffree_form : Flag<["-"], "ffree-form">, Group<fortran_format_Group>,
6701+ HelpText<"Process source files in free form">;
6702+ def fno_free_form : Flag<["-"], "fno-free-form">, Group<fortran_format_Group>,
6703+ HelpText<"Disable free-form format for Fortran">;
6704+ def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<f_Group>,
6705+ HelpText<"Set line length in fixed-form format Fortran, current supporting only 72 and 132 characters">;
6706+ #else
66866707def ffixed_form : Flag<["-"], "ffixed-form">, Group<f_Group>,
66876708 HelpText<"Process source files in fixed form">;
66886709def ffree_form : Flag<["-"], "ffree-form">, Group<f_Group>,
@@ -6692,24 +6713,36 @@ def ffixed_line_length_EQ : Joined<["-"], "ffixed-line-length=">, Group<f_Group>
66926713 DocBrief<[{Set column after which characters are ignored in typical fixed-form lines in the source
66936714file}]>;
66946715def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<f_Group>, Alias<ffixed_line_length_EQ>;
6716+ #endif
66956717def fconvert_EQ : Joined<["-"], "fconvert=">, Group<f_Group>,
66966718 HelpText<"Set endian conversion of data for unformatted files">;
66976719def fdefault_double_8 : Flag<["-"],"fdefault-double-8">, Group<f_Group>,
66986720 HelpText<"Set the default double precision kind to an 8 byte wide type">;
6721+ #ifdef ENABLE_CLASSIC_FLANG
6722+ def fno_default_integer_8 : Flag<["-"], "fno-default-integer-8">, Group<f_Group>;
6723+ #endif
66996724def fdefault_integer_8 : Flag<["-"],"fdefault-integer-8">, Group<f_Group>,
67006725 HelpText<"Set the default integer and logical kind to an 8 byte wide type">;
67016726def fdefault_real_8 : Flag<["-"],"fdefault-real-8">, Group<f_Group>,
67026727 HelpText<"Set the default real kind to an 8 byte wide type">;
6728+ #ifdef ENABLE_CLASSIC_FLANG
6729+ def fno_default_real_8 : Flag<["-"], "fno-default-real-8">, Group<f_Group>;
6730+ #endif
67036731def flarge_sizes : Flag<["-"],"flarge-sizes">, Group<f_Group>,
67046732 HelpText<"Use INTEGER(KIND=8) for the result type in size-related intrinsics">;
6705-
67066733def falternative_parameter_statement : Flag<["-"], "falternative-parameter-statement">, Group<f_Group>,
67076734 HelpText<"Enable the old style PARAMETER statement">;
67086735def fintrinsic_modules_path : Separate<["-"], "fintrinsic-modules-path">, Group<f_Group>, MetaVarName<"<dir>">,
67096736 HelpText<"Specify where to find the compiled intrinsic modules">,
67106737 DocBrief<[{This option specifies the location of pre-compiled intrinsic modules,
67116738 if they are not in the default location expected by the compiler.}]>;
6712-
6739+ #ifdef ENABLE_CLASSIC_FLANG
6740+ def fbackslash : Flag<["-"], "fbackslash">, Group<gfortran_Group>,
6741+ HelpText<"Specify that backslash in string introduces an escape character">,
6742+ DocBrief<[{Change the interpretation of backslashes in string literals from
6743+ a single backslash character to "C-style" escape characters.}]>;
6744+ def fno_backslash : Flag<["-"], "fno-backslash">, Group<gfortran_Group>;
6745+ #else
67136746defm backslash : OptInFC1FFlag<"backslash", "Specify that backslash in string introduces an escape character">;
67146747defm xor_operator : OptInFC1FFlag<"xor-operator", "Enable .XOR. as a synonym of .NEQV.">;
67156748defm logical_abbreviations : OptInFC1FFlag<"logical-abbreviations", "Enable logical abbreviations">;
@@ -6721,6 +6754,7 @@ defm ppc_native_vec_elem_order: BoolOptionWithoutMarshalling<"f", "ppc-native-ve
67216754
67226755def fno_automatic : Flag<["-"], "fno-automatic">, Group<f_Group>,
67236756 HelpText<"Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE">;
6757+ #endif
67246758
67256759defm stack_arrays : BoolOptionWithoutMarshalling<"f", "stack-arrays",
67266760 PosFlag<SetTrue, [], [ClangOption], "Attempt to allocate array temporaries on the stack, no matter their size">,
@@ -6733,10 +6767,16 @@ def fhermetic_module_files : Flag<["-"], "fhermetic-module-files">, Group<f_Grou
67336767 HelpText<"Emit hermetic module files (no nested USE association)">;
67346768} // let Visibility = [FC1Option, FlangOption]
67356769
6770+ #ifdef ENABLE_CLASSIC_FLANG
6771+ def J : JoinedOrSeparate<["-"], "J">,
6772+ Flags<[RenderJoined]>,
6773+ Group<gfortran_Group>;
6774+ #else
67366775def J : JoinedOrSeparate<["-"], "J">,
67376776 Flags<[RenderJoined]>, Visibility<[FlangOption, FC1Option]>,
67386777 Group<gfortran_Group>,
67396778 Alias<module_dir>;
6779+ #endif
67406780
67416781//===----------------------------------------------------------------------===//
67426782// FC1 Options
@@ -8819,6 +8859,145 @@ def fcgl : DXCFlag<"fcgl">, Alias<emit_pristine_llvm>;
88198859def enable_16bit_types : DXCFlag<"enable-16bit-types">, Alias<fnative_half_type>,
88208860 HelpText<"Enable 16-bit types and disable min precision types."
88218861 "Available in HLSL 2018 and shader model 6.2.">;
8862+
8863+ #ifdef ENABLE_CLASSIC_FLANG
8864+ // gfortran options that we recognize in the driver and pass along when
8865+ // invoking GCC to compile Fortran code.
8866+ def flang_rt_Group : OptionGroup<"Flang runtime library Group">;
8867+ def pgi_fortran_Group : OptionGroup<"PGI Fortran compatibility Group">,
8868+ Flags<[HelpHidden]>;
8869+
8870+ // Classic Flang-specific options
8871+ multiclass BooleanKFlag<string name> {
8872+ def _on : Flag<["-"], "K"#name>;
8873+ def _off : Flag<["-"], "Kno"#name>;
8874+ }
8875+
8876+ multiclass BooleanMFlag<string name> {
8877+ def _on : Flag<["-"], "M"#name>;
8878+ def _off : Flag<["-"], "Mno"#name>;
8879+ }
8880+
8881+ def Mfixed : Flag<["-"], "Mfixed">, Group<fortran_format_Group>,
8882+ HelpText<"Force fixed-form format Fortran">,
8883+ Flags<[HelpHidden]>;
8884+ def Mfree_on: Flag<["-"], "Mfree">, Group<fortran_format_Group>,
8885+ HelpText<"Enable free-form format for Fortran">,
8886+ Flags<[HelpHidden]>;
8887+ def Mfree_off: Flag<["-"], "Mnofree">, Group<fortran_format_Group>,
8888+ HelpText<"Disable free-form format for Fortran">,
8889+ Flags<[HelpHidden]>;
8890+ def Mfreeform_on: Flag<["-"], "Mfreeform">, Group<fortran_format_Group>,
8891+ HelpText<"Enable free-form format for Fortran">,
8892+ Flags<[HelpHidden]>;
8893+ def Mfreeform_off: Flag<["-"], "Mnofreeform">, Group<fortran_format_Group>,
8894+ HelpText<"Disable free-form format for Fortran">,
8895+ Flags<[HelpHidden]>;
8896+
8897+ def Minfo_EQ : CommaJoined<["-"], "Minfo=">,
8898+ HelpText<"Diagnostic information about successful optimizations">,
8899+ Values<"all,vect,inline">;
8900+ def Minfoall : Flag<["-"], "Minfo">,
8901+ HelpText<"Diagnostic information about all successful optimizations">;
8902+ def Mneginfo_EQ : CommaJoined<["-"], "Mneginfo=">,
8903+ HelpText<"Diagnostic information about missed optimizations">,
8904+ Values<"all,vect,inline">;
8905+ def Mneginfoall : Flag<["-"], "Mneginfo">,
8906+ HelpText<"Diagnostic information about all missed optimizations">;
8907+
8908+ def Mipa: Joined<["-"], "Mipa">, Group<pgi_fortran_Group>;
8909+ def Mstackarrays: Joined<["-"], "Mstack_arrays">, Group<pgi_fortran_Group>;
8910+ def pc: JoinedOrSeparate<["-"], "pc">, Group<pgi_fortran_Group>;
8911+ def Mfprelaxed: Joined<["-"], "Mfprelaxed">, Group<pgi_fortran_Group>;
8912+ def Mnofprelaxed: Joined<["-"], "Mnofprelaxed">, Group<pgi_fortran_Group>;
8913+ defm Mstride0: BooleanMFlag<"stride0">, Group<pgi_fortran_Group>;
8914+ defm Mrecursive: BooleanMFlag<"recursive">, Group<pgi_fortran_Group>;
8915+ defm Mreentrant: BooleanMFlag<"reentrant">, Group<pgi_fortran_Group>;
8916+ defm Mbounds: BooleanMFlag<"bounds">, Group<pgi_fortran_Group>;
8917+ def Mdaz_on: Flag<["-"], "Mdaz">, Group<pgi_fortran_Group>,
8918+ HelpText<"Treat denormalized numbers as zero">;
8919+ def Mdaz_off: Flag<["-"], "Mnodaz">, Group<pgi_fortran_Group>,
8920+ HelpText<"Disable treating denormalized numbers as zero">;
8921+ def Kieee_on : Flag<["-"], "Kieee">, Group<pgi_fortran_Group>,
8922+ HelpText<"Enable IEEE division">;
8923+ def Kieee_off : Flag<["-"], "Knoieee">, Group<pgi_fortran_Group>,
8924+ HelpText<"Disable IEEE division">;
8925+ def Mextend : Flag<["-"], "Mextend">, Group<pgi_fortran_Group>,
8926+ HelpText<"Allow lines up to 132 characters in Fortran sources">;
8927+ def Mpreprocess : Flag<["-"], "Mpreprocess">, Group<pgi_fortran_Group>,
8928+ HelpText<"Preprocess Fortran files">;
8929+ def Mstandard: Flag<["-"], "Mstandard">, Group<pgi_fortran_Group>,
8930+ HelpText<"Check Fortran standard conformance">;
8931+ def Mchkptr: Flag<["-"], "Mchkptr">, Group<pgi_fortran_Group>;
8932+ def Mwritable_constants: Flag<["-"], "Mwritable-constants">, Group<pgi_fortran_Group>,
8933+ HelpText<"Store constants in the writable data segment">;
8934+ defm Minline: BooleanMFlag<"inline">, Group<pgi_fortran_Group>;
8935+ def fma: Flag<["-"], "fma">, Group<pgi_fortran_Group>,
8936+ HelpText<"Enable generation of FMA instructions">;
8937+ def nofma: Flag<["-"], "nofma">, Group<pgi_fortran_Group>,
8938+ HelpText<"Disable generation of FMA instructions">;
8939+ defm Mfma: BooleanMFlag<"fma">, Group<pgi_fortran_Group>,
8940+ HelpText<"Enable generation of FMA instructions">;
8941+ def mp: Flag<["-"], "mp">, Group<pgi_fortran_Group>,
8942+ HelpText<"Enable OpenMP">;
8943+ def nomp: Flag<["-"], "nomp">, Group<pgi_fortran_Group>,
8944+ HelpText<"Do not link with OpenMP library libomp">;
8945+ def Mflushz_on: Flag<["-"], "Mflushz">, Group<pgi_fortran_Group>,
8946+ HelpText<"Set SSE to flush-to-zero mode">;
8947+ def Mflushz_off: Flag<["-"], "Mnoflushz">, Group<pgi_fortran_Group>,
8948+ HelpText<"Disabling setting SSE to flush-to-zero mode">;
8949+ def Msave_on: Flag<["-"], "Msave">, Group<pgi_fortran_Group>,
8950+ HelpText<"Assume all Fortran variables have SAVE attribute">;
8951+ def Msave_off: Flag<["-"], "Mnosave">, Group<pgi_fortran_Group>,
8952+ HelpText<"Assume no Fortran variables have SAVE attribute">;
8953+ def Mcache_align_on: Flag<["-"], "Mcache_align">, Group<pgi_fortran_Group>,
8954+ HelpText<"Align large objects on cache-line boundaries">;
8955+ def Mcache_align_off: Flag<["-"], "Mnocache_align">, Group<pgi_fortran_Group>,
8956+ HelpText<"Disable aligning large objects on cache-line boundaries">;
8957+ def ModuleDir : Separate<["-"], "module">, Group<pgi_fortran_Group>,
8958+ HelpText<"Fortran module path">;
8959+ def Minform_EQ : Joined<["-"], "Minform=">,
8960+ HelpText<"Set error level of messages to display">;
8961+ def Mallocatable_EQ : Joined<["-"], "Mallocatable=">,
8962+ HelpText<"Select semantics for assignments to allocatables (F03 or F95)">;
8963+ def Mbyteswapio: Flag<["-"], "Mbyteswapio">, Group<pgi_fortran_Group>,
8964+ HelpText<"Swap byte-order for unformatted input/output">;
8965+ def byteswapio: Flag<["-"], "byteswapio">, Group<gfortran_Group>,
8966+ HelpText<"Swap byte-order for unformatted input/output">;
8967+ def Mbackslash: Flag<["-"], "Mbackslash">, Group<pgi_fortran_Group>,
8968+ HelpText<"Treat backslash like any other character in character strings">;
8969+ def Mnobackslash: Flag<["-"], "Mnobackslash">, Group<pgi_fortran_Group>,
8970+ HelpText<"Treat backslash as C-style escape character">;
8971+ def staticFlangLibs: Flag<["-"], "static-flang-libs">, Group<flang_rt_Group>,
8972+ HelpText<"Link using static Flang libraries">;
8973+ def noFlangLibs: Flag<["-"], "no-flang-libs">, Group<flang_rt_Group>,
8974+ HelpText<"Do not link against Flang libraries">;
8975+ def r8: Flag<["-"], "r8">, Group<pgi_fortran_Group>,
8976+ HelpText<"Treat REAL as REAL*8">;
8977+ def i8: Flag<["-"], "i8">, Group<pgi_fortran_Group>,
8978+ HelpText<"Treat INTEGER and LOGICAL as INTEGER*8 and LOGICAL*8">;
8979+ def Mnomain: Flag<["-"], "Mnomain">, Group<pgi_fortran_Group>,
8980+ HelpText<"Don't link in Fortran main">;
8981+ def frelaxed_math : Flag<["-"], "frelaxed-math">, Group<pgi_fortran_Group>,
8982+ HelpText<"Use relaxed Math intrinsic functions">;
8983+ def Memit_dwarf_common_blocks_name: Flag<["-"], "Memit-dwarf-common-blocks-name">,
8984+ Group<pgi_fortran_Group>, HelpText<"Emit COMMON blocks name in DWARF">;
8985+ def Munixlogical: Flag<["-"], "Munixlogical">, Group<pgi_fortran_Group>,
8986+ HelpText<"Use unixlogical for all loigical operations">;
8987+
8988+ // Flang internal debug options
8989+ def Mx_EQ : Joined<["-"], "Mx,">, Group<pgi_fortran_Group>;
8990+ def My_EQ : Joined<["-"], "My,">, Group<pgi_fortran_Group>;
8991+ def Hx_EQ : Joined<["-"], "Hx,">, Group<pgi_fortran_Group>;
8992+ def Hy_EQ : Joined<["-"], "Hy,">, Group<pgi_fortran_Group>;
8993+ def Wm_EQ : Joined<["-"], "Wm,">, Group<pgi_fortran_Group>;
8994+
8995+ def Mq_EQ : Joined<["-"], "Mq,">, Group<pgi_fortran_Group>;
8996+ def Hq_EQ : Joined<["-"], "Hq,">, Group<pgi_fortran_Group>;
8997+ def Mqq_EQ : Joined<["-"], "Mqq,">, Group<pgi_fortran_Group>;
8998+ def Hqq_EQ : Joined<["-"], "Hqq,">, Group<pgi_fortran_Group>;
8999+ def Wh_EQ : Joined<["-"], "Wh,">, Group<pgi_fortran_Group>;
9000+ #endif
88229001def hlsl_entrypoint : Option<["-"], "hlsl-entry", KIND_SEPARATE>,
88239002 Group<dxc_Group>,
88249003 Visibility<[ClangOption, CC1Option]>,
0 commit comments