| .\" 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 "2016-07-26" "gcc-4.9.4" "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 \-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 \-fno\-fixed\-form \-fno\-range\-check |
| \&\-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 \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 \-Wfunction\-elimination \-Wimplicit\-interface |
| \&\-Wimplicit\-procedure \-Wintrinsic\-shadow \-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 \-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\-logical=\fR\fI<true|false>\fR |
| \&\fB\-finit\-real=\fR\fI<zero|inf|\-inf|nan|snan>\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\-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\-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. |
| .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\-pedantic\fR" 4 |
| .IX Item "-pedantic" |
| 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\-Wno\-tabs\fR, \fB\-Wintrinsic\-shadow\fR, |
| \&\fB\-Wline\-truncation\fR, \fB\-Wtarget\-lifetime\fR, |
| \&\fB\-Wreal\-q\-constant\fR and \fB\-Wunused\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\-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. |
| .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. |
| .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\-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 "\(bu" 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 "\(bu" 4 |
| A \s-1LOGICAL SELECT\s0 construct has three \s-1CASE\s0 statements. |
| .IP "\(bu" 4 |
| A \s-1TRANSFER\s0 specifies a source that is shorter than the destination. |
| .IP "\(bu" 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 "\(bu" 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\-Wno\-tabs\fR will cause |
| a warning to be issued if a tab is encountered. Note, \fB\-Wno\-tabs\fR |
| is active for \fB\-pedantic\fR, \fB\-std=f95\fR, \fB\-std=f2003\fR, |
| \&\fB\-std=f2008\fR and \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. |
| .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\-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 not included in \fB\-Wall\fR but is implied by \fB\-Wall \-Wextra\fR. |
| .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 other defaults like |
| \&\fB\-fcase\-lower\fR and 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. |
| .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 |
| .RE |
| .IP "\fB\-fbounds\-check\fR" 4 |
| .IX Item "-fbounds-check" |
| Deprecated alias for \fB\-fcheck=bounds\fR. |
| .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\-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\-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. These options do not initialize |
| .RS 4 |
| .IP "\(bu" 4 |
| allocatable arrays |
| .IP "\(bu" 4 |
| components of derived type variables |
| .IP "\(bu" 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 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 |
| <\fBhttp://gcc.gnu.org/bugs.html\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\-2014 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 |