1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552 |
- .\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
- .\"
- .\" Standard preamble:
- .\" ========================================================================
- .de Sp \" Vertical space (when we can't use .PP)
- .if t .sp .5v
- .if n .sp
- ..
- .de Vb \" Begin verbatim text
- .ft CW
- .nf
- .ne \\$1
- ..
- .de Ve \" End verbatim text
- .ft R
- .fi
- ..
- .\" Set up some character translations and predefined strings. \*(-- will
- .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
- .\" double quote, and \*(R" will give a right double quote. \*(C+ will
- .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
- .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
- .\" nothing in troff, for use with C<>.
- .tr \(*W-
- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
- .ie n \{\
- . ds -- \(*W-
- . ds PI pi
- . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
- . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
- . ds L" ""
- . ds R" ""
- . ds C` ""
- . ds C' ""
- 'br\}
- .el\{\
- . ds -- \|\(em\|
- . ds PI \(*p
- . ds L" ``
- . ds R" ''
- . ds C`
- . ds C'
- 'br\}
- .\"
- .\" Escape single quotes in literal strings from groff's Unicode transform.
- .ie \n(.g .ds Aq \(aq
- .el .ds Aq '
- .\"
- .\" If the F register is turned on, we'll generate index entries on stderr for
- .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
- .\" entries marked with X<> in POD. Of course, you'll have to process the
- .\" output yourself in some meaningful fashion.
- .\"
- .\" Avoid warning from groff about undefined register 'F'.
- .de IX
- ..
- .nr rF 0
- .if \n(.g .if rF .nr rF 1
- .if (\n(rF:(\n(.g==0)) \{
- . if \nF \{
- . de IX
- . tm Index:\\$1\t\\n%\t"\\$2"
- ..
- . if !\nF==2 \{
- . nr % 0
- . nr F 2
- . \}
- . \}
- .\}
- .rr rF
- .\"
- .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
- .\" Fear. Run. Save yourself. No user-serviceable parts.
- . \" fudge factors for nroff and troff
- .if n \{\
- . ds #H 0
- . ds #V .8m
- . ds #F .3m
- . ds #[ \f1
- . ds #] \fP
- .\}
- .if t \{\
- . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
- . ds #V .6m
- . ds #F 0
- . ds #[ \&
- . ds #] \&
- .\}
- . \" simple accents for nroff and troff
- .if n \{\
- . ds ' \&
- . ds ` \&
- . ds ^ \&
- . ds , \&
- . ds ~ ~
- . ds /
- .\}
- .if t \{\
- . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
- . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
- . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
- . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
- . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
- . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
- .\}
- . \" troff and (daisy-wheel) nroff accents
- .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
- .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
- .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
- .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
- .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
- .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
- .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
- .ds ae a\h'-(\w'a'u*4/10)'e
- .ds Ae A\h'-(\w'A'u*4/10)'E
- . \" corrections for vroff
- .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
- .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
- . \" for low resolution devices (crt and lpr)
- .if \n(.H>23 .if \n(.V>19 \
- \{\
- . ds : e
- . ds 8 ss
- . ds o a
- . ds d- d\h'-1'\(ga
- . ds D- D\h'-1'\(hy
- . ds th \o'bp'
- . ds Th \o'LP'
- . ds ae ae
- . ds Ae AE
- .\}
- .rm #[ #] #H #V #F C
- .\" ========================================================================
- .\"
- .IX Title "GFORTRAN 1"
- .TH GFORTRAN 1 "2019-11-14" "gcc-7.5.0" "GNU"
- .\" For nroff, turn off justification. Always turn off hyphenation; it makes
- .\" way too many mistakes in technical documents.
- .if n .ad l
- .nh
- .SH "NAME"
- gfortran \- GNU Fortran compiler
- .SH "SYNOPSIS"
- .IX Header "SYNOPSIS"
- gfortran [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR]
- [\fB\-g\fR] [\fB\-pg\fR] [\fB\-O\fR\fIlevel\fR]
- [\fB\-W\fR\fIwarn\fR...] [\fB\-pedantic\fR]
- [\fB\-I\fR\fIdir\fR...] [\fB\-L\fR\fIdir\fR...]
- [\fB\-D\fR\fImacro\fR[=\fIdefn\fR]...] [\fB\-U\fR\fImacro\fR]
- [\fB\-f\fR\fIoption\fR...]
- [\fB\-m\fR\fImachine-option\fR...]
- [\fB\-o\fR \fIoutfile\fR] \fIinfile\fR...
- .PP
- Only the most useful options are listed here; see below for the
- remainder.
- .SH "DESCRIPTION"
- .IX Header "DESCRIPTION"
- The \fBgfortran\fR command supports all the options supported by the
- \&\fBgcc\fR command. Only options specific to \s-1GNU\s0 Fortran are documented
- here.
- .PP
- All \s-1GCC\s0 and \s-1GNU\s0 Fortran options
- are accepted both by \fBgfortran\fR and by \fBgcc\fR
- (as well as any other drivers built at the same time,
- such as \fBg++\fR),
- since adding \s-1GNU\s0 Fortran to the \s-1GCC\s0 distribution
- enables acceptance of \s-1GNU\s0 Fortran options
- by all of the relevant drivers.
- .PP
- In some cases, options have positive and negative forms;
- the negative form of \fB\-ffoo\fR would be \fB\-fno\-foo\fR.
- This manual documents only one of these two forms, whichever
- one is not the default.
- .SH "OPTIONS"
- .IX Header "OPTIONS"
- Here is a summary of all the options specific to \s-1GNU\s0 Fortran, grouped
- by type. Explanations are in the following sections.
- .IP "\fIFortran Language Options\fR" 4
- .IX Item "Fortran Language Options"
- \&\fB\-fall\-intrinsics \-fbackslash \-fcray\-pointer \-fd\-lines\-as\-code
- \&\-fd\-lines\-as\-comments
- \&\-fdec \-fdec\-structure \-fdec\-intrinsic\-ints \-fdec\-static \-fdec\-math
- \&\-fdefault\-double\-8 \-fdefault\-integer\-8
- \&\-fdefault\-real\-8 \-fdollar\-ok \-ffixed\-line\-length\-\fR\fIn\fR
- \&\fB\-ffixed\-line\-length\-none \-ffree\-form \-ffree\-line\-length\-\fR\fIn\fR
- \&\fB\-ffree\-line\-length\-none \-fimplicit\-none \-finteger\-4\-integer\-8
- \&\-fmax\-identifier\-length \-fmodule\-private \-ffixed\-form \-fno\-range\-check
- \&\-fopenacc \-fopenmp \-freal\-4\-real\-10 \-freal\-4\-real\-16 \-freal\-4\-real\-8
- \&\-freal\-8\-real\-10 \-freal\-8\-real\-16 \-freal\-8\-real\-4 \-std=\fR\fIstd\fR
- \&\fB\-ftest\-forall\-temp\fR
- .IP "\fIPreprocessing Options\fR" 4
- .IX Item "Preprocessing Options"
- \&\fB\-A\-\fR\fIquestion\fR[\fB=\fR\fIanswer\fR]
- \&\fB\-A\fR\fIquestion\fR\fB=\fR\fIanswer\fR \fB\-C \-CC \-D\fR\fImacro\fR[\fB=\fR\fIdefn\fR]
- \&\fB\-H \-P
- \&\-U\fR\fImacro\fR \fB\-cpp \-dD \-dI \-dM \-dN \-dU \-fworking\-directory
- \&\-imultilib\fR \fIdir\fR
- \&\fB\-iprefix\fR \fIfile\fR \fB\-iquote \-isysroot\fR \fIdir\fR \fB\-isystem\fR \fIdir\fR \fB\-nocpp
- \&\-nostdinc
- \&\-undef\fR
- .IP "\fIError and Warning Options\fR" 4
- .IX Item "Error and Warning Options"
- \&\fB\-Waliasing \-Wall \-Wampersand \-Wargument\-mismatch \-Warray\-bounds
- \&\-Wc\-binding\-type \-Wcharacter\-truncation
- \&\-Wconversion \-Wfunction\-elimination \-Wimplicit\-interface
- \&\-Wimplicit\-procedure \-Wintrinsic\-shadow \-Wuse\-without\-only \-Wintrinsics\-std
- \&\-Wline\-truncation \-Wno\-align\-commons \-Wno\-tabs \-Wreal\-q\-constant
- \&\-Wsurprising \-Wunderflow \-Wunused\-parameter \-Wrealloc\-lhs \-Wrealloc\-lhs\-all
- \&\-Wtarget\-lifetime \-fmax\-errors=\fR\fIn\fR \fB\-fsyntax\-only \-pedantic \-pedantic\-errors\fR
- .IP "\fIDebugging Options\fR" 4
- .IX Item "Debugging Options"
- \&\fB\-fbacktrace \-fdump\-fortran\-optimized \-fdump\-fortran\-original
- \&\-fdump\-parse\-tree \-ffpe\-trap=\fR\fIlist\fR \fB\-ffpe\-summary=\fR\fIlist\fR\fB \fR
- .IP "\fIDirectory Options\fR" 4
- .IX Item "Directory Options"
- \&\fB\-I\fR\fIdir\fR \fB\-J\fR\fIdir\fR \fB\-fintrinsic\-modules\-path\fR \fIdir\fR
- .IP "\fILink Options\fR" 4
- .IX Item "Link Options"
- \&\fB\-static\-libgfortran\fR
- .IP "\fIRuntime Options\fR" 4
- .IX Item "Runtime Options"
- \&\fB\-fconvert=\fR\fIconversion\fR \fB\-fmax\-subrecord\-length=\fR\fIlength\fR
- \&\fB\-frecord\-marker=\fR\fIlength\fR \fB\-fsign\-zero\fR
- .IP "\fICode Generation Options\fR" 4
- .IX Item "Code Generation Options"
- \&\fB\-faggressive\-function\-elimination \-fblas\-matmul\-limit=\fR\fIn\fR
- \&\fB\-fbounds\-check \-ftail\-call\-workaround \-ftail\-call\-workaround=\fR\fIn\fR
- \&\fB\-fcheck\-array\-temporaries
- \&\-fcheck=\fR\fI<all|array\-temps|bounds|do|mem|pointer|recursion>\fR
- \&\fB\-fcoarray=\fR\fI<none|single|lib>\fR \fB\-fexternal\-blas \-ff2c
- \&\-ffrontend\-optimize
- \&\-finit\-character=\fR\fIn\fR \fB\-finit\-integer=\fR\fIn\fR \fB\-finit\-local\-zero
- \&\-finit\-derived
- \&\-finit\-logical=\fR\fI<true|false>\fR
- \&\fB\-finit\-real=\fR\fI<zero|inf|\-inf|nan|snan>\fR
- \&\fB\-finline\-matmul\-limit=\fR\fIn\fR
- \&\fB\-fmax\-array\-constructor=\fR\fIn\fR \fB\-fmax\-stack\-var\-size=\fR\fIn\fR
- \&\fB\-fno\-align\-commons
- \&\-fno\-automatic \-fno\-protect\-parens \-fno\-underscoring
- \&\-fsecond\-underscore \-fpack\-derived \-frealloc\-lhs \-frecursive
- \&\-frepack\-arrays \-fshort\-enums \-fstack\-arrays\fR
- .SS "Options controlling Fortran dialect"
- .IX Subsection "Options controlling Fortran dialect"
- The following options control the details of the Fortran dialect
- accepted by the compiler:
- .IP "\fB\-ffree\-form\fR" 4
- .IX Item "-ffree-form"
- .PD 0
- .IP "\fB\-ffixed\-form\fR" 4
- .IX Item "-ffixed-form"
- .PD
- Specify the layout used by the source file. The free form layout
- was introduced in Fortran 90. Fixed form was traditionally used in
- older Fortran programs. When neither option is specified, the source
- form is determined by the file extension.
- .IP "\fB\-fall\-intrinsics\fR" 4
- .IX Item "-fall-intrinsics"
- This option causes all intrinsic procedures (including the GNU-specific
- extensions) to be accepted. This can be useful with \fB\-std=f95\fR to
- force standard-compliance but get access to the full range of intrinsics
- available with \fBgfortran\fR. As a consequence, \fB\-Wintrinsics\-std\fR
- will be ignored and no user-defined procedure with the same name as any
- intrinsic will be called except when it is explicitly declared \f(CW\*(C`EXTERNAL\*(C'\fR.
- .IP "\fB\-fd\-lines\-as\-code\fR" 4
- .IX Item "-fd-lines-as-code"
- .PD 0
- .IP "\fB\-fd\-lines\-as\-comments\fR" 4
- .IX Item "-fd-lines-as-comments"
- .PD
- Enable special treatment for lines beginning with \f(CW\*(C`d\*(C'\fR or \f(CW\*(C`D\*(C'\fR
- in fixed form sources. If the \fB\-fd\-lines\-as\-code\fR option is
- given they are treated as if the first column contained a blank. If the
- \&\fB\-fd\-lines\-as\-comments\fR option is given, they are treated as
- comment lines.
- .IP "\fB\-fdec\fR" 4
- .IX Item "-fdec"
- \&\s-1DEC\s0 compatibility mode. Enables extensions and other features that mimic
- the default behavior of older compilers (such as \s-1DEC\s0).
- These features are non-standard and should be avoided at all costs.
- For details on \s-1GNU\s0 Fortran's implementation of these extensions see the
- full documentation.
- .Sp
- Other flags enabled by this switch are:
- \&\fB\-fdollar\-ok\fR \fB\-fcray\-pointer\fR \fB\-fdec\-structure\fR
- \&\fB\-fdec\-intrinsic\-ints\fR \fB\-fdec\-static\fR \fB\-fdec\-math\fR
- .Sp
- If \fB\-fd\-lines\-as\-code\fR/\fB\-fd\-lines\-as\-comments\fR are unset, then
- \&\fB\-fdec\fR also sets \fB\-fd\-lines\-as\-comments\fR.
- .IP "\fB\-fdec\-structure\fR" 4
- .IX Item "-fdec-structure"
- Enable \s-1DEC \s0\f(CW\*(C`STRUCTURE\*(C'\fR and \f(CW\*(C`RECORD\*(C'\fR as well as \f(CW\*(C`UNION\*(C'\fR,
- \&\f(CW\*(C`MAP\*(C'\fR, and dot ('.') as a member separator (in addition to '%'). This is
- provided for compatibility only; Fortran 90 derived types should be used
- instead where possible.
- .IP "\fB\-fdec\-intrinsic\-ints\fR" 4
- .IX Item "-fdec-intrinsic-ints"
- Enable B/I/J/K kind variants of existing integer functions (e.g. \s-1BIAND, IIAND,
- JIAND,\s0 etc...). For a complete list of intrinsics see the full documentation.
- .IP "\fB\-fdec\-math\fR" 4
- .IX Item "-fdec-math"
- Enable legacy math intrinsics such as \s-1COTAN\s0 and degree-valued trigonometric
- functions (e.g. \s-1TAND, ATAND,\s0 etc...) for compatability with older code.
- .IP "\fB\-fdec\-static\fR" 4
- .IX Item "-fdec-static"
- Enable DEC-style \s-1STATIC\s0 and \s-1AUTOMATIC\s0 attributes to explicitly specify
- the storage of variables and other objects.
- .IP "\fB\-fdollar\-ok\fR" 4
- .IX Item "-fdollar-ok"
- Allow \fB$\fR as a valid non-first character in a symbol name. Symbols
- that start with \fB$\fR are rejected since it is unclear which rules to
- apply to implicit typing as different vendors implement different rules.
- Using \fB$\fR in \f(CW\*(C`IMPLICIT\*(C'\fR statements is also rejected.
- .IP "\fB\-fbackslash\fR" 4
- .IX Item "-fbackslash"
- Change the interpretation of backslashes in string literals from a single
- backslash character to \*(L"C\-style\*(R" escape characters. The following
- combinations are expanded \f(CW\*(C`\ea\*(C'\fR, \f(CW\*(C`\eb\*(C'\fR, \f(CW\*(C`\ef\*(C'\fR, \f(CW\*(C`\en\*(C'\fR,
- \&\f(CW\*(C`\er\*(C'\fR, \f(CW\*(C`\et\*(C'\fR, \f(CW\*(C`\ev\*(C'\fR, \f(CW\*(C`\e\e\*(C'\fR, and \f(CW\*(C`\e0\*(C'\fR to the \s-1ASCII\s0
- characters alert, backspace, form feed, newline, carriage return,
- horizontal tab, vertical tab, backslash, and \s-1NUL,\s0 respectively.
- Additionally, \f(CW\*(C`\ex\*(C'\fR\fInn\fR, \f(CW\*(C`\eu\*(C'\fR\fInnnn\fR and
- \&\f(CW\*(C`\eU\*(C'\fR\fInnnnnnnn\fR (where each \fIn\fR is a hexadecimal digit) are
- translated into the Unicode characters corresponding to the specified code
- points. All other combinations of a character preceded by \e are
- unexpanded.
- .IP "\fB\-fmodule\-private\fR" 4
- .IX Item "-fmodule-private"
- Set the default accessibility of module entities to \f(CW\*(C`PRIVATE\*(C'\fR.
- Use-associated entities will not be accessible unless they are explicitly
- declared as \f(CW\*(C`PUBLIC\*(C'\fR.
- .IP "\fB\-ffixed\-line\-length\-\fR\fIn\fR" 4
- .IX Item "-ffixed-line-length-n"
- Set column after which characters are ignored in typical fixed-form
- lines in the source file, and through which spaces are assumed (as
- if padded to that length) after the ends of short fixed-form lines.
- .Sp
- Popular values for \fIn\fR include 72 (the
- standard and the default), 80 (card image), and 132 (corresponding
- to \*(L"extended-source\*(R" options in some popular compilers).
- \&\fIn\fR may also be \fBnone\fR, meaning that the entire line is meaningful
- and that continued character constants never have implicit spaces appended
- to them to fill out the line.
- \&\fB\-ffixed\-line\-length\-0\fR means the same thing as
- \&\fB\-ffixed\-line\-length\-none\fR.
- .IP "\fB\-ffree\-line\-length\-\fR\fIn\fR" 4
- .IX Item "-ffree-line-length-n"
- Set column after which characters are ignored in typical free-form
- lines in the source file. The default value is 132.
- \&\fIn\fR may be \fBnone\fR, meaning that the entire line is meaningful.
- \&\fB\-ffree\-line\-length\-0\fR means the same thing as
- \&\fB\-ffree\-line\-length\-none\fR.
- .IP "\fB\-fmax\-identifier\-length=\fR\fIn\fR" 4
- .IX Item "-fmax-identifier-length=n"
- Specify the maximum allowed identifier length. Typical values are
- 31 (Fortran 95) and 63 (Fortran 2003 and Fortran 2008).
- .IP "\fB\-fimplicit\-none\fR" 4
- .IX Item "-fimplicit-none"
- Specify that no implicit typing is allowed, unless overridden by explicit
- \&\f(CW\*(C`IMPLICIT\*(C'\fR statements. This is the equivalent of adding
- \&\f(CW\*(C`implicit none\*(C'\fR to the start of every procedure.
- .IP "\fB\-fcray\-pointer\fR" 4
- .IX Item "-fcray-pointer"
- Enable the Cray pointer extension, which provides C\-like pointer
- functionality.
- .IP "\fB\-fopenacc\fR" 4
- .IX Item "-fopenacc"
- Enable the OpenACC extensions. This includes OpenACC \f(CW\*(C`!$acc\*(C'\fR
- directives in free form and \f(CW\*(C`c$acc\*(C'\fR, \f(CW*$acc\fR and
- \&\f(CW\*(C`!$acc\*(C'\fR directives in fixed form, \f(CW\*(C`!$\*(C'\fR conditional
- compilation sentinels in free form and \f(CW\*(C`c$\*(C'\fR, \f(CW\*(C`*$\*(C'\fR and
- \&\f(CW\*(C`!$\*(C'\fR sentinels in fixed form, and when linking arranges for the
- OpenACC runtime library to be linked in.
- .Sp
- Note that this is an experimental feature, incomplete, and subject to
- change in future versions of \s-1GCC. \s0 See
- <\fBhttps://gcc.gnu.org/wiki/OpenACC\fR> for more information.
- .IP "\fB\-fopenmp\fR" 4
- .IX Item "-fopenmp"
- Enable the OpenMP extensions. This includes OpenMP \f(CW\*(C`!$omp\*(C'\fR directives
- in free form
- and \f(CW\*(C`c$omp\*(C'\fR, \f(CW*$omp\fR and \f(CW\*(C`!$omp\*(C'\fR directives in fixed form,
- \&\f(CW\*(C`!$\*(C'\fR conditional compilation sentinels in free form
- and \f(CW\*(C`c$\*(C'\fR, \f(CW\*(C`*$\*(C'\fR and \f(CW\*(C`!$\*(C'\fR sentinels in fixed form,
- and when linking arranges for the OpenMP runtime library to be linked
- in. The option \fB\-fopenmp\fR implies \fB\-frecursive\fR.
- .IP "\fB\-fno\-range\-check\fR" 4
- .IX Item "-fno-range-check"
- Disable range checking on results of simplification of constant
- expressions during compilation. For example, \s-1GNU\s0 Fortran will give
- an error at compile time when simplifying \f(CW\*(C`a = 1. / 0\*(C'\fR.
- With this option, no error will be given and \f(CW\*(C`a\*(C'\fR will be assigned
- the value \f(CW\*(C`+Infinity\*(C'\fR. If an expression evaluates to a value
- outside of the relevant range of [\f(CW\*(C`\-HUGE()\*(C'\fR:\f(CW\*(C`HUGE()\*(C'\fR],
- then the expression will be replaced by \f(CW\*(C`\-Inf\*(C'\fR or \f(CW\*(C`+Inf\*(C'\fR
- as appropriate.
- Similarly, \f(CW\*(C`DATA i/Z\*(AqFFFFFFFF\*(Aq/\*(C'\fR will result in an integer overflow
- on most systems, but with \fB\-fno\-range\-check\fR the value will
- \&\*(L"wrap around\*(R" and \f(CW\*(C`i\*(C'\fR will be initialized to \-1 instead.
- .IP "\fB\-fdefault\-integer\-8\fR" 4
- .IX Item "-fdefault-integer-8"
- Set the default integer and logical types to an 8 byte wide type. This option
- also affects the kind of integer constants like \f(CW42\fR. Unlike
- \&\fB\-finteger\-4\-integer\-8\fR, it does not promote variables with explicit
- kind declaration.
- .IP "\fB\-fdefault\-real\-8\fR" 4
- .IX Item "-fdefault-real-8"
- Set the default real type to an 8 byte wide type. This option also affects
- the kind of non-double real constants like \f(CW1.0\fR, and does promote
- the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR to 16 bytes if possible, unless
- \&\f(CW\*(C`\-fdefault\-double\-8\*(C'\fR is given, too. Unlike \fB\-freal\-4\-real\-8\fR,
- it does not promote variables with explicit kind declaration.
- .IP "\fB\-fdefault\-double\-8\fR" 4
- .IX Item "-fdefault-double-8"
- Set the \f(CW\*(C`DOUBLE PRECISION\*(C'\fR type to an 8 byte wide type. Do nothing if this
- is already the default. If \fB\-fdefault\-real\-8\fR is given,
- \&\f(CW\*(C`DOUBLE PRECISION\*(C'\fR would instead be promoted to 16 bytes if possible, and
- \&\fB\-fdefault\-double\-8\fR can be used to prevent this. The kind of real
- constants like \f(CW\*(C`1.d0\*(C'\fR will not be changed by \fB\-fdefault\-real\-8\fR
- though, so also \fB\-fdefault\-double\-8\fR does not affect it.
- .IP "\fB\-finteger\-4\-integer\-8\fR" 4
- .IX Item "-finteger-4-integer-8"
- Promote all \f(CW\*(C`INTEGER(KIND=4)\*(C'\fR entities to an \f(CW\*(C`INTEGER(KIND=8)\*(C'\fR
- entities. If \f(CW\*(C`KIND=8\*(C'\fR is unavailable, then an error will be issued.
- This option should be used with care and may not be suitable for your codes.
- Areas of possible concern include calls to external procedures,
- alignment in \f(CW\*(C`EQUIVALENCE\*(C'\fR and/or \f(CW\*(C`COMMON\*(C'\fR, generic interfaces,
- \&\s-1BOZ\s0 literal constant conversion, and I/O. Inspection of the intermediate
- representation of the translated Fortran code, produced by
- \&\fB\-fdump\-tree\-original\fR, is suggested.
- .IP "\fB\-freal\-4\-real\-8\fR" 4
- .IX Item "-freal-4-real-8"
- .PD 0
- .IP "\fB\-freal\-4\-real\-10\fR" 4
- .IX Item "-freal-4-real-10"
- .IP "\fB\-freal\-4\-real\-16\fR" 4
- .IX Item "-freal-4-real-16"
- .IP "\fB\-freal\-8\-real\-4\fR" 4
- .IX Item "-freal-8-real-4"
- .IP "\fB\-freal\-8\-real\-10\fR" 4
- .IX Item "-freal-8-real-10"
- .IP "\fB\-freal\-8\-real\-16\fR" 4
- .IX Item "-freal-8-real-16"
- .PD
- Promote all \f(CW\*(C`REAL(KIND=M)\*(C'\fR entities to \f(CW\*(C`REAL(KIND=N)\*(C'\fR entities.
- If \f(CW\*(C`REAL(KIND=N)\*(C'\fR is unavailable, then an error will be issued.
- All other real kind types are unaffected by this option.
- These options should be used with care and may not be suitable for your
- codes. Areas of possible concern include calls to external procedures,
- alignment in \f(CW\*(C`EQUIVALENCE\*(C'\fR and/or \f(CW\*(C`COMMON\*(C'\fR, generic interfaces,
- \&\s-1BOZ\s0 literal constant conversion, and I/O. Inspection of the intermediate
- representation of the translated Fortran code, produced by
- \&\fB\-fdump\-tree\-original\fR, is suggested.
- .IP "\fB\-std=\fR\fIstd\fR" 4
- .IX Item "-std=std"
- Specify the standard to which the program is expected to conform, which
- may be one of \fBf95\fR, \fBf2003\fR, \fBf2008\fR, \fBgnu\fR, or
- \&\fBlegacy\fR. The default value for \fIstd\fR is \fBgnu\fR, which
- specifies a superset of the Fortran 95 standard that includes all of the
- extensions supported by \s-1GNU\s0 Fortran, although warnings will be given for
- obsolete extensions not recommended for use in new code. The
- \&\fBlegacy\fR value is equivalent but without the warnings for obsolete
- extensions, and may be useful for old non-standard programs. The
- \&\fBf95\fR, \fBf2003\fR and \fBf2008\fR values specify strict
- conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards,
- respectively; errors are given for all extensions beyond the relevant
- language standard, and warnings are given for the Fortran 77 features
- that are permitted but obsolescent in later standards. \fB\-std=f2008ts\fR
- allows the Fortran 2008 standard including the additions of the
- Technical Specification (\s-1TS\s0) 29113 on Further Interoperability of Fortran
- with C and \s-1TS 18508\s0 on Additional Parallel Features in Fortran.
- .IP "\fB\-ftest\-forall\-temp\fR" 4
- .IX Item "-ftest-forall-temp"
- Enhance test coverage by forcing most forall assignments to use temporary.
- .SS "Enable and customize preprocessing"
- .IX Subsection "Enable and customize preprocessing"
- Preprocessor related options. See section
- \&\fBPreprocessing and conditional compilation\fR for more detailed
- information on preprocessing in \fBgfortran\fR.
- .IP "\fB\-cpp\fR" 4
- .IX Item "-cpp"
- .PD 0
- .IP "\fB\-nocpp\fR" 4
- .IX Item "-nocpp"
- .PD
- Enable preprocessing. The preprocessor is automatically invoked if
- the file extension is \fI.fpp\fR, \fI.FPP\fR, \fI.F\fR, \fI.FOR\fR,
- \&\fI.FTN\fR, \fI.F90\fR, \fI.F95\fR, \fI.F03\fR or \fI.F08\fR. Use
- this option to manually enable preprocessing of any kind of Fortran file.
- .Sp
- To disable preprocessing of files with any of the above listed extensions,
- use the negative form: \fB\-nocpp\fR.
- .Sp
- The preprocessor is run in traditional mode. Any restrictions of the
- file-format, especially the limits on line length, apply for
- preprocessed output as well, so it might be advisable to use the
- \&\fB\-ffree\-line\-length\-none\fR or \fB\-ffixed\-line\-length\-none\fR
- options.
- .IP "\fB\-dM\fR" 4
- .IX Item "-dM"
- Instead of the normal output, generate a list of \f(CW\*(Aq#define\*(Aq\fR
- directives for all the macros defined during the execution of the
- preprocessor, including predefined macros. This gives you a way
- of finding out what is predefined in your version of the preprocessor.
- Assuming you have no file \fIfoo.f90\fR, the command
- .Sp
- .Vb 1
- \& touch foo.f90; gfortran \-cpp \-E \-dM foo.f90
- .Ve
- .Sp
- will show all the predefined macros.
- .IP "\fB\-dD\fR" 4
- .IX Item "-dD"
- Like \fB\-dM\fR except in two respects: it does not include the
- predefined macros, and it outputs both the \f(CW\*(C`#define\*(C'\fR directives
- and the result of preprocessing. Both kinds of output go to the
- standard output file.
- .IP "\fB\-dN\fR" 4
- .IX Item "-dN"
- Like \fB\-dD\fR, but emit only the macro names, not their expansions.
- .IP "\fB\-dU\fR" 4
- .IX Item "-dU"
- Like \fBdD\fR except that only macros that are expanded, or whose
- definedness is tested in preprocessor directives, are output; the
- output is delayed until the use or test of the macro; and \f(CW\*(Aq#undef\*(Aq\fR
- directives are also output for macros tested but undefined at the time.
- .IP "\fB\-dI\fR" 4
- .IX Item "-dI"
- Output \f(CW\*(Aq#include\*(Aq\fR directives in addition to the result
- of preprocessing.
- .IP "\fB\-fworking\-directory\fR" 4
- .IX Item "-fworking-directory"
- Enable generation of linemarkers in the preprocessor output that will
- let the compiler know the current working directory at the time of
- preprocessing. When this option is enabled, the preprocessor will emit,
- after the initial linemarker, a second linemarker with the current
- working directory followed by two slashes. \s-1GCC\s0 will use this directory,
- when it is present in the preprocessed input, as the directory emitted
- as the current working directory in some debugging information formats.
- This option is implicitly enabled if debugging information is enabled,
- but this can be inhibited with the negated form
- \&\fB\-fno\-working\-directory\fR. If the \fB\-P\fR flag is present
- in the command line, this option has no effect, since no \f(CW\*(C`#line\*(C'\fR
- directives are emitted whatsoever.
- .IP "\fB\-idirafter\fR \fIdir\fR" 4
- .IX Item "-idirafter dir"
- Search \fIdir\fR for include files, but do it after all directories
- specified with \fB\-I\fR and the standard system directories have
- been exhausted. \fIdir\fR is treated as a system include directory.
- If dir begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced by
- the sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
- .IP "\fB\-imultilib\fR \fIdir\fR" 4
- .IX Item "-imultilib dir"
- Use \fIdir\fR as a subdirectory of the directory containing target-specific
- \&\*(C+ headers.
- .IP "\fB\-iprefix\fR \fIprefix\fR" 4
- .IX Item "-iprefix prefix"
- Specify \fIprefix\fR as the prefix for subsequent \fB\-iwithprefix\fR
- options. If the \fIprefix\fR represents a directory, you should include
- the final \f(CW\*(Aq/\*(Aq\fR.
- .IP "\fB\-isysroot\fR \fIdir\fR" 4
- .IX Item "-isysroot dir"
- This option is like the \fB\-\-sysroot\fR option, but applies only to
- header files. See the \fB\-\-sysroot\fR option for more information.
- .IP "\fB\-iquote\fR \fIdir\fR" 4
- .IX Item "-iquote dir"
- Search \fIdir\fR only for header files requested with \f(CW\*(C`#include "file"\*(C'\fR;
- they are not searched for \f(CW\*(C`#include <file>\*(C'\fR, before all directories
- specified by \fB\-I\fR and before the standard system directories. If
- \&\fIdir\fR begins with \f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced by the
- sysroot prefix; see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
- .IP "\fB\-isystem\fR \fIdir\fR" 4
- .IX Item "-isystem dir"
- Search \fIdir\fR for header files, after all directories specified by
- \&\fB\-I\fR but before the standard system directories. Mark it as a
- system directory, so that it gets the same special treatment as is
- applied to the standard system directories. If \fIdir\fR begins with
- \&\f(CW\*(C`=\*(C'\fR, then the \f(CW\*(C`=\*(C'\fR will be replaced by the sysroot prefix;
- see \fB\-\-sysroot\fR and \fB\-isysroot\fR.
- .IP "\fB\-nostdinc\fR" 4
- .IX Item "-nostdinc"
- Do not search the standard system directories for header files. Only
- the directories you have specified with \fB\-I\fR options (and the
- directory of the current file, if appropriate) are searched.
- .IP "\fB\-undef\fR" 4
- .IX Item "-undef"
- Do not predefine any system-specific or GCC-specific macros.
- The standard predefined macros remain defined.
- .IP "\fB\-A\fR\fIpredicate\fR\fB=\fR\fIanswer\fR" 4
- .IX Item "-Apredicate=answer"
- Make an assertion with the predicate \fIpredicate\fR and answer \fIanswer\fR.
- This form is preferred to the older form \-A predicate(answer), which is still
- supported, because it does not use shell special characters.
- .IP "\fB\-A\-\fR\fIpredicate\fR\fB=\fR\fIanswer\fR" 4
- .IX Item "-A-predicate=answer"
- Cancel an assertion with the predicate \fIpredicate\fR and answer \fIanswer\fR.
- .IP "\fB\-C\fR" 4
- .IX Item "-C"
- Do not discard comments. All comments are passed through to the output
- file, except for comments in processed directives, which are deleted
- along with the directive.
- .Sp
- You should be prepared for side effects when using \fB\-C\fR; it causes
- the preprocessor to treat comments as tokens in their own right. For example,
- comments appearing at the start of what would be a directive line have the
- effect of turning that line into an ordinary source line, since the first
- token on the line is no longer a \f(CW\*(Aq#\*(Aq\fR.
- .Sp
- Warning: this currently handles C\-Style comments only. The preprocessor
- does not yet recognize Fortran-style comments.
- .IP "\fB\-CC\fR" 4
- .IX Item "-CC"
- Do not discard comments, including during macro expansion. This is like
- \&\fB\-C\fR, except that comments contained within macros are also passed
- through to the output file where the macro is expanded.
- .Sp
- In addition to the side-effects of the \fB\-C\fR option, the \fB\-CC\fR
- option causes all \*(C+\-style comments inside a macro to be converted to C\-style
- comments. This is to prevent later use of that macro from inadvertently
- commenting out the remainder of the source line. The \fB\-CC\fR option
- is generally used to support lint comments.
- .Sp
- Warning: this currently handles C\- and \*(C+\-Style comments only. The
- preprocessor does not yet recognize Fortran-style comments.
- .IP "\fB\-D\fR\fIname\fR" 4
- .IX Item "-Dname"
- Predefine name as a macro, with definition \f(CW1\fR.
- .IP "\fB\-D\fR\fIname\fR\fB=\fR\fIdefinition\fR" 4
- .IX Item "-Dname=definition"
- The contents of \fIdefinition\fR are tokenized and processed as if they
- appeared during translation phase three in a \f(CW\*(Aq#define\*(Aq\fR directive.
- In particular, the definition will be truncated by embedded newline
- characters.
- .Sp
- If you are invoking the preprocessor from a shell or shell-like program
- you may need to use the shell's quoting syntax to protect characters such
- as spaces that have a meaning in the shell syntax.
- .Sp
- If you wish to define a function-like macro on the command line, write
- its argument list with surrounding parentheses before the equals sign
- (if any). Parentheses are meaningful to most shells, so you will need
- to quote the option. With sh and csh, \f(CW\*(C`\-D\*(Aqname(args...)=definition\*(Aq\*(C'\fR
- works.
- .Sp
- \&\fB\-D\fR and \fB\-U\fR options are processed in the order they are
- given on the command line. All \-imacros file and \-include file options
- are processed after all \-D and \-U options.
- .IP "\fB\-H\fR" 4
- .IX Item "-H"
- Print the name of each header file used, in addition to other normal
- activities. Each name is indented to show how deep in the \f(CW\*(Aq#include\*(Aq\fR
- stack it is.
- .IP "\fB\-P\fR" 4
- .IX Item "-P"
- Inhibit generation of linemarkers in the output from the preprocessor.
- This might be useful when running the preprocessor on something that
- is not C code, and will be sent to a program which might be confused
- by the linemarkers.
- .IP "\fB\-U\fR\fIname\fR" 4
- .IX Item "-Uname"
- Cancel any previous definition of \fIname\fR, either built in or provided
- with a \fB\-D\fR option.
- .SS "Options to request or suppress errors and warnings"
- .IX Subsection "Options to request or suppress errors and warnings"
- Errors are diagnostic messages that report that the \s-1GNU\s0 Fortran compiler
- cannot compile the relevant piece of source code. The compiler will
- continue to process the program in an attempt to report further errors
- to aid in debugging, but will not produce any compiled output.
- .PP
- Warnings are diagnostic messages that report constructions which
- are not inherently erroneous but which are risky or suggest there is
- likely to be a bug in the program. Unless \fB\-Werror\fR is specified,
- they do not prevent compilation of the program.
- .PP
- You can request many specific warnings with options beginning \fB\-W\fR,
- for example \fB\-Wimplicit\fR to request warnings on implicit
- declarations. Each of these specific warning options also has a
- negative form beginning \fB\-Wno\-\fR to turn off warnings;
- for example, \fB\-Wno\-implicit\fR. This manual lists only one of the
- two forms, whichever is not the default.
- .PP
- These options control the amount and kinds of errors and warnings produced
- by \s-1GNU\s0 Fortran:
- .IP "\fB\-fmax\-errors=\fR\fIn\fR" 4
- .IX Item "-fmax-errors=n"
- Limits the maximum number of error messages to \fIn\fR, at which point
- \&\s-1GNU\s0 Fortran bails out rather than attempting to continue processing the
- source code. If \fIn\fR is 0, there is no limit on the number of error
- messages produced.
- .IP "\fB\-fsyntax\-only\fR" 4
- .IX Item "-fsyntax-only"
- Check the code for syntax errors, but do not actually compile it. This
- will generate module files for each module present in the code, but no
- other output file.
- .IP "\fB\-Wpedantic\fR" 4
- .IX Item "-Wpedantic"
- .PD 0
- .IP "\fB\-pedantic\fR" 4
- .IX Item "-pedantic"
- .PD
- Issue warnings for uses of extensions to Fortran 95.
- \&\fB\-pedantic\fR also applies to C\-language constructs where they
- occur in \s-1GNU\s0 Fortran source files, such as use of \fB\ee\fR in a
- character constant within a directive like \f(CW\*(C`#include\*(C'\fR.
- .Sp
- Valid Fortran 95 programs should compile properly with or without
- this option.
- However, without this option, certain \s-1GNU\s0 extensions and traditional
- Fortran features are supported as well.
- With this option, many of them are rejected.
- .Sp
- Some users try to use \fB\-pedantic\fR to check programs for conformance.
- They soon find that it does not do quite what they want\-\-\-it finds some
- nonstandard practices, but not all.
- However, improvements to \s-1GNU\s0 Fortran in this area are welcome.
- .Sp
- This should be used in conjunction with \fB\-std=f95\fR,
- \&\fB\-std=f2003\fR or \fB\-std=f2008\fR.
- .IP "\fB\-pedantic\-errors\fR" 4
- .IX Item "-pedantic-errors"
- Like \fB\-pedantic\fR, except that errors are produced rather than
- warnings.
- .IP "\fB\-Wall\fR" 4
- .IX Item "-Wall"
- Enables commonly used warning options pertaining to usage that
- we recommend avoiding and that we believe are easy to avoid.
- This currently includes \fB\-Waliasing\fR, \fB\-Wampersand\fR,
- \&\fB\-Wconversion\fR, \fB\-Wsurprising\fR, \fB\-Wc\-binding\-type\fR,
- \&\fB\-Wintrinsics\-std\fR, \fB\-Wtabs\fR, \fB\-Wintrinsic\-shadow\fR,
- \&\fB\-Wline\-truncation\fR, \fB\-Wtarget\-lifetime\fR,
- \&\fB\-Winteger\-division\fR, \fB\-Wreal\-q\-constant\fR, \fB\-Wunused\fR
- and \fB\-Wundefined\-do\-loop\fR.
- .IP "\fB\-Waliasing\fR" 4
- .IX Item "-Waliasing"
- Warn about possible aliasing of dummy arguments. Specifically, it warns
- if the same actual argument is associated with a dummy argument with
- \&\f(CW\*(C`INTENT(IN)\*(C'\fR and a dummy argument with \f(CW\*(C`INTENT(OUT)\*(C'\fR in a call
- with an explicit interface.
- .Sp
- The following example will trigger the warning.
- .Sp
- .Vb 7
- \& interface
- \& subroutine bar(a,b)
- \& integer, intent(in) :: a
- \& integer, intent(out) :: b
- \& end subroutine
- \& end interface
- \& integer :: a
- \&
- \& call bar(a,a)
- .Ve
- .IP "\fB\-Wampersand\fR" 4
- .IX Item "-Wampersand"
- Warn about missing ampersand in continued character constants. The warning is
- given with \fB\-Wampersand\fR, \fB\-pedantic\fR, \fB\-std=f95\fR,
- \&\fB\-std=f2003\fR and \fB\-std=f2008\fR. Note: With no ampersand
- given in a continued character constant, \s-1GNU\s0 Fortran assumes continuation
- at the first non-comment, non-whitespace character after the ampersand
- that initiated the continuation.
- .IP "\fB\-Wargument\-mismatch\fR" 4
- .IX Item "-Wargument-mismatch"
- Warn about type, rank, and other mismatches between formal parameters and actual
- arguments to functions and subroutines. These warnings are recommended and
- thus enabled by default.
- .IP "\fB\-Warray\-temporaries\fR" 4
- .IX Item "-Warray-temporaries"
- Warn about array temporaries generated by the compiler. The information
- generated by this warning is sometimes useful in optimization, in order to
- avoid such temporaries.
- .IP "\fB\-Wc\-binding\-type\fR" 4
- .IX Item "-Wc-binding-type"
- Warn if the a variable might not be C interoperable. In particular, warn if
- the variable has been declared using an intrinsic type with default kind
- instead of using a kind parameter defined for C interoperability in the
- intrinsic \f(CW\*(C`ISO_C_Binding\*(C'\fR module. This option is implied by
- \&\fB\-Wall\fR.
- .IP "\fB\-Wcharacter\-truncation\fR" 4
- .IX Item "-Wcharacter-truncation"
- Warn when a character assignment will truncate the assigned string.
- .IP "\fB\-Wline\-truncation\fR" 4
- .IX Item "-Wline-truncation"
- Warn when a source code line will be truncated. This option is
- implied by \fB\-Wall\fR. For free-form source code, the default is
- \&\fB\-Werror=line\-truncation\fR such that truncations are reported as
- error.
- .IP "\fB\-Wconversion\fR" 4
- .IX Item "-Wconversion"
- Warn about implicit conversions that are likely to change the value of
- the expression after conversion. Implied by \fB\-Wall\fR.
- .IP "\fB\-Wconversion\-extra\fR" 4
- .IX Item "-Wconversion-extra"
- Warn about implicit conversions between different types and kinds. This
- option does \fInot\fR imply \fB\-Wconversion\fR.
- .IP "\fB\-Wextra\fR" 4
- .IX Item "-Wextra"
- Enables some warning options for usages of language features which
- may be problematic. This currently includes \fB\-Wcompare\-reals\fR
- and \fB\-Wunused\-parameter\fR.
- .IP "\fB\-Wimplicit\-interface\fR" 4
- .IX Item "-Wimplicit-interface"
- Warn if a procedure is called without an explicit interface.
- Note this only checks that an explicit interface is present. It does not
- check that the declared interfaces are consistent across program units.
- .IP "\fB\-Wimplicit\-procedure\fR" 4
- .IX Item "-Wimplicit-procedure"
- Warn if a procedure is called that has neither an explicit interface
- nor has been declared as \f(CW\*(C`EXTERNAL\*(C'\fR.
- .IP "\fB\-Winteger\-division\fR" 4
- .IX Item "-Winteger-division"
- Warn if a constant integer division truncates it result.
- As an example, 3/5 evaluates to 0.
- .IP "\fB\-Wintrinsics\-std\fR" 4
- .IX Item "-Wintrinsics-std"
- Warn if \fBgfortran\fR finds a procedure named like an intrinsic not
- available in the currently selected standard (with \fB\-std\fR) and treats
- it as \f(CW\*(C`EXTERNAL\*(C'\fR procedure because of this. \fB\-fall\-intrinsics\fR can
- be used to never trigger this behavior and always link to the intrinsic
- regardless of the selected standard.
- .IP "\fB\-Wreal\-q\-constant\fR" 4
- .IX Item "-Wreal-q-constant"
- Produce a warning if a real-literal-constant contains a \f(CW\*(C`q\*(C'\fR
- exponent-letter.
- .IP "\fB\-Wsurprising\fR" 4
- .IX Item "-Wsurprising"
- Produce a warning when \*(L"suspicious\*(R" code constructs are encountered.
- While technically legal these usually indicate that an error has been made.
- .Sp
- This currently produces a warning under the following circumstances:
- .RS 4
- .IP "*" 4
- An \s-1INTEGER SELECT\s0 construct has a \s-1CASE\s0 that can never be matched as its
- lower value is greater than its upper value.
- .IP "*" 4
- A \s-1LOGICAL SELECT\s0 construct has three \s-1CASE\s0 statements.
- .IP "*" 4
- A \s-1TRANSFER\s0 specifies a source that is shorter than the destination.
- .IP "*" 4
- The type of a function result is declared more than once with the same type. If
- \&\fB\-pedantic\fR or standard-conforming mode is enabled, this is an error.
- .IP "*" 4
- A \f(CW\*(C`CHARACTER\*(C'\fR variable is declared with negative length.
- .RE
- .RS 4
- .RE
- .IP "\fB\-Wtabs\fR" 4
- .IX Item "-Wtabs"
- By default, tabs are accepted as whitespace, but tabs are not members
- of the Fortran Character Set. For continuation lines, a tab followed
- by a digit between 1 and 9 is supported. \fB\-Wtabs\fR will cause
- a warning to be issued if a tab is encountered. Note, \fB\-Wtabs\fR
- is active for \fB\-pedantic\fR, \fB\-std=f95\fR, \fB\-std=f2003\fR,
- \&\fB\-std=f2008\fR, \fB\-std=f2008ts\fR and \fB\-Wall\fR.
- .IP "\fB\-Wundefined\-do\-loop\fR" 4
- .IX Item "-Wundefined-do-loop"
- Warn if a \s-1DO\s0 loop with step either 1 or \-1 yields an underflow or an overflow
- during iteration of an induction variable of the loop.
- This option is implied by \fB\-Wall\fR.
- .IP "\fB\-Wunderflow\fR" 4
- .IX Item "-Wunderflow"
- Produce a warning when numerical constant expressions are
- encountered, which yield an \s-1UNDERFLOW\s0 during compilation. Enabled by default.
- .IP "\fB\-Wintrinsic\-shadow\fR" 4
- .IX Item "-Wintrinsic-shadow"
- Warn if a user-defined procedure or module procedure has the same name as an
- intrinsic; in this case, an explicit interface or \f(CW\*(C`EXTERNAL\*(C'\fR or
- \&\f(CW\*(C`INTRINSIC\*(C'\fR declaration might be needed to get calls later resolved to
- the desired intrinsic/procedure. This option is implied by \fB\-Wall\fR.
- .IP "\fB\-Wuse\-without\-only\fR" 4
- .IX Item "-Wuse-without-only"
- Warn if a \f(CW\*(C`USE\*(C'\fR statement has no \f(CW\*(C`ONLY\*(C'\fR qualifier and
- thus implicitly imports all public entities of the used module.
- .IP "\fB\-Wunused\-dummy\-argument\fR" 4
- .IX Item "-Wunused-dummy-argument"
- Warn about unused dummy arguments. This option is implied by \fB\-Wall\fR.
- .IP "\fB\-Wunused\-parameter\fR" 4
- .IX Item "-Wunused-parameter"
- Contrary to \fBgcc\fR's meaning of \fB\-Wunused\-parameter\fR,
- \&\fBgfortran\fR's implementation of this option does not warn
- about unused dummy arguments (see \fB\-Wunused\-dummy\-argument\fR),
- but about unused \f(CW\*(C`PARAMETER\*(C'\fR values. \fB\-Wunused\-parameter\fR
- is implied by \fB\-Wextra\fR if also \fB\-Wunused\fR or
- \&\fB\-Wall\fR is used.
- .IP "\fB\-Walign\-commons\fR" 4
- .IX Item "-Walign-commons"
- By default, \fBgfortran\fR warns about any occasion of variables being
- padded for proper alignment inside a \f(CW\*(C`COMMON\*(C'\fR block. This warning can be turned
- off via \fB\-Wno\-align\-commons\fR. See also \fB\-falign\-commons\fR.
- .IP "\fB\-Wfunction\-elimination\fR" 4
- .IX Item "-Wfunction-elimination"
- Warn if any calls to functions are eliminated by the optimizations
- enabled by the \fB\-ffrontend\-optimize\fR option.
- .IP "\fB\-Wrealloc\-lhs\fR" 4
- .IX Item "-Wrealloc-lhs"
- Warn when the compiler might insert code to for allocation or reallocation of
- an allocatable array variable of intrinsic type in intrinsic assignments. In
- hot loops, the Fortran 2003 reallocation feature may reduce the performance.
- If the array is already allocated with the correct shape, consider using a
- whole-array array-spec (e.g. \f(CW\*(C`(:,:,:)\*(C'\fR) for the variable on the left-hand
- side to prevent the reallocation check. Note that in some cases the warning
- is shown, even if the compiler will optimize reallocation checks away. For
- instance, when the right-hand side contains the same variable multiplied by
- a scalar. See also \fB\-frealloc\-lhs\fR.
- .IP "\fB\-Wrealloc\-lhs\-all\fR" 4
- .IX Item "-Wrealloc-lhs-all"
- Warn when the compiler inserts code to for allocation or reallocation of an
- allocatable variable; this includes scalars and derived types.
- .IP "\fB\-Wcompare\-reals\fR" 4
- .IX Item "-Wcompare-reals"
- Warn when comparing real or complex types for equality or inequality.
- This option is implied by \fB\-Wextra\fR.
- .IP "\fB\-Wtarget\-lifetime\fR" 4
- .IX Item "-Wtarget-lifetime"
- Warn if the pointer in a pointer assignment might be longer than the its
- target. This option is implied by \fB\-Wall\fR.
- .IP "\fB\-Wzerotrip\fR" 4
- .IX Item "-Wzerotrip"
- Warn if a \f(CW\*(C`DO\*(C'\fR loop is known to execute zero times at compile
- time. This option is implied by \fB\-Wall\fR.
- .IP "\fB\-Werror\fR" 4
- .IX Item "-Werror"
- Turns all warnings into errors.
- .PP
- Some of these have no effect when compiling programs written in Fortran.
- .SS "Options for debugging your program or \s-1GNU\s0 Fortran"
- .IX Subsection "Options for debugging your program or GNU Fortran"
- \&\s-1GNU\s0 Fortran has various special options that are used for debugging
- either your program or the \s-1GNU\s0 Fortran compiler.
- .IP "\fB\-fdump\-fortran\-original\fR" 4
- .IX Item "-fdump-fortran-original"
- Output the internal parse tree after translating the source program
- into internal representation. Only really useful for debugging the
- \&\s-1GNU\s0 Fortran compiler itself.
- .IP "\fB\-fdump\-fortran\-optimized\fR" 4
- .IX Item "-fdump-fortran-optimized"
- Output the parse tree after front-end optimization. Only really
- useful for debugging the \s-1GNU\s0 Fortran compiler itself.
- .IP "\fB\-fdump\-parse\-tree\fR" 4
- .IX Item "-fdump-parse-tree"
- Output the internal parse tree after translating the source program
- into internal representation. Only really useful for debugging the
- \&\s-1GNU\s0 Fortran compiler itself. This option is deprecated; use
- \&\f(CW\*(C`\-fdump\-fortran\-original\*(C'\fR instead.
- .IP "\fB\-ffpe\-trap=\fR\fIlist\fR" 4
- .IX Item "-ffpe-trap=list"
- Specify a list of floating point exception traps to enable. On most
- systems, if a floating point exception occurs and the trap for that
- exception is enabled, a \s-1SIGFPE\s0 signal will be sent and the program
- being aborted, producing a core file useful for debugging. \fIlist\fR
- is a (possibly empty) comma-separated list of the following
- exceptions: \fBinvalid\fR (invalid floating point operation, such as
- \&\f(CW\*(C`SQRT(\-1.0)\*(C'\fR), \fBzero\fR (division by zero), \fBoverflow\fR
- (overflow in a floating point operation), \fBunderflow\fR (underflow
- in a floating point operation), \fBinexact\fR (loss of precision
- during operation), and \fBdenormal\fR (operation performed on a
- denormal value). The first five exceptions correspond to the five
- \&\s-1IEEE 754\s0 exceptions, whereas the last one (\fBdenormal\fR) is not
- part of the \s-1IEEE 754\s0 standard but is available on some common
- architectures such as x86.
- .Sp
- The first three exceptions (\fBinvalid\fR, \fBzero\fR, and
- \&\fBoverflow\fR) often indicate serious errors, and unless the program
- has provisions for dealing with these exceptions, enabling traps for
- these three exceptions is probably a good idea.
- .Sp
- Many, if not most, floating point operations incur loss of precision
- due to rounding, and hence the \f(CW\*(C`ffpe\-trap=inexact\*(C'\fR is likely to
- be uninteresting in practice.
- .Sp
- By default no exception traps are enabled.
- .IP "\fB\-ffpe\-summary=\fR\fIlist\fR" 4
- .IX Item "-ffpe-summary=list"
- Specify a list of floating-point exceptions, whose flag status is printed
- to \f(CW\*(C`ERROR_UNIT\*(C'\fR when invoking \f(CW\*(C`STOP\*(C'\fR and \f(CW\*(C`ERROR STOP\*(C'\fR.
- \&\fIlist\fR can be either \fBnone\fR, \fBall\fR or a comma-separated list
- of the following exceptions: \fBinvalid\fR, \fBzero\fR, \fBoverflow\fR,
- \&\fBunderflow\fR, \fBinexact\fR and \fBdenormal\fR. (See
- \&\fB\-ffpe\-trap\fR for a description of the exceptions.)
- .Sp
- By default, a summary for all exceptions but \fBinexact\fR is shown.
- .IP "\fB\-fno\-backtrace\fR" 4
- .IX Item "-fno-backtrace"
- When a serious runtime error is encountered or a deadly signal is
- emitted (segmentation fault, illegal instruction, bus error,
- floating-point exception, and the other \s-1POSIX\s0 signals that have the
- action \fBcore\fR), the Fortran runtime library tries to output a
- backtrace of the error. \f(CW\*(C`\-fno\-backtrace\*(C'\fR disables the backtrace
- generation. This option only has influence for compilation of the
- Fortran main program.
- .SS "Options for directory search"
- .IX Subsection "Options for directory search"
- These options affect how \s-1GNU\s0 Fortran searches
- for files specified by the \f(CW\*(C`INCLUDE\*(C'\fR directive and where it searches
- for previously compiled modules.
- .PP
- It also affects the search paths used by \fBcpp\fR when used to preprocess
- Fortran source.
- .IP "\fB\-I\fR\fIdir\fR" 4
- .IX Item "-Idir"
- These affect interpretation of the \f(CW\*(C`INCLUDE\*(C'\fR directive
- (as well as of the \f(CW\*(C`#include\*(C'\fR directive of the \fBcpp\fR
- preprocessor).
- .Sp
- Also note that the general behavior of \fB\-I\fR and
- \&\f(CW\*(C`INCLUDE\*(C'\fR is pretty much the same as of \fB\-I\fR with
- \&\f(CW\*(C`#include\*(C'\fR in the \fBcpp\fR preprocessor, with regard to
- looking for \fIheader.gcc\fR files and other such things.
- .Sp
- This path is also used to search for \fI.mod\fR files when previously
- compiled modules are required by a \f(CW\*(C`USE\*(C'\fR statement.
- .IP "\fB\-J\fR\fIdir\fR" 4
- .IX Item "-Jdir"
- This option specifies where to put \fI.mod\fR files for compiled modules.
- It is also added to the list of directories to searched by an \f(CW\*(C`USE\*(C'\fR
- statement.
- .Sp
- The default is the current directory.
- .IP "\fB\-fintrinsic\-modules\-path\fR \fIdir\fR" 4
- .IX Item "-fintrinsic-modules-path dir"
- This option specifies the location of pre-compiled intrinsic modules, if
- they are not in the default location expected by the compiler.
- .SS "Influencing the linking step"
- .IX Subsection "Influencing the linking step"
- These options come into play when the compiler links object files into an
- executable output file. They are meaningless if the compiler is not doing
- a link step.
- .IP "\fB\-static\-libgfortran\fR" 4
- .IX Item "-static-libgfortran"
- On systems that provide \fIlibgfortran\fR as a shared and a static
- library, this option forces the use of the static version. If no
- shared version of \fIlibgfortran\fR was built when the compiler was
- configured, this option has no effect.
- .SS "Influencing runtime behavior"
- .IX Subsection "Influencing runtime behavior"
- These options affect the runtime behavior of programs compiled with \s-1GNU\s0 Fortran.
- .IP "\fB\-fconvert=\fR\fIconversion\fR" 4
- .IX Item "-fconvert=conversion"
- Specify the representation of data for unformatted files. Valid
- values for conversion are: \fBnative\fR, the default; \fBswap\fR,
- swap between big\- and little-endian; \fBbig-endian\fR, use big-endian
- representation for unformatted files; \fBlittle-endian\fR, use little-endian
- representation for unformatted files.
- .Sp
- \&\fIThis option has an effect only when used in the main program.
- The \f(CI\*(C`CONVERT\*(C'\fI specifier and the \s-1GFORTRAN_CONVERT_UNIT\s0 environment
- variable override the default specified by \f(BI\-fconvert\fI.\fR
- .IP "\fB\-frecord\-marker=\fR\fIlength\fR" 4
- .IX Item "-frecord-marker=length"
- Specify the length of record markers for unformatted files.
- Valid values for \fIlength\fR are 4 and 8. Default is 4.
- \&\fIThis is different from previous versions of\fR \fBgfortran\fR,
- which specified a default record marker length of 8 on most
- systems. If you want to read or write files compatible
- with earlier versions of \fBgfortran\fR, use \fB\-frecord\-marker=8\fR.
- .IP "\fB\-fmax\-subrecord\-length=\fR\fIlength\fR" 4
- .IX Item "-fmax-subrecord-length=length"
- Specify the maximum length for a subrecord. The maximum permitted
- value for length is 2147483639, which is also the default. Only
- really useful for use by the gfortran testsuite.
- .IP "\fB\-fsign\-zero\fR" 4
- .IX Item "-fsign-zero"
- When enabled, floating point numbers of value zero with the sign bit set
- are written as negative number in formatted output and treated as
- negative in the \f(CW\*(C`SIGN\*(C'\fR intrinsic. \fB\-fno\-sign\-zero\fR does not
- print the negative sign of zero values (or values rounded to zero for I/O)
- and regards zero as positive number in the \f(CW\*(C`SIGN\*(C'\fR intrinsic for
- compatibility with Fortran 77. The default is \fB\-fsign\-zero\fR.
- .SS "Options for code generation conventions"
- .IX Subsection "Options for code generation conventions"
- These machine-independent options control the interface conventions
- used in code generation.
- .PP
- Most of them have both positive and negative forms; the negative form
- of \fB\-ffoo\fR would be \fB\-fno\-foo\fR. In the table below, only
- one of the forms is listed\-\-\-the one which is not the default. You
- can figure out the other form by either removing \fBno\-\fR or adding
- it.
- .IP "\fB\-fno\-automatic\fR" 4
- .IX Item "-fno-automatic"
- Treat each program unit (except those marked as \s-1RECURSIVE\s0) as if the
- \&\f(CW\*(C`SAVE\*(C'\fR statement were specified for every local variable and array
- referenced in it. Does not affect common blocks. (Some Fortran compilers
- provide this option under the name \fB\-static\fR or \fB\-save\fR.)
- The default, which is \fB\-fautomatic\fR, uses the stack for local
- variables smaller than the value given by \fB\-fmax\-stack\-var\-size\fR.
- Use the option \fB\-frecursive\fR to use no static memory.
- .IP "\fB\-ff2c\fR" 4
- .IX Item "-ff2c"
- Generate code designed to be compatible with code generated
- by \fBg77\fR and \fBf2c\fR.
- .Sp
- The calling conventions used by \fBg77\fR (originally implemented
- in \fBf2c\fR) require functions that return type
- default \f(CW\*(C`REAL\*(C'\fR to actually return the C type \f(CW\*(C`double\*(C'\fR, and
- functions that return type \f(CW\*(C`COMPLEX\*(C'\fR to return the values via an
- extra argument in the calling sequence that points to where to
- store the return value. Under the default \s-1GNU\s0 calling conventions, such
- functions simply return their results as they would in \s-1GNU\s0
- C\-\-\-default \f(CW\*(C`REAL\*(C'\fR functions return the C type \f(CW\*(C`float\*(C'\fR, and
- \&\f(CW\*(C`COMPLEX\*(C'\fR functions return the \s-1GNU C\s0 type \f(CW\*(C`complex\*(C'\fR.
- Additionally, this option implies the \fB\-fsecond\-underscore\fR
- option, unless \fB\-fno\-second\-underscore\fR is explicitly requested.
- .Sp
- This does not affect the generation of code that interfaces with
- the \fBlibgfortran\fR library.
- .Sp
- \&\fICaution:\fR It is not a good idea to mix Fortran code compiled with
- \&\fB\-ff2c\fR with code compiled with the default \fB\-fno\-f2c\fR
- calling conventions as, calling \f(CW\*(C`COMPLEX\*(C'\fR or default \f(CW\*(C`REAL\*(C'\fR
- functions between program parts which were compiled with different
- calling conventions will break at execution time.
- .Sp
- \&\fICaution:\fR This will break code which passes intrinsic functions
- of type default \f(CW\*(C`REAL\*(C'\fR or \f(CW\*(C`COMPLEX\*(C'\fR as actual arguments, as
- the library implementations use the \fB\-fno\-f2c\fR calling conventions.
- .IP "\fB\-fno\-underscoring\fR" 4
- .IX Item "-fno-underscoring"
- Do not transform names of entities specified in the Fortran
- source file by appending underscores to them.
- .Sp
- With \fB\-funderscoring\fR in effect, \s-1GNU\s0 Fortran appends one
- underscore to external names with no underscores. This is done to ensure
- compatibility with code produced by many \s-1UNIX\s0 Fortran compilers.
- .Sp
- \&\fICaution\fR: The default behavior of \s-1GNU\s0 Fortran is
- incompatible with \fBf2c\fR and \fBg77\fR, please use the
- \&\fB\-ff2c\fR option if you want object files compiled with
- \&\s-1GNU\s0 Fortran to be compatible with object code created with these
- tools.
- .Sp
- Use of \fB\-fno\-underscoring\fR is not recommended unless you are
- experimenting with issues such as integration of \s-1GNU\s0 Fortran into
- existing system environments (vis\-a\*`\-vis existing libraries, tools,
- and so on).
- .Sp
- For example, with \fB\-funderscoring\fR, and assuming that \f(CW\*(C`j()\*(C'\fR and
- \&\f(CW\*(C`max_count()\*(C'\fR are external functions while \f(CW\*(C`my_var\*(C'\fR and
- \&\f(CW\*(C`lvar\*(C'\fR are local variables, a statement like
- .Sp
- .Vb 1
- \& I = J() + MAX_COUNT (MY_VAR, LVAR)
- .Ve
- .Sp
- is implemented as something akin to:
- .Sp
- .Vb 1
- \& i = j_() + max_count_\|_(&my_var_\|_, &lvar);
- .Ve
- .Sp
- With \fB\-fno\-underscoring\fR, the same statement is implemented as:
- .Sp
- .Vb 1
- \& i = j() + max_count(&my_var, &lvar);
- .Ve
- .Sp
- Use of \fB\-fno\-underscoring\fR allows direct specification of
- user-defined names while debugging and when interfacing \s-1GNU\s0 Fortran
- code with other languages.
- .Sp
- Note that just because the names match does \fInot\fR mean that the
- interface implemented by \s-1GNU\s0 Fortran for an external name matches the
- interface implemented by some other language for that same name.
- That is, getting code produced by \s-1GNU\s0 Fortran to link to code produced
- by some other compiler using this or any other method can be only a
- small part of the overall solution\-\-\-getting the code generated by
- both compilers to agree on issues other than naming can require
- significant effort, and, unlike naming disagreements, linkers normally
- cannot detect disagreements in these other areas.
- .Sp
- Also, note that with \fB\-fno\-underscoring\fR, the lack of appended
- underscores introduces the very real possibility that a user-defined
- external name will conflict with a name in a system library, which
- could make finding unresolved-reference bugs quite difficult in some
- cases\-\-\-they might occur at program run time, and show up only as
- buggy behavior at run time.
- .Sp
- In future versions of \s-1GNU\s0 Fortran we hope to improve naming and linking
- issues so that debugging always involves using the names as they appear
- in the source, even if the names as seen by the linker are mangled to
- prevent accidental linking between procedures with incompatible
- interfaces.
- .IP "\fB\-fsecond\-underscore\fR" 4
- .IX Item "-fsecond-underscore"
- By default, \s-1GNU\s0 Fortran appends an underscore to external
- names. If this option is used \s-1GNU\s0 Fortran appends two
- underscores to names with underscores and one underscore to external names
- with no underscores. \s-1GNU\s0 Fortran also appends two underscores to
- internal names with underscores to avoid naming collisions with external
- names.
- .Sp
- This option has no effect if \fB\-fno\-underscoring\fR is
- in effect. It is implied by the \fB\-ff2c\fR option.
- .Sp
- Otherwise, with this option, an external name such as \f(CW\*(C`MAX_COUNT\*(C'\fR
- is implemented as a reference to the link-time external symbol
- \&\f(CW\*(C`max_count_\|_\*(C'\fR, instead of \f(CW\*(C`max_count_\*(C'\fR. This is required
- for compatibility with \fBg77\fR and \fBf2c\fR, and is implied
- by use of the \fB\-ff2c\fR option.
- .IP "\fB\-fcoarray=\fR\fI<keyword>\fR" 4
- .IX Item "-fcoarray=<keyword>"
- .RS 4
- .PD 0
- .IP "\fBnone\fR" 4
- .IX Item "none"
- .PD
- Disable coarray support; using coarray declarations and image-control
- statements will produce a compile-time error. (Default)
- .IP "\fBsingle\fR" 4
- .IX Item "single"
- Single-image mode, i.e. \f(CW\*(C`num_images()\*(C'\fR is always one.
- .IP "\fBlib\fR" 4
- .IX Item "lib"
- Library-based coarray parallelization; a suitable \s-1GNU\s0 Fortran coarray
- library needs to be linked.
- .RE
- .RS 4
- .RE
- .IP "\fB\-fcheck=\fR\fI<keyword>\fR" 4
- .IX Item "-fcheck=<keyword>"
- Enable the generation of run-time checks; the argument shall be
- a comma-delimited list of the following keywords. Prefixing a check with
- \&\fBno\-\fR disables it if it was activated by a previous specification.
- .RS 4
- .IP "\fBall\fR" 4
- .IX Item "all"
- Enable all run-time test of \fB\-fcheck\fR.
- .IP "\fBarray-temps\fR" 4
- .IX Item "array-temps"
- Warns at run time when for passing an actual argument a temporary array
- had to be generated. The information generated by this warning is
- sometimes useful in optimization, in order to avoid such temporaries.
- .Sp
- Note: The warning is only printed once per location.
- .IP "\fBbounds\fR" 4
- .IX Item "bounds"
- Enable generation of run-time checks for array subscripts
- and against the declared minimum and maximum values. It also
- checks array indices for assumed and deferred
- shape arrays against the actual allocated bounds and ensures that all string
- lengths are equal for character array constructors without an explicit
- typespec.
- .Sp
- Some checks require that \fB\-fcheck=bounds\fR is set for
- the compilation of the main program.
- .Sp
- Note: In the future this may also include other forms of checking, e.g.,
- checking substring references.
- .IP "\fBdo\fR" 4
- .IX Item "do"
- Enable generation of run-time checks for invalid modification of loop
- iteration variables.
- .IP "\fBmem\fR" 4
- .IX Item "mem"
- Enable generation of run-time checks for memory allocation.
- Note: This option does not affect explicit allocations using the
- \&\f(CW\*(C`ALLOCATE\*(C'\fR statement, which will be always checked.
- .IP "\fBpointer\fR" 4
- .IX Item "pointer"
- Enable generation of run-time checks for pointers and allocatables.
- .IP "\fBrecursion\fR" 4
- .IX Item "recursion"
- Enable generation of run-time checks for recursively called subroutines and
- functions which are not marked as recursive. See also \fB\-frecursive\fR.
- Note: This check does not work for OpenMP programs and is disabled if used
- together with \fB\-frecursive\fR and \fB\-fopenmp\fR.
- .RE
- .RS 4
- .Sp
- Example: Assuming you have a file \fIfoo.f90\fR, the command
- .Sp
- .Vb 1
- \& gfortran \-fcheck=all,no\-array\-temps foo.f90
- .Ve
- .Sp
- will compile the file with all checks enabled as specified above except
- warnings for generated array temporaries.
- .RE
- .IP "\fB\-fbounds\-check\fR" 4
- .IX Item "-fbounds-check"
- Deprecated alias for \fB\-fcheck=bounds\fR.
- .IP "\fB\-ftail\-call\-workaround\fR" 4
- .IX Item "-ftail-call-workaround"
- .PD 0
- .IP "\fB\-ftail\-call\-workaround=\fR\fIn\fR" 4
- .IX Item "-ftail-call-workaround=n"
- .PD
- Some C interfaces to Fortran codes violate the gfortran \s-1ABI\s0 by
- omitting the hidden character length arguments as described in
- This can lead to crashes
- because pushing arguments for tail calls can overflow the stack.
- .Sp
- To provide a workaround for existing binary packages, this option
- disables tail call optimization for gfortran procedures with character
- arguments. With \fB\-ftail\-call\-workaround=2\fR tail call optimization
- is disabled in all gfortran procedures with character arguments,
- with \fB\-ftail\-call\-workaround=1\fR or equivalent
- \&\fB\-ftail\-call\-workaround\fR only in gfortran procedures with character
- arguments that call implicitly prototyped procedures.
- .Sp
- Using this option can lead to problems including crashes due to
- insufficient stack space.
- .Sp
- It is \fIvery strongly\fR recommended to fix the code in question.
- The \fB\-fc\-prototypes\-external\fR option can be used to generate
- prototypes which conform to gfortran's \s-1ABI,\s0 for inclusion in the
- source code.
- .Sp
- Support for this option will likely be withdrawn in a future release
- of gfortran.
- .Sp
- The negative form, \fB\-fno\-tail\-call\-workaround\fR or equivalent
- \&\fB\-ftail\-call\-workaround=0\fR, can be used to disable this option.
- .Sp
- Default is currently \fB\-ftail\-call\-workaround\fR, this will change
- in future releases.
- .IP "\fB\-fcheck\-array\-temporaries\fR" 4
- .IX Item "-fcheck-array-temporaries"
- Deprecated alias for \fB\-fcheck=array\-temps\fR.
- .IP "\fB\-fmax\-array\-constructor=\fR\fIn\fR" 4
- .IX Item "-fmax-array-constructor=n"
- This option can be used to increase the upper limit permitted in
- array constructors. The code below requires this option to expand
- the array at compile time.
- .Sp
- .Vb 7
- \& program test
- \& implicit none
- \& integer j
- \& integer, parameter :: n = 100000
- \& integer, parameter :: i(n) = (/ (2*j, j = 1, n) /)
- \& print \*(Aq(10(I0,1X))\*(Aq, i
- \& end program test
- .Ve
- .Sp
- \&\fICaution: This option can lead to long compile times and excessively
- large object files.\fR
- .Sp
- The default value for \fIn\fR is 65535.
- .IP "\fB\-fmax\-stack\-var\-size=\fR\fIn\fR" 4
- .IX Item "-fmax-stack-var-size=n"
- This option specifies the size in bytes of the largest array that will be put
- on the stack; if the size is exceeded static memory is used (except in
- procedures marked as \s-1RECURSIVE\s0). Use the option \fB\-frecursive\fR to
- allow for recursive procedures which do not have a \s-1RECURSIVE\s0 attribute or
- for parallel programs. Use \fB\-fno\-automatic\fR to never use the stack.
- .Sp
- This option currently only affects local arrays declared with constant
- bounds, and may not apply to all character variables.
- Future versions of \s-1GNU\s0 Fortran may improve this behavior.
- .Sp
- The default value for \fIn\fR is 32768.
- .IP "\fB\-fstack\-arrays\fR" 4
- .IX Item "-fstack-arrays"
- Adding this option will make the Fortran compiler put all local arrays,
- even those of unknown size onto stack memory. If your program uses very
- large local arrays it is possible that you will have to extend your runtime
- limits for stack memory on some operating systems. This flag is enabled
- by default at optimization level \fB\-Ofast\fR.
- .IP "\fB\-fpack\-derived\fR" 4
- .IX Item "-fpack-derived"
- This option tells \s-1GNU\s0 Fortran to pack derived type members as closely as
- possible. Code compiled with this option is likely to be incompatible
- with code compiled without this option, and may execute slower.
- .IP "\fB\-frepack\-arrays\fR" 4
- .IX Item "-frepack-arrays"
- In some circumstances \s-1GNU\s0 Fortran may pass assumed shape array
- sections via a descriptor describing a noncontiguous area of memory.
- This option adds code to the function prologue to repack the data into
- a contiguous block at runtime.
- .Sp
- This should result in faster accesses to the array. However it can introduce
- significant overhead to the function call, especially when the passed data
- is noncontiguous.
- .IP "\fB\-fshort\-enums\fR" 4
- .IX Item "-fshort-enums"
- This option is provided for interoperability with C code that was
- compiled with the \fB\-fshort\-enums\fR option. It will make
- \&\s-1GNU\s0 Fortran choose the smallest \f(CW\*(C`INTEGER\*(C'\fR kind a given
- enumerator set will fit in, and give all its enumerators this kind.
- .IP "\fB\-fexternal\-blas\fR" 4
- .IX Item "-fexternal-blas"
- This option will make \fBgfortran\fR generate calls to \s-1BLAS\s0 functions
- for some matrix operations like \f(CW\*(C`MATMUL\*(C'\fR, instead of using our own
- algorithms, if the size of the matrices involved is larger than a given
- limit (see \fB\-fblas\-matmul\-limit\fR). This may be profitable if an
- optimized vendor \s-1BLAS\s0 library is available. The \s-1BLAS\s0 library will have
- to be specified at link time.
- .IP "\fB\-fblas\-matmul\-limit=\fR\fIn\fR" 4
- .IX Item "-fblas-matmul-limit=n"
- Only significant when \fB\-fexternal\-blas\fR is in effect.
- Matrix multiplication of matrices with size larger than (or equal to) \fIn\fR
- will be performed by calls to \s-1BLAS\s0 functions, while others will be
- handled by \fBgfortran\fR internal algorithms. If the matrices
- involved are not square, the size comparison is performed using the
- geometric mean of the dimensions of the argument and result matrices.
- .Sp
- The default value for \fIn\fR is 30.
- .IP "\fB\-finline\-matmul\-limit=\fR\fIn\fR" 4
- .IX Item "-finline-matmul-limit=n"
- When front-end optimiztion is active, some calls to the \f(CW\*(C`MATMUL\*(C'\fR
- intrinsic function will be inlined. This may result in code size
- increase if the size of the matrix cannot be determined at compile
- time, as code for both cases is generated. Setting
- \&\f(CW\*(C`\-finline\-matmul\-limit=0\*(C'\fR will disable inlining in all cases.
- Setting this option with a value of \fIn\fR will produce inline code
- for matrices with size up to \fIn\fR. If the matrices involved are not
- square, the size comparison is performed using the geometric mean of
- the dimensions of the argument and result matrices.
- .Sp
- The default value for \fIn\fR is 30. The \f(CW\*(C`\-fblas\-matmul\-limit\*(C'\fR
- can be used to change this value.
- .IP "\fB\-frecursive\fR" 4
- .IX Item "-frecursive"
- Allow indirect recursion by forcing all local arrays to be allocated
- on the stack. This flag cannot be used together with
- \&\fB\-fmax\-stack\-var\-size=\fR or \fB\-fno\-automatic\fR.
- .IP "\fB\-finit\-local\-zero\fR" 4
- .IX Item "-finit-local-zero"
- .PD 0
- .IP "\fB\-finit\-derived\fR" 4
- .IX Item "-finit-derived"
- .IP "\fB\-finit\-integer=\fR\fIn\fR" 4
- .IX Item "-finit-integer=n"
- .IP "\fB\-finit\-real=\fR\fI<zero|inf|\-inf|nan|snan>\fR" 4
- .IX Item "-finit-real=<zero|inf|-inf|nan|snan>"
- .IP "\fB\-finit\-logical=\fR\fI<true|false>\fR" 4
- .IX Item "-finit-logical=<true|false>"
- .IP "\fB\-finit\-character=\fR\fIn\fR" 4
- .IX Item "-finit-character=n"
- .PD
- The \fB\-finit\-local\-zero\fR option instructs the compiler to
- initialize local \f(CW\*(C`INTEGER\*(C'\fR, \f(CW\*(C`REAL\*(C'\fR, and \f(CW\*(C`COMPLEX\*(C'\fR
- variables to zero, \f(CW\*(C`LOGICAL\*(C'\fR variables to false, and
- \&\f(CW\*(C`CHARACTER\*(C'\fR variables to a string of null bytes. Finer-grained
- initialization options are provided by the
- \&\fB\-finit\-integer=\fR\fIn\fR,
- \&\fB\-finit\-real=\fR\fI<zero|inf|\-inf|nan|snan>\fR (which also initializes
- the real and imaginary parts of local \f(CW\*(C`COMPLEX\*(C'\fR variables),
- \&\fB\-finit\-logical=\fR\fI<true|false>\fR, and
- \&\fB\-finit\-character=\fR\fIn\fR (where \fIn\fR is an \s-1ASCII\s0 character
- value) options. Components of derived type variables will be initialized
- according to these flags only with \fB\-finit\-derived\fR. These options do
- not initialize
- .RS 4
- .IP "*" 4
- allocatable arrays
- .IP "*" 4
- variables that appear in an \f(CW\*(C`EQUIVALENCE\*(C'\fR statement.
- .RE
- .RS 4
- .Sp
- (These limitations may be removed in future releases).
- .Sp
- Note that the \fB\-finit\-real=nan\fR option initializes \f(CW\*(C`REAL\*(C'\fR
- and \f(CW\*(C`COMPLEX\*(C'\fR variables with a quiet NaN. For a signalling NaN
- use \fB\-finit\-real=snan\fR; note, however, that compile-time
- optimizations may convert them into quiet NaN and that trapping
- needs to be enabled (e.g. via \fB\-ffpe\-trap\fR).
- .Sp
- Finally, note that enabling any of the \fB\-finit\-*\fR options will
- silence warnings that would have been emitted by \fB\-Wuninitialized\fR
- for the affected local variables.
- .RE
- .IP "\fB\-falign\-commons\fR" 4
- .IX Item "-falign-commons"
- By default, \fBgfortran\fR enforces proper alignment of all variables in a
- \&\f(CW\*(C`COMMON\*(C'\fR block by padding them as needed. On certain platforms this is mandatory,
- on others it increases performance. If a \f(CW\*(C`COMMON\*(C'\fR block is not declared with
- consistent data types everywhere, this padding can cause trouble, and
- \&\fB\-fno\-align\-commons\fR can be used to disable automatic alignment. The
- same form of this option should be used for all files that share a \f(CW\*(C`COMMON\*(C'\fR block.
- To avoid potential alignment issues in \f(CW\*(C`COMMON\*(C'\fR blocks, it is recommended to order
- objects from largest to smallest.
- .IP "\fB\-fno\-protect\-parens\fR" 4
- .IX Item "-fno-protect-parens"
- By default the parentheses in expression are honored for all optimization
- levels such that the compiler does not do any re-association. Using
- \&\fB\-fno\-protect\-parens\fR allows the compiler to reorder \f(CW\*(C`REAL\*(C'\fR and
- \&\f(CW\*(C`COMPLEX\*(C'\fR expressions to produce faster code. Note that for the re-association
- optimization \fB\-fno\-signed\-zeros\fR and \fB\-fno\-trapping\-math\fR
- need to be in effect. The parentheses protection is enabled by default, unless
- \&\fB\-Ofast\fR is given.
- .IP "\fB\-frealloc\-lhs\fR" 4
- .IX Item "-frealloc-lhs"
- An allocatable left-hand side of an intrinsic assignment is automatically
- (re)allocated if it is either unallocated or has a different shape. The
- option is enabled by default except when \fB\-std=f95\fR is given. See
- also \fB\-Wrealloc\-lhs\fR.
- .IP "\fB\-faggressive\-function\-elimination\fR" 4
- .IX Item "-faggressive-function-elimination"
- Functions with identical argument lists are eliminated within
- statements, regardless of whether these functions are marked
- \&\f(CW\*(C`PURE\*(C'\fR or not. For example, in
- .Sp
- .Vb 1
- \& a = f(b,c) + f(b,c)
- .Ve
- .Sp
- there will only be a single call to \f(CW\*(C`f\*(C'\fR. This option only works
- if \fB\-ffrontend\-optimize\fR is in effect.
- .IP "\fB\-ffrontend\-optimize\fR" 4
- .IX Item "-ffrontend-optimize"
- This option performs front-end optimization, based on manipulating
- parts the Fortran parse tree. Enabled by default by any \fB\-O\fR
- option. Optimizations enabled by this option include inlining calls
- to \f(CW\*(C`MATMUL\*(C'\fR, elimination of identical function calls within
- expressions, removing unnecessary calls to \f(CW\*(C`TRIM\*(C'\fR in comparisons
- and assignments and replacing \f(CWTRIM(a)\fR with
- \&\f(CW\*(C`a(1:LEN_TRIM(a))\*(C'\fR. It can be deselected by specifying
- \&\fB\-fno\-frontend\-optimize\fR.
- .SH "ENVIRONMENT"
- .IX Header "ENVIRONMENT"
- The \fBgfortran\fR compiler currently does not make use of any environment
- variables to control its operation above and beyond those
- that affect the operation of \fBgcc\fR.
- .SH "BUGS"
- .IX Header "BUGS"
- For instructions on reporting bugs, see
- <\fBhttps://gcc.gnu.org/bugs/\fR>.
- .SH "SEE ALSO"
- .IX Header "SEE ALSO"
- \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
- \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIadb\fR\|(1), \fIdbx\fR\|(1), \fIsdb\fR\|(1)
- and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIgfortran\fR, \fIas\fR,
- \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
- .SH "AUTHOR"
- .IX Header "AUTHOR"
- See the Info entry for \fBgfortran\fR for contributors to \s-1GCC\s0 and
- \&\s-1GNU\s0 Fortran.
- .SH "COPYRIGHT"
- .IX Header "COPYRIGHT"
- Copyright (c) 2004\-2017 Free Software Foundation, Inc.
- .PP
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
- any later version published by the Free Software Foundation; with the
- Invariant Sections being \*(L"Funding Free Software\*(R", the Front-Cover
- Texts being (a) (see below), and with the Back-Cover Texts being (b)
- (see below). A copy of the license is included in the \fIgfdl\fR\|(7) man page.
- .PP
- (a) The \s-1FSF\s0's Front-Cover Text is:
- .PP
- .Vb 1
- \& A GNU Manual
- .Ve
- .PP
- (b) The \s-1FSF\s0's Back-Cover Text is:
- .PP
- .Vb 3
- \& You have freedom to copy and modify this GNU Manual, like GNU
- \& software. Copies published by the Free Software Foundation raise
- \& funds for GNU development.
- .Ve
|