; Options for the Fortran front end.
; Copyright (C) 2003-2021 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
; 
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
; for more details.
; 
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3.  If not see
; <http://www.gnu.org/licenses/>.

; See the GCC internals manual for a description of this file's format.

; Please try to keep this file in ASCII collating order.

Language
Fortran

-all-warnings
Fortran Alias(Wall)

-assert
Fortran Separate Alias(A)

-assert=
Fortran Joined Alias(A)

-comments
Fortran Alias(C)

-comments-in-macros
Fortran Alias(CC)

-define-macro
Fortran Separate Alias(D)

-define-macro=
Fortran Joined Alias(D)

-dependencies
Fortran Alias(M)

-dump
Fortran Separate Alias(d)

-dump=
Fortran Joined Alias(d)

-include-barrier
Fortran Alias(I, -)

-include-directory
Fortran Separate Alias(I)

-include-directory=
Fortran Joined Alias(I)

-include-directory-after
Fortran Separate Alias(idirafter)

-include-directory-after=
Fortran Joined Alias(idirafter)

-include-prefix
Fortran Separate Alias(iprefix)

-include-prefix=
Fortran JoinedOrMissing Alias(iprefix)

-no-line-commands
Fortran Alias(P)

-no-standard-includes
Fortran Alias(nostdinc)

-output
Fortran Separate Alias(o)

-output=
Fortran Joined Alias(o)

-preprocess
Fortran Undocumented Alias(E)

-print-missing-file-dependencies
Fortran Alias(MG)

-trace-includes
Fortran Alias(H)

-undefine-macro
Fortran Separate Alias(U)

-undefine-macro=
Fortran Joined Alias(U)

-user-dependencies
Fortran Alias(MM)

-verbose
Fortran Alias(v)

-write-dependencies
Fortran NoDriverArg Separate Alias(MD)

-write-user-dependencies
Fortran NoDriverArg Separate Alias(MMD)

A
Fortran Joined Separate
; Documented in C

C
Fortran
; Documented in C

CC
Fortran
; Documented in C

D
Fortran Joined Separate
; Documented in C

E
Fortran Undocumented

H
Fortran
; Documented in C

I
Fortran Joined Separate
; Documented in C

J
Fortran Joined Separate
-J<directory>	Put MODULE files in 'directory'.

M
Fortran
; Documented in C

MD
Fortran Separate NoDriverArg
; Documented in C

MF
Fortran Joined Separate
; Documented in C

MG
Fortran
; Documented in C

MM
Fortran
; Documented in C

MMD
Fortran Separate NoDriverArg
; Documented in C

MP
Fortran
; Documented in C

MT
Fortran Joined Separate
; Documented in C

MQ
Fortran Joined Separate
; Documented in C

P
Fortran
; Documented in C

U
Fortran Joined Separate
; Documented in C

Wall
Fortran
; Documented in C

Waliasing
Fortran Warning Var(warn_aliasing) LangEnabledBy(Fortran,Wall)
Warn about possible aliasing of dummy arguments.

Walign-commons
Fortran Warning Var(warn_align_commons) Init(1)
Warn about alignment of COMMON blocks.

Wampersand
Fortran Warning Var(warn_ampersand) LangEnabledBy(Fortran,Wall || Wpedantic)
Warn about missing ampersand in continued character constants.

Warray-temporaries
Fortran Warning Var(warn_array_temporaries)
Warn about creation of array temporaries.

Wargument-mismatch
Fortran WarnRemoved
Does nothing. Preserved for backward compatibility.

Wc-binding-type
Fortran Var(warn_c_binding_type) Warning LangEnabledBy(Fortran,Wall)
Warn if the type of a variable might be not interoperable with C.

Wdate-time
Fortran
; Documented in C

Wcharacter-truncation
Fortran Var(warn_character_truncation) Warning LangEnabledBy(Fortran,Wall)
Warn about truncated character expressions.

Wcompare-reals
Fortran Warning Var(warn_compare_reals) LangEnabledBy(Fortran,Wextra)
Warn about equality comparisons involving REAL or COMPLEX expressions.

