@@ -3459,10 +3459,17 @@ def fveclib : Joined<["-"], "fveclib=">, Group<f_Group>,
34593459 HelpTextForVariants<[ClangOption, CC1Option],
34603460 "Use the given vector functions library. "
34613461 "Note: -fveclib={ArmPL,SLEEF} implies -fno-math-errno">,
3462+ #ifdef ENABLE_CLASSIC_FLANG
3463+ Values<"Accelerate,libmvec,MASSV,PGMATH,SVML,SLEEF,Darwin_libsystem_m,ArmPL,AMDLIBM,none">,
3464+ NormalizedValuesScope<"llvm::driver::VectorLibrary">,
3465+ NormalizedValues<["Accelerate", "LIBMVEC", "MASSV", "PGMATH", "SVML", "SLEEF",
3466+ "Darwin_libsystem_m", "ArmPL", "AMDLIBM", "NoLibrary"]>,
3467+ #else
34623468 Values<"Accelerate,libmvec,MASSV,SVML,SLEEF,Darwin_libsystem_m,ArmPL,AMDLIBM,none">,
34633469 NormalizedValuesScope<"llvm::driver::VectorLibrary">,
34643470 NormalizedValues<["Accelerate", "LIBMVEC", "MASSV", "SVML", "SLEEF",
34653471 "Darwin_libsystem_m", "ArmPL", "AMDLIBM", "NoLibrary"]>,
3472+ #endif
34663473 MarshallingInfoEnum<CodeGenOpts<"VecLib">, "NoLibrary">;
34673474def fno_lax_vector_conversions : Flag<["-"], "fno-lax-vector-conversions">, Group<f_Group>,
34683475 Alias<flax_vector_conversions_EQ>, AliasArgs<["none"]>;
@@ -6937,6 +6944,20 @@ def module_dir : JoinedOrSeparate<["-"], "module-dir">, MetaVarName<"<dir>">,
69376944It is also added to the list of directories to be searched by an USE statement.
69386945The default is the current directory.}]>;
69396946
6947+ #ifdef ENABLE_CLASSIC_FLANG
6948+ // Define a group for Fortran source format options.
6949+ def fortran_format_Group : OptionGroup<"Fortran format Group">, Group<gfortran_Group>;
6950+ def ffixed_form : Flag<["-"], "ffixed-form">, Group<fortran_format_Group>,
6951+ HelpText<"Process source files in fixed form">;
6952+ def fno_fixed_form : Flag<["-"], "fno-fixed-form">, Group<fortran_format_Group>,
6953+ HelpText<"Disable fixed-form format for Fortran">;
6954+ def ffree_form : Flag<["-"], "ffree-form">, Group<fortran_format_Group>,
6955+ HelpText<"Process source files in free form">;
6956+ def fno_free_form : Flag<["-"], "fno-free-form">, Group<fortran_format_Group>,
6957+ HelpText<"Disable free-form format for Fortran">;
6958+ def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<f_Group>,
6959+ HelpText<"Set line length in fixed-form format Fortran, current supporting only 72 and 132 characters">;
6960+ #else
69406961def ffixed_form : Flag<["-"], "ffixed-form">, Group<f_Group>,
69416962 HelpText<"Process source files in fixed form">;
69426963def ffree_form : Flag<["-"], "ffree-form">, Group<f_Group>,
@@ -6946,14 +6967,21 @@ def ffixed_line_length_EQ : Joined<["-"], "ffixed-line-length=">, Group<f_Group>
69466967 DocBrief<[{Set column after which characters are ignored in typical fixed-form lines in the source
69476968file}]>;
69486969def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<f_Group>, Alias<ffixed_line_length_EQ>;
6970+ #endif
69496971def fconvert_EQ : Joined<["-"], "fconvert=">, Group<f_Group>,
69506972 HelpText<"Set endian conversion of data for unformatted files">;
69516973def fdefault_double_8 : Flag<["-"],"fdefault-double-8">, Group<f_Group>,
69526974 HelpText<"Set the default double precision kind to an 8 byte wide type">;
6975+ #ifdef ENABLE_CLASSIC_FLANG
6976+ def fno_default_integer_8 : Flag<["-"], "fno-default-integer-8">, Group<f_Group>;
6977+ #endif
69536978def fdefault_integer_8 : Flag<["-"],"fdefault-integer-8">, Group<f_Group>,
69546979 HelpText<"Set the default integer and logical kind to an 8 byte wide type">;
69556980def fdefault_real_8 : Flag<["-"],"fdefault-real-8">, Group<f_Group>,
69566981 HelpText<"Set the default real kind to an 8 byte wide type">;
6982+ #ifdef ENABLE_CLASSIC_FLANG
6983+ def fno_default_real_8 : Flag<["-"], "fno-default-real-8">, Group<f_Group>;
6984+ #endif
69576985def fdisable_real_3 : Flag<["-"],"fdisable-real-3">, Group<f_Group>,
69586986 HelpText<"Disable real(KIND=3) from TargetCharacteristics">, Flags<[HelpHidden]>;
69596987def fdisable_real_10 : Flag<["-"],"fdisable-real-10">, Group<f_Group>,
@@ -6972,6 +7000,13 @@ def fintrinsic_modules_path : Separate<["-"], "fintrinsic-modules-path">, Group
69727000 DocBrief<[{This option specifies the location of pre-compiled intrinsic modules,
69737001 if they are not in the default location expected by the compiler.}]>;
69747002
7003+ #ifdef ENABLE_CLASSIC_FLANG
7004+ def fbackslash : Flag<["-"], "fbackslash">, Group<gfortran_Group>,
7005+ HelpText<"Specify that backslash in string introduces an escape character">,
7006+ DocBrief<[{Change the interpretation of backslashes in string literals from
7007+ a single backslash character to "C-style" escape characters.}]>;
7008+ def fno_backslash : Flag<["-"], "fno-backslash">, Group<gfortran_Group>;
7009+ #else
69757010defm backslash : OptInFC1FFlag<"backslash", "Specify that backslash in string introduces an escape character">;
69767011defm xor_operator : OptInFC1FFlag<"xor-operator", "Enable .XOR. as a synonym of .NEQV.">;
69777012defm logical_abbreviations : OptInFC1FFlag<"logical-abbreviations", "Enable logical abbreviations">;
@@ -6984,6 +7019,7 @@ defm unsigned : OptInFC1FFlag<"unsigned", "Enables UNSIGNED type">;
69847019
69857020def fno_automatic : Flag<["-"], "fno-automatic">, Group<f_Group>,
69867021 HelpText<"Implies the SAVE attribute for non-automatic local objects in subprograms unless RECURSIVE">;
7022+ #endif
69877023
69887024defm save_main_program : BoolOptionWithoutMarshalling<"f", "save-main-program",
69897025 PosFlag<SetTrue, [], [],
@@ -7002,10 +7038,16 @@ def fhermetic_module_files : Flag<["-"], "fhermetic-module-files">, Group<f_Grou
70027038 HelpText<"Emit hermetic module files (no nested USE association)">;
70037039} // let Visibility = [FC1Option, FlangOption]
70047040
7041+ #ifdef ENABLE_CLASSIC_FLANG
7042+ def J : JoinedOrSeparate<["-"], "J">,
7043+ Flags<[RenderJoined]>,
7044+ Group<gfortran_Group>;
7045+ #else
70057046def J : JoinedOrSeparate<["-"], "J">,
70067047 Flags<[RenderJoined]>, Visibility<[FlangOption, FC1Option]>,
70077048 Group<gfortran_Group>,
70087049 Alias<module_dir>;
7050+ #endif
70097051
70107052//===----------------------------------------------------------------------===//
70117053// FC1 Options
@@ -9136,3 +9178,142 @@ def wasm_opt : Flag<["--"], "wasm-opt">,
91369178 Group<m_Group>,
91379179 HelpText<"Enable the wasm-opt optimizer (default)">,
91389180 MarshallingInfoNegativeFlag<LangOpts<"NoWasmOpt">>;
9181+
9182+ #ifdef ENABLE_CLASSIC_FLANG
9183+ // gfortran options that we recognize in the driver and pass along when
9184+ // invoking GCC to compile Fortran code.
9185+ def flang_rt_Group : OptionGroup<"Flang runtime library Group">;
9186+ def pgi_fortran_Group : OptionGroup<"PGI Fortran compatibility Group">,
9187+ Flags<[HelpHidden]>;
9188+
9189+ // Classic Flang-specific options
9190+ multiclass BooleanKFlag<string name> {
9191+ def _on : Flag<["-"], "K"#name>;
9192+ def _off : Flag<["-"], "Kno"#name>;
9193+ }
9194+
9195+ multiclass BooleanMFlag<string name> {
9196+ def _on : Flag<["-"], "M"#name>;
9197+ def _off : Flag<["-"], "Mno"#name>;
9198+ }
9199+
9200+ def Mfixed : Flag<["-"], "Mfixed">, Group<fortran_format_Group>,
9201+ HelpText<"Force fixed-form format Fortran">,
9202+ Flags<[HelpHidden]>;
9203+ def Mfree_on: Flag<["-"], "Mfree">, Group<fortran_format_Group>,
9204+ HelpText<"Enable free-form format for Fortran">,
9205+ Flags<[HelpHidden]>;
9206+ def Mfree_off: Flag<["-"], "Mnofree">, Group<fortran_format_Group>,
9207+ HelpText<"Disable free-form format for Fortran">,
9208+ Flags<[HelpHidden]>;
9209+ def Mfreeform_on: Flag<["-"], "Mfreeform">, Group<fortran_format_Group>,
9210+ HelpText<"Enable free-form format for Fortran">,
9211+ Flags<[HelpHidden]>;
9212+ def Mfreeform_off: Flag<["-"], "Mnofreeform">, Group<fortran_format_Group>,
9213+ HelpText<"Disable free-form format for Fortran">,
9214+ Flags<[HelpHidden]>;
9215+
9216+ def Minfo_EQ : CommaJoined<["-"], "Minfo=">,
9217+ HelpText<"Diagnostic information about successful optimizations">,
9218+ Values<"all,vect,inline">;
9219+ def Minfoall : Flag<["-"], "Minfo">,
9220+ HelpText<"Diagnostic information about all successful optimizations">;
9221+ def Mneginfo_EQ : CommaJoined<["-"], "Mneginfo=">,
9222+ HelpText<"Diagnostic information about missed optimizations">,
9223+ Values<"all,vect,inline">;
9224+ def Mneginfoall : Flag<["-"], "Mneginfo">,
9225+ HelpText<"Diagnostic information about all missed optimizations">;
9226+
9227+ def Mipa: Joined<["-"], "Mipa">, Group<pgi_fortran_Group>;
9228+ def Mstackarrays: Joined<["-"], "Mstack_arrays">, Group<pgi_fortran_Group>;
9229+ def pc: JoinedOrSeparate<["-"], "pc">, Group<pgi_fortran_Group>;
9230+ def Mfprelaxed: Joined<["-"], "Mfprelaxed">, Group<pgi_fortran_Group>;
9231+ def Mnofprelaxed: Joined<["-"], "Mnofprelaxed">, Group<pgi_fortran_Group>;
9232+ defm Mstride0: BooleanMFlag<"stride0">, Group<pgi_fortran_Group>;
9233+ defm Mrecursive: BooleanMFlag<"recursive">, Group<pgi_fortran_Group>;
9234+ defm Mreentrant: BooleanMFlag<"reentrant">, Group<pgi_fortran_Group>;
9235+ defm Mbounds: BooleanMFlag<"bounds">, Group<pgi_fortran_Group>;
9236+ def Mdaz_on: Flag<["-"], "Mdaz">, Group<pgi_fortran_Group>,
9237+ HelpText<"Treat denormalized numbers as zero">;
9238+ def Mdaz_off: Flag<["-"], "Mnodaz">, Group<pgi_fortran_Group>,
9239+ HelpText<"Disable treating denormalized numbers as zero">;
9240+ def Kieee_on : Flag<["-"], "Kieee">, Group<pgi_fortran_Group>,
9241+ HelpText<"Enable IEEE division">;
9242+ def Kieee_off : Flag<["-"], "Knoieee">, Group<pgi_fortran_Group>,
9243+ HelpText<"Disable IEEE division">;
9244+ def Mextend : Flag<["-"], "Mextend">, Group<pgi_fortran_Group>,
9245+ HelpText<"Allow lines up to 132 characters in Fortran sources">;
9246+ def Mpreprocess : Flag<["-"], "Mpreprocess">, Group<pgi_fortran_Group>,
9247+ HelpText<"Preprocess Fortran files">;
9248+ def Mstandard: Flag<["-"], "Mstandard">, Group<pgi_fortran_Group>,
9249+ HelpText<"Check Fortran standard conformance">;
9250+ def Mchkptr: Flag<["-"], "Mchkptr">, Group<pgi_fortran_Group>;
9251+ def Mwritable_constants: Flag<["-"], "Mwritable-constants">, Group<pgi_fortran_Group>,
9252+ HelpText<"Store constants in the writable data segment">;
9253+ defm Minline: BooleanMFlag<"inline">, Group<pgi_fortran_Group>;
9254+ def fma: Flag<["-"], "fma">, Group<pgi_fortran_Group>,
9255+ HelpText<"Enable generation of FMA instructions">;
9256+ def nofma: Flag<["-"], "nofma">, Group<pgi_fortran_Group>,
9257+ HelpText<"Disable generation of FMA instructions">;
9258+ defm Mfma: BooleanMFlag<"fma">, Group<pgi_fortran_Group>,
9259+ HelpText<"Enable generation of FMA instructions">;
9260+ def mp: Flag<["-"], "mp">, Group<pgi_fortran_Group>,
9261+ HelpText<"Enable OpenMP">;
9262+ def nomp: Flag<["-"], "nomp">, Group<pgi_fortran_Group>,
9263+ HelpText<"Do not link with OpenMP library libomp">;
9264+ def Mflushz_on: Flag<["-"], "Mflushz">, Group<pgi_fortran_Group>,
9265+ HelpText<"Set SSE to flush-to-zero mode">;
9266+ def Mflushz_off: Flag<["-"], "Mnoflushz">, Group<pgi_fortran_Group>,
9267+ HelpText<"Disabling setting SSE to flush-to-zero mode">;
9268+ def Msave_on: Flag<["-"], "Msave">, Group<pgi_fortran_Group>,
9269+ HelpText<"Assume all Fortran variables have SAVE attribute">;
9270+ def Msave_off: Flag<["-"], "Mnosave">, Group<pgi_fortran_Group>,
9271+ HelpText<"Assume no Fortran variables have SAVE attribute">;
9272+ def Mcache_align_on: Flag<["-"], "Mcache_align">, Group<pgi_fortran_Group>,
9273+ HelpText<"Align large objects on cache-line boundaries">;
9274+ def Mcache_align_off: Flag<["-"], "Mnocache_align">, Group<pgi_fortran_Group>,
9275+ HelpText<"Disable aligning large objects on cache-line boundaries">;
9276+ def ModuleDir : Separate<["-"], "module">, Group<pgi_fortran_Group>,
9277+ HelpText<"Fortran module path">;
9278+ def Minform_EQ : Joined<["-"], "Minform=">,
9279+ HelpText<"Set error level of messages to display">;
9280+ def Mallocatable_EQ : Joined<["-"], "Mallocatable=">,
9281+ HelpText<"Select semantics for assignments to allocatables (F03 or F95)">;
9282+ def Mbyteswapio: Flag<["-"], "Mbyteswapio">, Group<pgi_fortran_Group>,
9283+ HelpText<"Swap byte-order for unformatted input/output">;
9284+ def byteswapio: Flag<["-"], "byteswapio">, Group<gfortran_Group>,
9285+ HelpText<"Swap byte-order for unformatted input/output">;
9286+ def Mbackslash: Flag<["-"], "Mbackslash">, Group<pgi_fortran_Group>,
9287+ HelpText<"Treat backslash like any other character in character strings">;
9288+ def Mnobackslash: Flag<["-"], "Mnobackslash">, Group<pgi_fortran_Group>,
9289+ HelpText<"Treat backslash as C-style escape character">;
9290+ def staticFlangLibs: Flag<["-"], "static-flang-libs">, Group<flang_rt_Group>,
9291+ HelpText<"Link using static Flang libraries">;
9292+ def noFlangLibs: Flag<["-"], "no-flang-libs">, Group<flang_rt_Group>,
9293+ HelpText<"Do not link against Flang libraries">;
9294+ def r8: Flag<["-"], "r8">, Group<pgi_fortran_Group>,
9295+ HelpText<"Treat REAL as REAL*8">;
9296+ def i8: Flag<["-"], "i8">, Group<pgi_fortran_Group>,
9297+ HelpText<"Treat INTEGER and LOGICAL as INTEGER*8 and LOGICAL*8">;
9298+ def Mnomain: Flag<["-"], "Mnomain">, Group<pgi_fortran_Group>,
9299+ HelpText<"Don't link in Fortran main">;
9300+ def frelaxed_math : Flag<["-"], "frelaxed-math">, Group<pgi_fortran_Group>,
9301+ HelpText<"Use relaxed Math intrinsic functions">;
9302+ def Memit_dwarf_common_blocks_name: Flag<["-"], "Memit-dwarf-common-blocks-name">,
9303+ Group<pgi_fortran_Group>, HelpText<"Emit COMMON blocks name in DWARF">;
9304+ def Munixlogical: Flag<["-"], "Munixlogical">, Group<pgi_fortran_Group>,
9305+ HelpText<"Use unixlogical for all loigical operations">;
9306+
9307+ // Flang internal debug options
9308+ def Mx_EQ : Joined<["-"], "Mx,">, Group<pgi_fortran_Group>;
9309+ def My_EQ : Joined<["-"], "My,">, Group<pgi_fortran_Group>;
9310+ def Hx_EQ : Joined<["-"], "Hx,">, Group<pgi_fortran_Group>;
9311+ def Hy_EQ : Joined<["-"], "Hy,">, Group<pgi_fortran_Group>;
9312+ def Wm_EQ : Joined<["-"], "Wm,">, Group<pgi_fortran_Group>;
9313+
9314+ def Mq_EQ : Joined<["-"], "Mq,">, Group<pgi_fortran_Group>;
9315+ def Hq_EQ : Joined<["-"], "Hq,">, Group<pgi_fortran_Group>;
9316+ def Mqq_EQ : Joined<["-"], "Mqq,">, Group<pgi_fortran_Group>;
9317+ def Hqq_EQ : Joined<["-"], "Hqq,">, Group<pgi_fortran_Group>;
9318+ def Wh_EQ : Joined<["-"], "Wh,">, Group<pgi_fortran_Group>;
9319+ #endif
0 commit comments