1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744 |
- .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
- .\"
- .\" 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 >0, 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
- ..
- .if !\nF .nr F 0
- .if \nF>0 \{\
- . de IX
- . tm Index:\\$1\t\\n%\t"\\$2"
- ..
- . if !\nF==2 \{\
- . nr % 0
- . nr F 2
- . \}
- .\}
- .\"
- .\" 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 "2021-06-21" "gcc-10.3.1" "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 \-fallow\-argument\-mismatch \-fallow\-invalid\-boz
- \&\-fbackslash \-fcray\-pointer \-fd\-lines\-as\-code \-fd\-lines\-as\-comments
- \&\-fdec \-fdec\-char\-conversions \-fdec\-structure \-fdec\-intrinsic\-ints
- \&\-fdec\-static \-fdec\-math \-fdec\-include \-fdec\-format\-defaults
- \&\-fdec\-blank\-format\-item \-fdefault\-double\-8 \-fdefault\-integer\-8
- \&\-fdefault\-real\-8 \-fdefault\-real\-10 \-fdefault\-real\-16 \-fdollar\-ok
- \&\-ffixed\-line\-length\-\fR\fIn\fR \fB\-ffixed\-line\-length\-none \-fpad\-source
- \&\-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 \-Warray\-bounds
- \&\-Wc\-binding\-type \-Wcharacter\-truncation \-Wconversion
- \&\-Wdo\-subscript \-Wfunction\-elimination \-Wimplicit\-interface
- \&\-Wimplicit\-procedure \-Wintrinsic\-shadow \-Wuse\-without\-only
- \&\-Wintrinsics\-std \-Wline\-truncation \-Wno\-align\-commons
- \&\-Wno\-overwrite\-recursive \-Wno\-tabs \-Wreal\-q\-constant \-Wsurprising
- \&\-Wunderflow \-Wunused\-parameter \-Wrealloc\-lhs \-Wrealloc\-lhs\-all
- \&\-Wfrontend\-loop\-interchange \-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\-fortran\-global \-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 "\fIInteroperability Options\fR" 4
- .IX Item "Interoperability Options"
- \&\fB\-fc\-prototypes \-fc\-prototypes\-external\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|bits|bounds|do|mem|pointer|recursion>\fR
- \&\fB\-fcoarray=\fR\fI<none|single|lib>\fR \fB\-fexternal\-blas \-ff2c
- \&\-ffrontend\-loop\-interchange \-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\-finline\-arg\-packing \-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\-fallow\-argument\-mismatch\fR" 4
- .IX Item "-fallow-argument-mismatch"
- Some code contains calls to external procedures whith mismatches
- between the calls and the procedure definition, or with mismatches
- between different calls. Such code is non-conforming, and will usually
- be flagged wi1th an error. This options degrades the error to a
- warning, which can only be disabled by disabling all warnings vial
- \&\fB\-w\fR. Only a single occurrence per argument is flagged by this
- warning. \fB\-fallow\-argument\-mismatch\fR is implied by
- \&\fB\-std=legacy\fR.
- .Sp
- Using this option is \fIstrongly\fR discouraged. It is possible to
- provide standard-conforming code which allows different types of
- arguments by using an explicit interface and \f(CWTYPE(*)\fR.
- .IP "\fB\-fallow\-invalid\-boz\fR" 4
- .IX Item "-fallow-invalid-boz"
- A \s-1BOZ\s0 literal constant can occur in a limited number of contexts in
- standard conforming Fortran. This option degrades an error condition
- to a warning, and allows a \s-1BOZ\s0 literal constant to appear where the
- Fortran standard would otherwise prohibit its use.
- .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\-char\-conversions\fR
- \&\fB\-fdec\-structure\fR \fB\-fdec\-intrinsic\-ints\fR \fB\-fdec\-static\fR
- \&\fB\-fdec\-math\fR \fB\-fdec\-include\fR \fB\-fdec\-blank\-format\-item\fR
- \&\fB\-fdec\-format\-defaults\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\-char\-conversions\fR" 4
- .IX Item "-fdec-char-conversions"
- Enable the use of character literals in assignments and \f(CW\*(C`DATA\*(C'\fR statements
- for non-character variables.
- .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\-fdec\-include\fR" 4
- .IX Item "-fdec-include"
- Enable parsing of \s-1INCLUDE\s0 as a statement in addition to parsing it as
- \&\s-1INCLUDE\s0 line. When parsed as \s-1INCLUDE\s0 statement, \s-1INCLUDE\s0 does not have to
- be on a single line and can use line continuations.
- .IP "\fB\-fdec\-format\-defaults\fR" 4
- .IX Item "-fdec-format-defaults"
- Enable format specifiers F, G and I to be used without width specifiers,
- default widths will be used instead.
- .IP "\fB\-fdec\-blank\-format\-item\fR" 4
- .IX Item "-fdec-blank-format-item"
- Enable a blank format item at the end of a format specification i.e. nothing
- following the final comma.
- .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, unless \f(CW\*(C`\-fno\-pad\-source\*(C'\fR, 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\-fno\-pad\-source\fR" 4
- .IX Item "-fno-pad-source"
- By default fixed-form lines have spaces assumed (as if padded to that length)
- after the ends of short fixed-form lines. This is not done either if
- \&\fB\-ffixed\-line\-length\-0\fR, \fB\-ffixed\-line\-length\-none\fR or
- if \fB\-fno\-pad\-source\fR option is used. With any of those options
- continued character constants never have implicit spaces appended
- to them to fill out the line.
- .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.
- .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. This option promotes
- the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
- like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible. If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
- is given along with \f(CW\*(C`fdefault\-real\-8\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
- and double real constants are not promoted. Unlike \fB\-freal\-4\-real\-8\fR,
- \&\f(CW\*(C`fdefault\-real\-8\*(C'\fR does not promote variables with explicit kind
- declarations.
- .IP "\fB\-fdefault\-real\-10\fR" 4
- .IX Item "-fdefault-real-10"
- Set the default real type to an 10 byte wide type. This option also affects
- the kind of non-double real constants like \f(CW1.0\fR. This option promotes
- the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
- like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible. If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
- is given along with \f(CW\*(C`fdefault\-real\-10\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
- and double real constants are not promoted. Unlike \fB\-freal\-4\-real\-10\fR,
- \&\f(CW\*(C`fdefault\-real\-10\*(C'\fR does not promote variables with explicit kind
- declarations.
- .IP "\fB\-fdefault\-real\-16\fR" 4
- .IX Item "-fdefault-real-16"
- Set the default real type to an 16 byte wide type. This option also affects
- the kind of non-double real constants like \f(CW1.0\fR. This option promotes
- the default width of \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants
- like \f(CW\*(C`1.d0\*(C'\fR to 16 bytes if possible. If \f(CW\*(C`\-fdefault\-double\-8\*(C'\fR
- is given along with \f(CW\*(C`fdefault\-real\-16\*(C'\fR, \f(CW\*(C`DOUBLE PRECISION\*(C'\fR
- and double real constants are not promoted. Unlike \fB\-freal\-4\-real\-16\fR,
- \&\f(CW\*(C`fdefault\-real\-16\*(C'\fR does not promote variables with explicit kind
- declarations.
- .IP "\fB\-fdefault\-double\-8\fR" 4
- .IX Item "-fdefault-double-8"
- Set the \f(CW\*(C`DOUBLE PRECISION\*(C'\fR type and double real constants
- like \f(CW\*(C`1.d0\*(C'\fR to an 8 byte wide type. Do nothing if this
- is already the default. This option prevents \fB\-fdefault\-real\-8\fR,
- \&\fB\-fdefault\-real\-10\fR, and \fB\-fdefault\-real\-16\fR,
- from promoting \f(CW\*(C`DOUBLE PRECISION\*(C'\fR and double real constants like
- \&\f(CW\*(C`1.d0\*(C'\fR to 16 bytes.
- .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,
- \&\fBf2018\fR, \fBgnu\fR, or \fBlegacy\fR. The default value for
- \&\fIstd\fR is \fBgnu\fR, which specifies a superset of the latest
- Fortran 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, \fBf2008\fR, and \fBf2018\fR values specify strict
- conformance to the Fortran 95, Fortran 2003, Fortran 2008 and Fortran
- 2018 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. The deprecated option \fB\-std=f2008ts\fR acts as an alias for
- \&\fB\-std=f2018\fR. It is only present for backwards compatibility with
- earlier gfortran versions and should not be used any more.
- .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.
- \&\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 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, \fB\-std=f2008\fR or \fB\-std=f2018\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, \fB\-std=f2008\fR and
- \&\fB\-std=f2018\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\-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,
- \&\fB\-Wunused\-parameter\fR and \fB\-Wdo\-subscript\fR.
- .IP "\fB\-Wfrontend\-loop\-interchange\fR" 4
- .IX Item "-Wfrontend-loop-interchange"
- Warn when using \fB\-ffrontend\-loop\-interchange\fR for performing loop
- interchanges.
- .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 its 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\-Wno\-overwrite\-recursive\fR" 4
- .IX Item "-Wno-overwrite-recursive"
- Do not warn when \fB\-fno\-automatic\fR is used with \fB\-frecursive\fR. Recursion
- will be broken if the relevant local variables do not have the attribute
- \&\f(CW\*(C`AUTOMATIC\*(C'\fR explicitly declared. This option can be used to suppress the warning
- when it is known that recursion is not broken. Useful for build environments that use
- \&\fB\-Werror\fR.
- .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=f2018\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 impure functions are eliminated by the optimizations
- enabled by the \fB\-ffrontend\-optimize\fR option.
- This option is implied by \fB\-Wextra\fR.
- .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\-Wdo\-subscript\fR" 4
- .IX Item "-Wdo-subscript"
- Warn if an array subscript inside a \s-1DO\s0 loop could lead to an
- out-of-bounds access even if the compiler cannot prove that the
- statement is actually executed, in cases like
- .Sp
- .Vb 6
- \& real a(3)
- \& do i=1,4
- \& if (condition(i)) then
- \& a(i) = 1.2
- \& end if
- \& end do
- .Ve
- .Sp
- This option is implied by \fB\-Wextra\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. This option is mostly useful for
- debugging the \s-1GNU\s0 Fortran compiler itself. The output generated by
- this option might change between releases. This option may also
- generate internal compiler errors for features which have only
- recently been added.
- .IP "\fB\-fdump\-fortran\-optimized\fR" 4
- .IX Item "-fdump-fortran-optimized"
- Output the parse tree after front-end optimization. Mostly useful for
- debugging the \s-1GNU\s0 Fortran compiler itself. The output generated by
- this option might change between releases. This option may also
- generate internal compiler errors for features which have only
- recently been added.
- .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. Mostly useful for debugging the \s-1GNU\s0
- Fortran compiler itself. The output generated by this option might
- change between releases. This option may also generate internal
- compiler errors for features which have only recently been added. This
- option is deprecated; use \f(CW\*(C`\-fdump\-fortran\-original\*(C'\fR instead.
- .IP "\fB\-fdump\-fortran\-global\fR" 4
- .IX Item "-fdump-fortran-global"
- Output a list of the global identifiers after translating into
- middle-end representation. Mostly useful for debugging the \s-1GNU\s0 Fortran
- compiler itself. The output generated by this option might change
- between releases. This option may also generate internal compiler
- errors for features which have only recently been added.
- .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
- If the option is used more than once in the command line, the lists will
- be joined: '\f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist2\fR'
- is equivalent to \f(CW\*(C`ffpe\-trap=\*(C'\fR\fIlist1\fR,\fIlist2\fR.
- .Sp
- Note that once enabled an exception cannot be disabled (no negative form).
- .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
- If the option is used more than once in the command line, only the
- last one will be used.
- .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.
- .Sp
- Local variables or arrays having an explicit \f(CW\*(C`SAVE\*(C'\fR attribute are
- silently ignored unless the \fB\-pedantic\fR option is added.
- .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 "\fBbits\fR" 4
- .IX Item "bits"
- Enable generation of run-time checks for invalid arguments to the bit
- manipulation intrinsics.
- .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 65536.
- .IP "\fB\-fstack\-arrays\fR" 4
- .IX Item "-fstack-arrays"
- Adding this option will make the Fortran compiler put all arrays of
- unknown size and array temporaries 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 unless
- \&\fB\-fmax\-stack\-var\-size\fR is specified.
- .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\-finline\-arg\-packing\fR" 4
- .IX Item "-finline-arg-packing"
- When passing an assumed-shape argument of a procedure as actual
- argument to an assumed-size or explicit size or as argument to a
- procedure that does not have an explicit interface, the argument may
- have to be packed, that is put into contiguous memory. An example is
- the call to \f(CW\*(C`foo\*(C'\fR in
- .Sp
- .Vb 7
- \& subroutine foo(a)
- \& real, dimension(*) :: a
- \& end subroutine foo
- \& subroutine bar(b)
- \& real, dimension(:) :: b
- \& call foo(b)
- \& end subroutine bar
- .Ve
- .Sp
- When \fB\-finline\-arg\-packing\fR is in effect, this packing will be
- performed by inline code. This allows for more optimization while
- increasing code size.
- .Sp
- \&\fB\-finline\-arg\-packing\fR is implied by any of the \fB\-O\fR options
- except when optimizing for size via \fB\-Os\fR. If the code
- contains a very large number of argument that have to be packed, code
- size and also compilation time may become excessive. If that is the
- case, it may be better to disable this option. Instances of packing
- can be found by using by using \fB\-Warray\-temporaries\fR.
- .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.
- .Sp
- With \fB\-finit\-derived\fR, components of derived type variables will be
- initialized according to these flags. Components whose type is not covered by
- an explicit \fB\-finit\-*\fR flag will be treated as described above with
- \&\fB\-finit\-local\-zero\fR.
- .Sp
- These options do not initialize
- .RS 4
- .IP "*" 4
- objects with the \s-1POINTER\s0 attribute
- .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
- The \fB\-finit\-integer\fR option will parse the value into an
- integer of type \f(CW\*(C`INTEGER(kind=C_LONG)\*(C'\fR on the host. Said value
- is then assigned to the integer variables in the Fortran code, which
- might result in wraparound if the value is too large for the kind.
- .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
- except \fB\-O0\fR and \fB\-Og\fR. Optimizations enabled by this option
- include:
- .RS 4
- .ie n .IP "*<inlining calls to ""MATMUL"",>" 4
- .el .IP "*<inlining calls to \f(CWMATMUL\fR,>" 4
- .IX Item "*<inlining calls to MATMUL,>"
- .PD 0
- .IP "*<elimination of identical function calls within expressions,>" 4
- .IX Item "*<elimination of identical function calls within expressions,>"
- .ie n .IP "*<removing unnecessary calls to ""TRIM"" in comparisons and assignments,>" 4
- .el .IP "*<removing unnecessary calls to \f(CWTRIM\fR in comparisons and assignments,>" 4
- .IX Item "*<removing unnecessary calls to TRIM in comparisons and assignments,>"
- .ie n .IP "*<replacing TRIM(a) with ""a(1:LEN_TRIM(a))"" and>" 4
- .el .IP "*<replacing \f(CWTRIM(a)\fR with \f(CWa(1:LEN_TRIM(a))\fR and>" 4
- .IX Item "*<replacing TRIM(a) with a(1:LEN_TRIM(a)) and>"
- .ie n .IP "*<short\-circuiting of logical operators ("".AND."" and "".OR."").>" 4
- .el .IP "*<short\-circuiting of logical operators (\f(CW.AND.\fR and \f(CW.OR.\fR).>" 4
- .IX Item "*<short-circuiting of logical operators (.AND. and .OR.).>"
- .RE
- .RS 4
- .PD
- .Sp
- It can be deselected by specifying \fB\-fno\-frontend\-optimize\fR.
- .RE
- .IP "\fB\-ffrontend\-loop\-interchange\fR" 4
- .IX Item "-ffrontend-loop-interchange"
- Attempt to interchange loops in the Fortran front end where
- profitable. Enabled by default by any \fB\-O\fR option.
- At the moment, this option only affects \f(CW\*(C`FORALL\*(C'\fR and
- \&\f(CW\*(C`DO CONCURRENT\*(C'\fR statements with several forall triplets.
- .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://bugs.linaro.org/\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), \fIdbx\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\-2020 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
|