Wconversion
Fortran Var(warn_conversion) Warning LangEnabledBy(Fortran,Wall)
; Documented in C

Wconversion-extra
Fortran Var(warn_conversion_extra) Warning
Warn about most implicit conversions.

Wdo-subscript
Fortran Var(warn_do_subscript) Warning LangEnabledBy(Fortran,Wextra)
Warn about possibly incorrect subscripts in do loops.

Wextra
Fortran Warning
; Documented in common

Wfrontend-loop-interchange
Fortran Var(flag_warn_frontend_loop_interchange)
Warn if loops have been interchanged.

Wfunction-elimination
Fortran Warning Var(warn_function_elimination) LangEnabledBy(Fortran,Wextra)
Warn about function call elimination.

Wimplicit-interface
Fortran Warning Var(warn_implicit_interface)
Warn about calls with implicit interface.

Wimplicit-procedure
Fortran Warning Var(warn_implicit_procedure)
Warn about called procedures not explicitly declared.

Winteger-division
Fortran Warning Var(warn_integer_division) LangEnabledBy(Fortran,Wall)
Warn about constant integer divisions with truncated results.

Wline-truncation
Fortran Warning Var(warn_line_truncation) LangEnabledBy(Fortran,Wall) Init(-1)
Warn about truncated source lines.

Wintrinsics-std
Fortran Var(warn_intrinsics_std) Warning LangEnabledBy(Fortran,Wall)
Warn on intrinsics not part of the selected standard.

Wmaybe-uninitialized
Fortran LangEnabledBy(Fortran,Wall)
; Documented in common.opt

Wmissing-include-dirs
Fortran
; Documented in C/C++

Wuse-without-only
Fortran Var(warn_use_without_only) Warning
Warn about USE statements that have no ONLY qualifier.

Wopenacc-parallelism
Fortran
; Documented in C

Wopenmp-simd
Fortran
; Documented in C

Woverwrite-recursive
Fortran Warning Var(warn_overwrite_recursive) Init(1)
Warn that -fno-automatic may break recursion.

Wpedantic
Fortran
; Documented in common.opt

Wreal-q-constant
Fortran Warning Var(warn_real_q_constant) LangEnabledBy(Fortran,Wall)
Warn about real-literal-constants with 'q' exponent-letter.

Wrealloc-lhs
Fortran Warning Var(warn_realloc_lhs) LangEnabledBy(Fortran,Wrealloc-lhs-all)
Warn when a left-hand-side array variable is reallocated.

Wrealloc-lhs-all
Fortran Warning Var(warn_realloc_lhs_all)
Warn when a left-hand-side variable is reallocated.

Wtarget-lifetime
Fortran Warning Var(warn_target_lifetime) LangEnabledBy(Fortran,Wall)
Warn if the pointer in a pointer assignment might outlive its target.

Wreturn-type
Fortran Warning LangEnabledBy(Fortran,Wall)
; Documented in C

Wsurprising
Fortran Warning Var(warn_surprising) LangEnabledBy(Fortran,Wall)
Warn about \"suspicious\" constructs.

Wtabs
Fortran Warning Var(warn_tabs) LangEnabledBy(Fortran,Wall || Wpedantic)
Permit nonconforming uses of the tab character.

Wundefined-do-loop
Fortran Warning Var(warn_undefined_do_loop) LangEnabledBy(Fortran,Wall)
Warn about an invalid DO loop.

Wunderflow
Fortran Warning Var(warn_underflow) Init(1)
Warn about underflow of numerical constant expressions.

Wuninitialized
Fortran LangEnabledBy(Fortran,Wall)
; Documented in common.opt

Wintrinsic-shadow
Fortran Warning Var(warn_intrinsic_shadow) LangEnabledBy(Fortran,Wall)
Warn if a user-procedure has the same name as an intrinsic.

Wunused
LangEnabledBy(Fortran,Wall)
; Documented in common.opt

