@@ -2325,6 +2325,9 @@ defm devirtualize_speculatively : BooleanFFlag<"devirtualize-speculatively">,
23252325// gfortran options that we recognize in the driver and pass along when
23262326// invoking GCC to compile Fortran code.
23272327def gfortran_Group : OptionGroup<"gfortran Group">;
2328+ def flang_rt_Group : OptionGroup<"Flang runtime library Group">;
2329+ def pgi_fortran_Group : OptionGroup<"PGI Fortran compatibility Group">,
2330+ Flags<[HelpHidden]>;
23282331
23292332// Generic gfortran options.
23302333def A_DASH : Joined<["-"], "A-">, Group<gfortran_Group>;
@@ -2340,7 +2343,8 @@ def fblas_matmul_limit_EQ : Joined<["-"], "fblas-matmul-limit=">, Group<gfortran
23402343def fcheck_EQ : Joined<["-"], "fcheck=">, Group<gfortran_Group>;
23412344def fcoarray_EQ : Joined<["-"], "fcoarray=">, Group<gfortran_Group>;
23422345def fconvert_EQ : Joined<["-"], "fconvert=">, Group<gfortran_Group>;
2343- def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<gfortran_Group>;
2346+ def ffixed_line_length_VALUE : Joined<["-"], "ffixed-line-length-">, Group<gfortran_Group>,
2347+ HelpText<"Set line length in fixed-form format Fortran, current supporting only 72 and 132 characters">;
23442348def ffpe_trap_EQ : Joined<["-"], "ffpe-trap=">, Group<gfortran_Group>;
23452349def ffree_line_length_VALUE : Joined<["-"], "ffree-line-length-">, Group<gfortran_Group>;
23462350def finit_character_EQ : Joined<["-"], "finit-character=">, Group<gfortran_Group>;
@@ -2353,6 +2357,8 @@ def fmax_stack_var_size_EQ : Joined<["-"], "fmax-stack-var-size=">, Group<gfortr
23532357def fmax_subrecord_length_EQ : Joined<["-"], "fmax-subrecord-length=">, Group<gfortran_Group>;
23542358def frecord_marker_EQ : Joined<["-"], "frecord-marker=">, Group<gfortran_Group>;
23552359
2360+ // Define a group for Fortran source format
2361+ def fortran_format_Group : OptionGroup<"Fortran format Group">, Group<gfortran_Group>;
23562362// "f" flags for gfortran.
23572363defm aggressive_function_elimination : BooleanFFlag<"aggressive-function-elimination">, Group<gfortran_Group>;
23582364defm align_commons : BooleanFFlag<"align-commons">, Group<gfortran_Group>;
@@ -2369,19 +2375,27 @@ defm cray_pointer : BooleanFFlag<"cray-pointer">, Group<gfortran_Group>;
23692375defm d_lines_as_code : BooleanFFlag<"d-lines-as-code">, Group<gfortran_Group>;
23702376defm d_lines_as_comments : BooleanFFlag<"d-lines-as-comments">, Group<gfortran_Group>;
23712377defm default_double_8 : BooleanFFlag<"default-double-8">, Group<gfortran_Group>;
2372- defm default_integer_8 : BooleanFFlag<"default -integer-8">, Group<gfortran_Group>,
2378+ def default_integer_8_f : Flag<["-"], "fdefault -integer-8">, Group<gfortran_Group>,
23732379 HelpText<"Treat INTEGER and LOGICAL as INTEGER*8 and LOGICAL*8">;
2374- defm default_real_8 : BooleanFFlag<"default-real-8">, Group<gfortran_Group>,
2380+ def default_integer_8_fno : Flag<["-"], "fno-default-integer-8">, Group<gfortran_Group>;
2381+ def default_real_8_f : Flag<["-"], "fdefault-real-8">, Group<gfortran_Group>,
23752382 HelpText<"Treat REAL as REAL*8">;
2383+ def default_real_8_fno : Flag<["-"], "fno-default-real-8">, Group<gfortran_Group>;
23762384defm dollar_ok : BooleanFFlag<"dollar-ok">, Group<gfortran_Group>;
23772385defm dump_fortran_optimized : BooleanFFlag<"dump-fortran-optimized">, Group<gfortran_Group>;
23782386defm dump_fortran_original : BooleanFFlag<"dump-fortran-original">, Group<gfortran_Group>;
23792387defm dump_parse_tree : BooleanFFlag<"dump-parse-tree">, Group<gfortran_Group>;
23802388defm external_blas : BooleanFFlag<"external-blas">, Group<gfortran_Group>;
23812389defm f2c : BooleanFFlag<"f2c">, Group<gfortran_Group>;
2382- defm fixed_form : BooleanFFlag<"fixed-form">, Group<gfortran_Group>;
2383- defm free_form : BooleanFFlag<"free-form">, Group<gfortran_Group>;
2384- defm frontend_optimize : BooleanFFlag<"frontend-optimize">, Group<gfortran_Group>;
2390+ def fixed_form_on : Flag<["-"], "ffixed-form">, Group<fortran_format_Group>,
2391+ HelpText<"Enable fixed-form format for Fortran">;
2392+ def fixed_form_off : Flag<["-"], "fno-fixed-form">, Group<fortran_format_Group>,
2393+ HelpText<"Disable fixed-form format for Fortran">;
2394+ def free_form_on : Flag<["-"], "ffree-form">, Group<fortran_format_Group>,
2395+ HelpText<"Enable free-form format for Fortran">;
2396+ def free_form_off : Flag<["-"], "fno-free-form">, Group<fortran_format_Group>,
2397+ HelpText<"Disable free-form format for Fortran">;
2398+ defm frontend_optimize : BooleanFFlag<"frontend-optimize">, Group<fortran_format_Group>;
23852399defm implicit_none : BooleanFFlag<"implicit-none">, Group<gfortran_Group>;
23862400defm init_local_zero : BooleanFFlag<"init-local-zero">, Group<gfortran_Group>;
23872401defm integer_4_integer_8 : BooleanFFlag<"integer-4-integer-8">, Group<gfortran_Group>;
@@ -2417,94 +2431,108 @@ multiclass BooleanMFlag<string name> {
24172431 def _off : Flag<["-"], "Mno"#name>;
24182432}
24192433
2420- // Define a group for Fortran source format
2421- def fortran_format_Group : OptionGroup<"Fortran format Group">, Group<gfortran_Group>;
24222434def Mfixed : Flag<["-"], "Mfixed">, Group<fortran_format_Group>,
2423- HelpText<"Force fixed-form format Fortran">;
2424- defm Mfree: BooleanMFlag<"free">, Group<fortran_format_Group>,
2425- HelpText<"Enable or disable free-form format for Fortran">;
2426- defm Mfreeform: BooleanMFlag<"freeform">, Group<fortran_format_Group>,
2427- HelpText<"Enable or disable free-form format for Fortran">;
2428-
2429- def Mipa: Joined<["-"], "Mipa">, Group<gfortran_Group>;
2430- def Mstackarrays: Joined<["-"], "Mstack_arrays">, Group<gfortran_Group>;
2431- def pc: JoinedOrSeparate<["-"], "pc">, Group<gfortran_Group>;
2432- def Mfprelaxed: Joined<["-"], "Mfprelaxed">, Group<gfortran_Group>;
2433- def Mnofprelaxed: Joined<["-"], "Mnofprelaxed">, Group<gfortran_Group>;
2434- defm Mstride0: BooleanMFlag<"stride0">, Group<gfortran_Group>;
2435- defm Mrecursive: BooleanMFlag<"recursive">, Group<gfortran_Group>;
2436- defm Mreentrant: BooleanMFlag<"reentrant">, Group<gfortran_Group>;
2437- defm Mbounds: BooleanMFlag<"bounds">, Group<gfortran_Group>;
2438- defm Mdaz: BooleanMFlag<"daz">, Group<gfortran_Group>,
2435+ HelpText<"Force fixed-form format Fortran">,
2436+ Flags<[HelpHidden]>;
2437+ def Mfree_on: Flag<["-"], "Mfree">, Group<fortran_format_Group>,
2438+ HelpText<"Enable free-form format for Fortran">,
2439+ Flags<[HelpHidden]>;
2440+ def Mfree_off: Flag<["-"], "Mnofree">, Group<fortran_format_Group>,
2441+ HelpText<"Disable free-form format for Fortran">,
2442+ Flags<[HelpHidden]>;
2443+ def Mfreeform_on: Flag<["-"], "Mfreeform">, Group<fortran_format_Group>,
2444+ HelpText<"Enable free-form format for Fortran">,
2445+ Flags<[HelpHidden]>;
2446+ def Mfreeform_off: Flag<["-"], "Mnofreeform">, Group<fortran_format_Group>,
2447+ HelpText<"Disable free-form format for Fortran">,
2448+ Flags<[HelpHidden]>;
2449+
2450+ def Mipa: Joined<["-"], "Mipa">, Group<pgi_fortran_Group>;
2451+ def Mstackarrays: Joined<["-"], "Mstack_arrays">, Group<pgi_fortran_Group>;
2452+ def pc: JoinedOrSeparate<["-"], "pc">, Group<pgi_fortran_Group>;
2453+ def Mfprelaxed: Joined<["-"], "Mfprelaxed">, Group<pgi_fortran_Group>;
2454+ def Mnofprelaxed: Joined<["-"], "Mnofprelaxed">, Group<pgi_fortran_Group>;
2455+ defm Mstride0: BooleanMFlag<"stride0">, Group<pgi_fortran_Group>;
2456+ defm Mrecursive: BooleanMFlag<"recursive">, Group<pgi_fortran_Group>;
2457+ defm Mreentrant: BooleanMFlag<"reentrant">, Group<pgi_fortran_Group>;
2458+ defm Mbounds: BooleanMFlag<"bounds">, Group<pgi_fortran_Group>;
2459+ def Mdaz_on: Flag<["-"], "Mdaz">, Group<pgi_fortran_Group>,
24392460 HelpText<"Treat denormalized numbers as zero">;
2440- defm Kieee : BooleanKFlag<"ieee">, Group<gfortran_Group>,
2441- HelpText<"Enable or disable IEEE division">;
2442- def Mextend : Flag<["-"], "Mextend">, Group<gfortran_Group>,
2461+ def Mdaz_off: Flag<["-"], "Mnodaz">, Group<pgi_fortran_Group>,
2462+ HelpText<"Disable treating denormalized numbers as zero">;
2463+ def Kieee_on : Flag<["-"], "Kieee">, Group<pgi_fortran_Group>,
2464+ HelpText<"Enable IEEE division">;
2465+ def Kieee_off : Flag<["-"], "Knoieee">, Group<pgi_fortran_Group>,
2466+ HelpText<"Disable IEEE division">;
2467+ def Mextend : Flag<["-"], "Mextend">, Group<pgi_fortran_Group>,
24432468 HelpText<"Allow lines up to 132 characters in Fortran sources">;
2444- def Mpreprocess : Flag<["-"], "Mpreprocess">, Group<gfortran_Group >,
2469+ def Mpreprocess : Flag<["-"], "Mpreprocess">, Group<pgi_fortran_Group >,
24452470 HelpText<"Preprocess Fortran files">;
2446- def Mstandard: Flag<["-"], "Mstandard">, Group<gfortran_Group >,
2471+ def Mstandard: Flag<["-"], "Mstandard">, Group<pgi_fortran_Group >,
24472472 HelpText<"Check Fortran standard conformance">;
2448- def Mchkptr: Flag<["-"], "Mchkptr">, Group<gfortran_Group >;
2449- def Minline: Flag<["-"], "Minline" >, Group<gfortran_Group >;
2450- def fma: Flag<["-"], "fma">, Group<gfortran_Group >,
2473+ def Mchkptr: Flag<["-"], "Mchkptr">, Group<pgi_fortran_Group >;
2474+ defm Minline: BooleanMFlag<"inline" >, Group<pgi_fortran_Group >;
2475+ def fma: Flag<["-"], "fma">, Group<pgi_fortran_Group >,
24512476 HelpText<"Enable generation of FMA instructions">;
2452- def nofma: Flag<["-"], "nofma">, Group<gfortran_Group >,
2477+ def nofma: Flag<["-"], "nofma">, Group<pgi_fortran_Group >,
24532478 HelpText<"Disable generation of FMA instructions">;
2454- defm Mfma: BooleanMFlag<"fma">, Group<gfortran_Group >,
2479+ defm Mfma: BooleanMFlag<"fma">, Group<pgi_fortran_Group >,
24552480 HelpText<"Enable generation of FMA instructions">;
2456- def mp: Flag<["-"], "mp">, Group<gfortran_Group >,
2481+ def mp: Flag<["-"], "mp">, Group<pgi_fortran_Group >,
24572482 HelpText<"Enable OpenMP">;
2458- def nomp: Flag<["-"], "nomp">, Group<gfortran_Group >,
2483+ def nomp: Flag<["-"], "nomp">, Group<pgi_fortran_Group >,
24592484 HelpText<"Do not link with OpenMP library libomp">;
2460- def pgf90libs: Flag<["-"], "pgf90libs">, Group<gfortran_Group>;
2461- defm Mflushz: BooleanMFlag<"flushz">, Group<gfortran_Group>,
2485+ def Mflushz_on: Flag<["-"], "Mflushz">, Group<pgi_fortran_Group>,
24622486 HelpText<"Set SSE to flush-to-zero mode">;
2463- defm Msave: BooleanMFlag<"save">, Group<gfortran_Group>,
2487+ def Mflushz_off: Flag<["-"], "Mnoflushz">, Group<pgi_fortran_Group>,
2488+ HelpText<"Disabling setting SSE to flush-to-zero mode">;
2489+ def Msave_on: Flag<["-"], "Msave">, Group<pgi_fortran_Group>,
24642490 HelpText<"Assume all Fortran variables have SAVE attribute">;
2465- defm Mcache_align: BooleanMFlag<"cache_align">, Group<gfortran_Group>,
2491+ def Msave_off: Flag<["-"], "Mnosave">, Group<pgi_fortran_Group>,
2492+ HelpText<"Assume no Fortran variables have SAVE attribute">;
2493+ def Mcache_align_on: Flag<["-"], "Mcache_align">, Group<pgi_fortran_Group>,
24662494 HelpText<"Align large objects on cache-line boundaries">;
2467- def ModuleDir : Separate<["-"], "module">, Group<gfortran_Group>,
2495+ def Mcache_align_off: Flag<["-"], "Mnocache_align">, Group<pgi_fortran_Group>,
2496+ HelpText<"Disable aligning large objects on cache-line boundaries">;
2497+ def ModuleDir : Separate<["-"], "module">, Group<pgi_fortran_Group>,
24682498 HelpText<"Fortran module path">;
24692499def Minform_EQ : Joined<["-"], "Minform=">,
24702500 HelpText<"Set error level of messages to display">;
24712501def Mallocatable_EQ : Joined<["-"], "Mallocatable=">,
24722502 HelpText<"Select semantics for assignments to allocatables (F03 or F95)">;
2473- def Mbyteswapio: Flag<["-"], "Mbyteswapio">, Group<gfortran_Group >,
2503+ def Mbyteswapio: Flag<["-"], "Mbyteswapio">, Group<pgi_fortran_Group >,
24742504 HelpText<"Swap byte-order for unformatted input/output">;
24752505def byteswapio: Flag<["-"], "byteswapio">, Group<gfortran_Group>,
24762506 HelpText<"Swap byte-order for unformatted input/output">;
2477- def Mbackslash: Flag<["-"], "Mbackslash">, Group<gfortran_Group>, Alias<fnobackslash >,
2507+ def Mbackslash: Flag<["-"], "Mbackslash">, Group<pgi_fortran_Group >,
24782508 HelpText<"Treat backslash like any other character in character strings">;
2479- def Mnobackslash: Flag<["-"], "Mnobackslash">, Group<gfortran_Group>, Alias<fbackslash >,
2509+ def Mnobackslash: Flag<["-"], "Mnobackslash">, Group<pgi_fortran_Group >,
24802510 HelpText<"Treat backslash as C-style escape character">;
2481- def staticFlangLibs: Flag<["-"], "static-flang-libs">, Group<gfortran_Group >,
2511+ def staticFlangLibs: Flag<["-"], "static-flang-libs">, Group<flang_rt_Group >,
24822512 HelpText<"Link using static Flang libraries">;
2483- def noFlangLibs: Flag<["-"], "no-flang-libs">, Group<gfortran_Group >,
2513+ def noFlangLibs: Flag<["-"], "no-flang-libs">, Group<flang_rt_Group >,
24842514 HelpText<"Do not link against Flang libraries">;
2485- def r8: Flag<["-"], "r8">, Group<gfortran_Group>,
2486- Alias<default_real_8_f>,
2515+ def r8: Flag<["-"], "r8">, Group<pgi_fortran_Group>,
24872516 HelpText<"Treat REAL as REAL*8">;
2488- def i8: Flag<["-"], "i8">, Group<gfortran_Group>,
2489- Alias<default_integer_8_f>,
2517+ def i8: Flag<["-"], "i8">, Group<pgi_fortran_Group>,
24902518 HelpText<"Treat INTEGER and LOGICAL as INTEGER*8 and LOGICAL*8">;
24912519def no_fortran_main: Flag<["-"], "fno-fortran-main">, Group<gfortran_Group>,
24922520 HelpText<"Don't link in Fortran main">;
2493- def : Flag<["-"], "Mnomain">, Group<gfortran_Group >,
2494- Alias<no_fortran_main >;
2521+ def Mnomain : Flag<["-"], "Mnomain">, Group<pgi_fortran_Group >,
2522+ HelpText<"Don't link in Fortran main" >;
24952523
24962524// Flang internal debug options
2497- def Mx_EQ : Joined<["-"], "Mx,">, Group<gfortran_Group >;
2498- def My_EQ : Joined<["-"], "My,">, Group<gfortran_Group >;
2499- def Hx_EQ : Joined<["-"], "Hx,">, Group<gfortran_Group >;
2500- def Hy_EQ : Joined<["-"], "Hy,">, Group<gfortran_Group >;
2501- def Wm_EQ : Joined<["-"], "Wm,">, Group<gfortran_Group >;
2502-
2503- def Mq_EQ : Joined<["-"], "Mq,">, Group<gfortran_Group >;
2504- def Hq_EQ : Joined<["-"], "Hq,">, Group<gfortran_Group >;
2505- def Mqq_EQ : Joined<["-"], "Mqq,">, Group<gfortran_Group >;
2506- def Hqq_EQ : Joined<["-"], "Hqq,">, Group<gfortran_Group >;
2507- def Wh_EQ : Joined<["-"], "Wh,">, Group<gfortran_Group >;
2525+ def Mx_EQ : Joined<["-"], "Mx,">, Group<pgi_fortran_Group >;
2526+ def My_EQ : Joined<["-"], "My,">, Group<pgi_fortran_Group >;
2527+ def Hx_EQ : Joined<["-"], "Hx,">, Group<pgi_fortran_Group >;
2528+ def Hy_EQ : Joined<["-"], "Hy,">, Group<pgi_fortran_Group >;
2529+ def Wm_EQ : Joined<["-"], "Wm,">, Group<pgi_fortran_Group >;
2530+
2531+ def Mq_EQ : Joined<["-"], "Mq,">, Group<pgi_fortran_Group >;
2532+ def Hq_EQ : Joined<["-"], "Hq,">, Group<pgi_fortran_Group >;
2533+ def Mqq_EQ : Joined<["-"], "Mqq,">, Group<pgi_fortran_Group >;
2534+ def Hqq_EQ : Joined<["-"], "Hqq,">, Group<pgi_fortran_Group >;
2535+ def Wh_EQ : Joined<["-"], "Wh,">, Group<pgi_fortran_Group >;
25082536
25092537include "CC1Options.td"
25102538
0 commit comments