; Options for the Fortran 95 front end.
; Copyright (C) 2003, 2004, 2005, 2006, 2007 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

I
Fortran Joined Separate
-I<directory>	Add a directory for INCLUDE and MODULE searching

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

Wall
Fortran
; Documented in C

Waliasing
Fortran Warning
Warn about possible aliasing of dummy arguments

Wampersand
Fortran Warning
Warn about missing ampersand in continued character constants

Wcharacter-truncation
Fortran Warning
Warn about truncated character expressions

Wconversion
Fortran Warning
Warn about implicit conversion

Wimplicit-interface
Fortran Warning
Warn about calls with implicit interface

Wline-truncation
Fortran Warning
Warn about truncated source lines

Wnonstd-intrinsics
Fortran Warning
Warn about usage of non-standard intrinsics

Wsurprising
Fortran Warning
Warn about \"suspicious\" constructs

Wtabs
Fortran Warning
Permit nonconforming uses of the tab character

Wunderflow
Fortran Warning
Warn about underflow of numerical constant expressions

fall-intrinsics
Fortran RejectNegative
All intrinsics procedures are available regardless of selected standard

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

fautomatic
Fortran
Do not treat local variables and COMMON blocks as if they were named in SAVE statements

fbackslash
Fortran
Specify that backslash in string introduces an escape character

fbacktrace
Fortran
Produce a backtrace when a runtime error is encountered

fblas-matmul-limit=
Fortran RejectNegative Joined UInteger
-fblas-matmul-limit=<n>        Size of the smallest matrix for which matmul will use BLAS

fconvert=big-endian
Fortran RejectNegative
Use big-endian format for unformatted files

fconvert=little-endian
Fortran RejectNegative
Use little-endian format for unformatted files

fconvert=native
Fortran RejectNegative
Use native format for unformatted files

fconvert=swap
Fortran RejectNegative
Swap endianness for unformatted files

fcray-pointer
Fortran
Use the Cray Pointer extension

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

fdefault-double-8
Fortran
Set the default double precision kind to an 8 byte wide type

fdefault-integer-8
Fortran
Set the default integer kind to an 8 byte wide type

fdefault-real-8
Fortran
Set the default real kind to an 8 byte wide type

fdollar-ok
Fortran
Allow dollar signs in entity names

fdump-core
Fortran
Dump a core file when a runtime error occurs

fdump-parse-tree
Fortran
Display the code tree after parsing

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

ff2c
Fortran
Use f2c calling convention

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

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

ffixed-line-length-none
Fortran RejectNegative
Allow arbitrary character line width in fixed mode

ffixed-line-length-
Fortran RejectNegative Joined UInteger
-ffixed-line-length-<n>		Use n as character line width in fixed mode

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

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

ffree-line-length-none
Fortran RejectNegative
Allow arbitrary character line width in free mode

ffree-line-length-
Fortran RejectNegative Joined UInteger
-ffree-line-length-<n>		Use n as character line width in free mode

fimplicit-none
Fortran
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-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 Joined
-finit-real=<zero|nan|inf|-inf> Initialize local real variables

fmax-errors=
Fortran RejectNegative Joined UInteger
-fmax-errors=<n>	Maximum number of errors to report

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

fmax-subrecord-length=
Fortran RejectNegative Joined UInteger
-fmax-subrecord-length=<n>	Maximum length for subrecords

fmax-stack-var-size=
Fortran RejectNegative Joined UInteger
-fmax-stack-var-size=<n>	Size in bytes of the largest array that will be put on the stack

fmodule-private
Fortran
Set default accessibility of module entities to PRIVATE.

fopenmp
Fortran
Enable OpenMP (also sets frecursive)

fpack-derived
Fortran
Try to lay out derived types as compactly as possible

fpreprocessed
Fortran
Treat the input file as preprocessed

frange-check
Fortran
Enable range checking during compilation

frecord-marker=4
Fortran RejectNegative
Use a 4-byte record marker for unformatted files

frecord-marker=8
Fortran RejectNegative
Use an 8-byte record marker for unformatted files

frecursive
Fortran
Allocate local variables on the stack to allow indirect recursion

frepack-arrays
Fortran
Copy array sections into a contiguous block on procedure entry

fsecond-underscore
Fortran
Append a second underscore if the name already contains an underscore

fshort-enums
Fortran
Use the narrowest integer type possible for enumeration types

fsign-zero
Fortran
Apply negative sign to zero values

funderscoring
Fortran
Append underscores to externally visible names

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

std=f2003
Fortran
Conform to the ISO Fortran 2003 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

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