Wunused-dummy-argument
Fortran Warning Var(warn_unused_dummy_argument) LangEnabledBy(Fortran,Wall)
Warn about unused dummy arguments.

Wzerotrip
Fortran Warning Var(warn_zerotrip) LangEnabledBy(Fortran,Wall)
Warn about zero-trip DO loops.

cpp
Fortran Negative(nocpp)
Enable preprocessing.

cpp=
Fortran Joined Negative(nocpp) Undocumented NoDWARFRecord
; Internal option generated by specs from -cpp.

nocpp
Fortran Negative(cpp)
Disable preprocessing.

d
Fortran Joined
; Documented in common.opt

fallow-argument-mismatch
Fortran Var(flag_allow_argument_mismatch) LangEnabledBy(Fortran,std=legacy)
Accept argument mismatches in procedure calls.

faggressive-function-elimination
Fortran Var(flag_aggressive_function_elimination)
Eliminate multiple function invocations also for impure functions.

falign-commons
Fortran Var(flag_align_commons) Init(1)
Enable alignment of COMMON blocks.

fall-intrinsics
Fortran RejectNegative Var(flag_all_intrinsics)
All intrinsics procedures are available regardless of selected standard.

fallow-invalid-boz
Fortran RejectNegative Var(flag_allow_invalid_boz)
Allow a BOZ literal constant to appear in an invalid context and with X instead of Z.

fallow-leading-underscore
Fortran Undocumented Var(flag_allow_leading_underscore)
; For internal use only: allow the first character of symbol names to be an underscore

fautomatic
Fortran Var(flag_automatic) Init(1)
Do not treat local variables and COMMON blocks as if they were named in SAVE statements.

fbackslash
Fortran Var(flag_backslash)
Specify that backslash in string introduces an escape character.

fbacktrace
Fortran Var(flag_backtrace) Init(1)
Produce a backtrace when a runtime error is encountered.

fblas-matmul-limit=
Fortran RejectNegative Joined UInteger Var(flag_blas_matmul_limit) Init(30)
-fblas-matmul-limit=<n>	Size of the smallest matrix for which matmul will use BLAS.

fcheck-array-temporaries
Fortran
Produce a warning at runtime if a array temporary has been created for a procedure argument.

fconvert=
Fortran RejectNegative Joined Enum(gfc_convert) Var(flag_convert) Init(GFC_FLAG_CONVERT_NATIVE)
-fconvert=<big-endian|little-endian|native|swap>	The endianness used for unformatted files.

Enum
Name(gfc_convert) Type(enum gfc_convert) UnknownError(Unrecognized option to endianness value: %qs)

EnumValue
Enum(gfc_convert) String(big-endian) Value(GFC_FLAG_CONVERT_BIG)

EnumValue
Enum(gfc_convert) String(little-endian) Value(GFC_FLAG_CONVERT_LITTLE)

EnumValue
Enum(gfc_convert) String(native) Value(GFC_FLAG_CONVERT_NATIVE)

EnumValue
Enum(gfc_convert) String(swap) Value(GFC_FLAG_CONVERT_SWAP)

fcray-pointer
Fortran Var(flag_cray_pointer)
Use the Cray Pointer extension.

fc-prototypes
Fortran Var(flag_c_prototypes)
Generate C prototypes from BIND(C) declarations.

fc-prototypes-external
Fortran Var(flag_c_prototypes_external)
Generate C prototypes from non-BIND(C) external procedure definitions.

fd-lines-as-code
Fortran RejectNegative
Ignore 'D' in column one in fixed form.

fd-lines-as-comments
Fortran RejectNegative
Treat lines with 'D' in column one as comments.

fdebug-aux-vars
Fortran Var(flag_debug_aux_vars)
Issue debug information for compiler-generated auxiliary variables.

fdec
Fortran Var(flag_dec)
Enable all DEC language extensions.

fdec-blank-format-item
Fortran Var(flag_dec_blank_format_item)
Enable the use of blank format items in format strings.

fdec-char-conversions
Fortran Var(flag_dec_char_conversions)
Enable the use of character literals in assignments and data statements
for non-character variables.

