; Options for the Fortran 95 front end.
; Copyright (C) 2003, 2004, 2005, 2006 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 2, 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 COPYING.  If not, write to the Free
; Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
; 02110-1301, USA.

; 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
-I<directory>	Add a directory for INCLUDE and MODULE searching

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

Wall
Fortran
; Documented in C

Waliasing
Fortran
Warn about possible aliasing of dummy arguments

Wampersand
Fortran
Warn about missing ampersand in continued character constants

Wcharacter-truncation
Fortran
Warn about truncated character expressions

Wconversion
Fortran
Warn about implicit conversion

Wimplicit-interface
Fortran
Warn about calls with implicit interface

Wline-truncation
Fortran
Warn about truncated source lines

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

Wsurprising
Fortran
Warn about \"suspicious\" constructs

Wtabs
Fortran
Permit nonconforming uses of the tab character

Wunderflow
Fortran
Warn about underflow of numerical constant expressions

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

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

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

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

fdollar-ok
Fortran
Allow dollar signs in entity names

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

ff2c
Fortran
Use f2c calling convention

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

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

fopenmp
Fortran
Enable OpenMP

funderscoring
Fortran
Append underscores to externally visible names

fcray-pointer
Fortran
Use the Cray Pointer extension

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

fimplicit-none
Fortran
Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements

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

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

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

fno-backend
Fortran RejectNegative
Don't generate code, just do syntax and semantics checking

frange-check
Fortran
Enable range checking during compilation

fpack-derived
Fortran
Try to layout derived types as compact as possible

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

fpreprocessed
Fortran
Treat the input file as preprocessed

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

std=f95
Fortran
Conform to the ISO Fortran 95 standard

std=f2003
Fortran
Conform to the ISO Fortran 2003 standard

std=gnu
Fortran
Conform nothing in particular

std=legacy
Fortran
Accept extensions to support legacy code

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

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

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

fconvert=native
Fortran RejectNegative
Use native format for unformatted files

fconvert=swap
Fortran RejectNegative
Swap endianness for unformatted files

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

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