fdec-include
Fortran Var(flag_dec_include)
Enable legacy parsing of INCLUDE as statement.

fdec-format-defaults
Fortran Var(flag_dec_format_defaults)
Enable default widths for i, f and g format specifiers.

fdec-intrinsic-ints
Fortran Var(flag_dec_intrinsic_ints)
Enable kind-specific variants of integer intrinsic functions.

fdec-math
Fortran Var(flag_dec_math)
Enable legacy math intrinsics for compatibility.

fdec-structure
Fortran Var(flag_dec_structure)
Enable support for DEC STRUCTURE/RECORD.

fdec-static
Fortran Var(flag_dec_static)
Enable DEC-style STATIC and AUTOMATIC attributes.

fdefault-double-8
Fortran Var(flag_default_double)
Set the default double precision kind to an 8 byte wide type.

fdefault-integer-8
Fortran Var(flag_default_integer)
Set the default integer kind to an 8 byte wide type.

fdefault-real-8
Fortran Var(flag_default_real_8)
Set the default real kind to an 8 byte wide type.

fdefault-real-10
Fortran Var(flag_default_real_10)
Set the default real kind to an 10 byte wide type.

fdefault-real-16
Fortran Var(flag_default_real_16)
Set the default real kind to an 16 byte wide type.

fdollar-ok
Fortran Var(flag_dollar_ok)
Allow dollar signs in entity names.

fdump-core
Fortran Ignore
Does nothing. Preserved for backward compatibility.

fdump-fortran-original
Fortran Var(flag_dump_fortran_original)
Display the code tree after parsing.

fdump-fortran-optimized
Fortran Var(flag_dump_fortran_optimized)
Display the code tree after front end optimization.

fdump-fortran-global
Fortran Var(flag_dump_fortran_global)
Display the global symbol table after parsing.

fdump-parse-tree
Fortran Alias(fdump-fortran-original)
Display the code tree after parsing; deprecated option.

fexternal-blas
Fortran Var(flag_external_blas)
Specify that an external BLAS library should be used for matmul calls on large-size arrays.

ff2c
Fortran Var(flag_f2c)
Use f2c calling convention.

ffixed-form
Fortran RejectNegative
Assume that the source file is fixed form.

ftest-forall-temp
Fortran Var(flag_test_forall_temp) Init(0)
Force creation of temporary to test infrequently-executed forall code.

finteger-4-integer-8
Fortran RejectNegative Var(flag_integer4_kind,8)
Interpret any INTEGER(4) as an INTEGER(8).

fintrinsic-modules-path
Fortran RejectNegative Separate
Specify where to find the compiled intrinsic modules.

fintrinsic-modules-path=
Fortran RejectNegative Joined
Specify where to find the compiled intrinsic modules.

ffixed-line-length-none
Fortran RejectNegative Var(flag_fixed_line_length,0)
Allow arbitrary character line width in fixed mode.

ffixed-line-length-
Fortran RejectNegative Joined UInteger Var(flag_fixed_line_length) Init(72)
-ffixed-line-length-<n>	Use n as character line width in fixed mode.

fpad-source
Fortran Var(flag_pad_source) Init(1)
Pad shorter fixed form lines to line width with spaces.

ffpe-trap=
Fortran RejectNegative JoinedOrMissing
-ffpe-trap=[...]	Stop on following floating point exceptions.

ffpe-summary=
Fortran RejectNegative JoinedOrMissing
-ffpe-summary=[...]	Print summary of floating point exceptions.

ffree-form
Fortran RejectNegative
Assume that the source file is free form.

ffree-line-length-none
Fortran RejectNegative Var(flag_free_line_length,0)
Allow arbitrary character line width in free mode.

ffree-line-length-
Fortran RejectNegative Joined UInteger Var(flag_free_line_length) Init(132)
-ffree-line-length-<n>	Use n as character line width in free mode.

ffrontend-loop-interchange
Fortran Var(flag_frontend_loop_interchange) Init(-1)
Try to interchange loops if profitable.

ffrontend-optimize
Fortran Var(flag_frontend_optimize) Init(-1)
Enable front end optimization.

fimplicit-none
Fortran Var(flag_implicit_none)
Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements.

finit-character=
Fortran RejectNegative Joined UInteger
-finit-character=<n>	Initialize local character variables to ASCII value n.

finit-derived
Fortran Var(flag_init_derived)
Initialize components of derived type variables according to other init flags.

finit-integer=
Fortran RejectNegative Joined
-finit-integer=<n>	Initialize local integer variables to n.

finit-local-zero
Fortran
Initialize local variables to zero (from g77).

finit-logical=
Fortran RejectNegative Joined
-finit-logical=<true|false>	Initialize local logical variables.

finit-real=
Fortran RejectNegative ToLower Joined Enum(gfc_init_local_real) Var(flag_init_real) Init(GFC_INIT_REAL_OFF)
-finit-real=<zero|snan|nan|inf|-inf>	Initialize local real variables.

Enum
Name(gfc_init_local_real) Type(enum gfc_init_local_real) UnknownError(Unrecognized option to floating-point init value: %qs)

EnumValue
Enum(gfc_init_local_real) String(zero) Value(GFC_INIT_REAL_ZERO)

EnumValue
Enum(gfc_init_local_real) String(snan) Value(GFC_INIT_REAL_SNAN)

EnumValue
Enum(gfc_init_local_real) String(nan) Value(GFC_INIT_REAL_NAN)

EnumValue
Enum(gfc_init_local_real) String(inf) Value(GFC_INIT_REAL_INF)

EnumValue
Enum(gfc_init_local_real) String(-inf) Value(GFC_INIT_REAL_NEG_INF)

finline-arg-packing
Fortran  Var(flag_inline_arg_packing) Init(-1)
-finline-arg-packing	Perform argument packing inline.

finline-matmul-limit=
Fortran RejectNegative Joined UInteger Var(flag_inline_matmul_limit) Init(-1)
-finline-matmul-limit=<n>	Specify the size of the largest matrix for which matmul will be inlined.

fmax-array-constructor=
Fortran RejectNegative Joined UInteger Var(flag_max_array_constructor) Init(65535)
-fmax-array-constructor=<n>	Maximum number of objects in an array constructor.

fmax-identifier-length=
Fortran RejectNegative Joined UInteger
-fmax-identifier-length=<n>	Maximum identifier length.

fmax-subrecord-length=
Fortran RejectNegative Joined UInteger Var(flag_max_subrecord_length)
-fmax-subrecord-length=<n>	Maximum length for subrecords.

fmax-stack-var-size=
Fortran RejectNegative Joined UInteger Var(flag_max_stack_var_size) Init(-2)
-fmax-stack-var-size=<n>	Size in bytes of the largest array that will be put on the stack.

fstack-arrays
Fortran Var(flag_stack_arrays) Init(-1)
Put all local arrays on stack.

fmodule-private
Fortran Var(flag_module_private)
Set default accessibility of module entities to PRIVATE.

fopenacc
Fortran LTO
; Documented in C

fopenacc-dim=
Fortran LTO Joined Var(flag_openacc_dims)
; Documented in C

fopenmp
Fortran LTO
; Documented in C

fopenmp-simd
Fortran
; Documented in C

fpack-derived
Fortran Var(flag_pack_derived)
Try to lay out derived types as compactly as possible.

fpreprocessed
Fortran
; Documented in C

fprotect-parens
Fortran Var(flag_protect_parens) Init(-1)
Protect parentheses in expressions.

fpre-include=
Fortran RejectNegative Joined Var(flag_pre_include) Undocumented
Path to header file that should be pre-included before each compilation unit.

frange-check
Fortran Var(flag_range_check) Init(1)
Enable range checking during compilation.

freal-4-real-8
Fortran RejectNegative Var(flag_real4_kind,8)
Interpret any REAL(4) as a REAL(8).

freal-4-real-10
Fortran RejectNegative Var(flag_real4_kind,10)
Interpret any REAL(4) as a REAL(10).

freal-4-real-16
Fortran RejectNegative Var(flag_real4_kind,16)
Interpret any REAL(4) as a REAL(16).

freal-8-real-4
Fortran RejectNegative Var(flag_real8_kind,4)
Interpret any REAL(8) as a REAL(4).

freal-8-real-10
Fortran RejectNegative Var(flag_real8_kind,10)
Interpret any REAL(8) as a REAL(10).

freal-8-real-16
Fortran RejectNegative Var(flag_real8_kind,16)
Interpret any REAL(8) as a REAL(16).

frealloc-lhs
Fortran Var(flag_realloc_lhs) Init(-1)
Reallocate the LHS in assignments.

frecord-marker=4
Fortran RejectNegative Var(flag_record_marker,4)
Use a 4-byte record marker for unformatted files.

frecord-marker=8
Fortran RejectNegative Var(flag_record_marker,8)
Use an 8-byte record marker for unformatted files.

frecursive
Fortran Var(flag_recursive)
Allocate local variables on the stack to allow indirect recursion.

frepack-arrays
Fortran Var(flag_repack_arrays)
Copy array sections into a contiguous block on procedure entry.

fcoarray=
Fortran RejectNegative Joined Enum(gfc_fcoarray) Var(flag_coarray) Init(GFC_FCOARRAY_NONE)
-fcoarray=<none|single|lib>	Specify which coarray parallelization should be used.

Enum
Name(gfc_fcoarray) Type(enum gfc_fcoarray) UnknownError(Unrecognized option: %qs)

EnumValue
Enum(gfc_fcoarray) String(none) Value(GFC_FCOARRAY_NONE)

EnumValue
Enum(gfc_fcoarray) String(single) Value(GFC_FCOARRAY_SINGLE)

EnumValue
Enum(gfc_fcoarray) String(lib) Value(GFC_FCOARRAY_LIB)

fcheck=
Fortran RejectNegative JoinedOrMissing
-fcheck=[...]	Specify which runtime checks are to be performed.

fsecond-underscore
Fortran Var(flag_second_underscore) Init(-1)
Append a second underscore if the name already contains an underscore.

fshort-enums
Fortran Var(flag_short_enums)
; Documented in C

fsign-zero
Fortran Var(flag_sign_zero) Init(1)
Apply negative sign to zero values.

ftail-call-workaround
Fortran Alias(ftail-call-workaround=,1,0)

ftail-call-workaround=
Fortran RejectNegative Joined UInteger IntegerRange(0, 2) Var(flag_tail_call_workaround) Init(1)
Disallow tail call optimization when a calling routine may have omitted character lengths.

funderscoring
Fortran Var(flag_underscoring) Init(1)
Append underscores to externally visible names.

fwhole-file
Fortran Ignore
Does nothing.  Preserved for backward compatibility.

fworking-directory
Fortran
; Documented in C

idirafter
Fortran Joined Separate
; Documented in C

imultilib
Fortran Joined Separate
; Documented in C

iprefix
Fortran Joined Separate
; Documented in C

iquote
Fortran Joined Separate
; Documented in C

isysroot
Fortran Joined Separate
; Documented in C

isystem
Fortran Joined Separate
; Documented in C

nostdinc
Fortran
; Documented in C

o
Fortran Joined Separate
; Documented in common.opt

static-libgfortran
Fortran
Statically link the GNU Fortran helper library (libgfortran).

std=f2003
Fortran
Conform to the ISO Fortran 2003 standard.

std=f2008
Fortran
Conform to the ISO Fortran 2008 standard.

std=f2008ts
Fortran
Conform to the ISO Fortran 2008 standard including TS 29113.

std=f2018
Fortran
Conform to the ISO Fortran 2018 standard.

std=f95
Fortran
Conform to the ISO Fortran 95 standard.

std=gnu
Fortran
Conform to nothing in particular.

std=legacy
Fortran
Accept extensions to support legacy code.

undef
Fortran
; Documented in C

v
Fortran
; Documented in C

; This comment is to ensure we retain the blank line above.
