]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/fortran/invoke.texi
PR fortran/95090 - ICE: identifier overflow
[thirdparty/gcc.git] / gcc / fortran / invoke.texi
CommitLineData
7e7065b9 1@c Copyright (C) 2004-2020 Free Software Foundation, Inc.
7fc15ba5 2@c This is part of the GNU Fortran manual.
6de9cd9a
DN
3@c For copying conditions, see the file gfortran.texi.
4
5@ignore
6@c man begin COPYRIGHT
7e7065b9 7Copyright @copyright{} 2004-2020 Free Software Foundation, Inc.
6de9cd9a
DN
8
9Permission is granted to copy, distribute and/or modify this document
07a67d6a 10under the terms of the GNU Free Documentation License, Version 1.3 or
6de9cd9a 11any later version published by the Free Software Foundation; with the
70b1e376
RW
12Invariant Sections being ``Funding Free Software'', the Front-Cover
13Texts being (a) (see below), and with the Back-Cover Texts being (b)
14(see below). A copy of the license is included in the gfdl(7) man page.
6ccde948 15
6de9cd9a
DN
16(a) The FSF's Front-Cover Text is:
17
18 A GNU Manual
19
20(b) The FSF's Back-Cover Text is:
21
22 You have freedom to copy and modify this GNU Manual, like GNU
23 software. Copies published by the Free Software Foundation raise
24 funds for GNU development.
25@c man end
26@c Set file name and title for the man page.
27@setfilename gfortran
7fc15ba5 28@settitle GNU Fortran compiler.
6de9cd9a
DN
29@c man begin SYNOPSIS
30gfortran [@option{-c}|@option{-S}|@option{-E}]
31 [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
32 [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
33 [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
34 [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
35 [@option{-f}@var{option}@dots{}]
6ccde948 36 [@option{-m}@var{machine-option}@dots{}]
6de9cd9a
DN
37 [@option{-o} @var{outfile}] @var{infile}@dots{}
38
39Only the most useful options are listed here; see below for the
40remainder.
41@c man end
42@c man begin SEEALSO
43gpl(7), gfdl(7), fsf-funding(7),
180295ed 44cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), dbx(1)
6de9cd9a
DN
45and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
46@file{ld}, @file{binutils} and @file{gdb}.
47@c man end
48@c man begin BUGS
49For instructions on reporting bugs, see
2f41c1d6 50@w{@value{BUGURL}}.
6de9cd9a
DN
51@c man end
52@c man begin AUTHOR
53See the Info entry for @command{gfortran} for contributors to GCC and
7fc15ba5 54GNU Fortran.
6de9cd9a
DN
55@c man end
56@end ignore
57
7fc15ba5
BM
58@node Invoking GNU Fortran
59@chapter GNU Fortran Command Options
60@cindex GNU Fortran command options
6de9cd9a 61@cindex command options
7fc15ba5 62@cindex options, @command{gfortran} command
6de9cd9a
DN
63
64@c man begin DESCRIPTION
65
66The @command{gfortran} command supports all the options supported by the
f4347334
ZG
67@command{gcc} command. Only options specific to GNU Fortran are documented
68here.
6de9cd9a
DN
69
70@xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
71Collection (GCC)}, for information
72on the non-Fortran-specific aspects of the @command{gcc} command (and,
73therefore, the @command{gfortran} command).
74
75@cindex options, negative forms
7fc15ba5 76All GCC and GNU Fortran options
6de9cd9a
DN
77are accepted both by @command{gfortran} and by @command{gcc}
78(as well as any other drivers built at the same time,
79such as @command{g++}),
7fc15ba5
BM
80since adding GNU Fortran to the GCC distribution
81enables acceptance of GNU Fortran options
6de9cd9a
DN
82by all of the relevant drivers.
83
84In some cases, options have positive and negative forms;
85the negative form of @option{-ffoo} would be @option{-fno-foo}.
86This manual documents only one of these two forms, whichever
87one is not the default.
88@c man end
89
90@menu
91* Option Summary:: Brief list of all @command{gfortran} options,
92 without explanations.
93* Fortran Dialect Options:: Controlling the variant of Fortran language
94 compiled.
670637ee 95* Preprocessing Options:: Enable and customize preprocessing.
592600ce 96* Error and Warning Options:: How picky should the compiler be?
6de9cd9a
DN
97* Debugging Options:: Symbol tables, measurements, and debugging dumps.
98* Directory Options:: Where to find module files
70263321 99* Link Options :: Influencing the linking step
eaa90d25 100* Runtime Options:: Influencing runtime behavior
6de9cd9a
DN
101* Code Gen Options:: Specifying conventions for function calls, data layout
102 and register usage.
e655a6cc
TK
103* Interoperability Options:: Options for interoperability with other
104 languages.
a2bef74c 105* Environment Variables:: Environment variables that affect @command{gfortran}.
6de9cd9a
DN
106@end menu
107
108@node Option Summary
a2bef74c 109@section Option summary
6de9cd9a
DN
110
111@c man begin OPTIONS
112
113Here is a summary of all the options specific to GNU Fortran, grouped
114by type. Explanations are in the following sections.
115
116@table @emph
117@item Fortran Language Options
a2bef74c 118@xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
7a56096c 119@gccoptlist{-fall-intrinsics -fallow-argument-mismatch -fallow-invalid-boz @gol
32bef8ff
ME
120-fbackslash -fcray-pointer -fd-lines-as-code -fd-lines-as-comments @gol
121-fdec -fdec-char-conversions -fdec-structure -fdec-intrinsic-ints @gol
122-fdec-static -fdec-math -fdec-include -fdec-format-defaults @gol
123-fdec-blank-format-item -fdefault-double-8 -fdefault-integer-8 @gol
124-fdefault-real-8 -fdefault-real-10 -fdefault-real-16 -fdollar-ok @gol
125-ffixed-line-length-@var{n} -ffixed-line-length-none -fpad-source @gol
126-ffree-form -ffree-line-length-@var{n} -ffree-line-length-none @gol
127-fimplicit-none -finteger-4-integer-8 -fmax-identifier-length @gol
128-fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp @gol
129-freal-4-real-10 -freal-4-real-16 -freal-4-real-8 -freal-8-real-10 @gol
130-freal-8-real-16 -freal-8-real-4 -std=@var{std} -ftest-forall-temp
f4347334 131}
6de9cd9a 132
670637ee
DF
133@item Preprocessing Options
134@xref{Preprocessing Options,,Enable and customize preprocessing}.
f4347334
ZG
135@gccoptlist{-A-@var{question}@r{[}=@var{answer}@r{]}
136-A@var{question}=@var{answer} -C -CC -D@var{macro}@r{[}=@var{defn}@r{]}
137-H -P @gol
138-U@var{macro} -cpp -dD -dI -dM -dN -dU -fworking-directory
139-imultilib @var{dir} @gol
140-iprefix @var{file} -iquote -isysroot @var{dir} -isystem @var{dir} -nocpp
141-nostdinc @gol
142-undef
143}
670637ee 144
592600ce 145@item Error and Warning Options
a2bef74c
DF
146@xref{Error and Warning Options,,Options to request or suppress errors
147and warnings}.
e0b9e5f9 148@gccoptlist{-Waliasing -Wall -Wampersand -Warray-bounds @gol
15e23330
TK
149-Wc-binding-type -Wcharacter-truncation -Wconversion @gol
150-Wdo-subscript -Wfunction-elimination -Wimplicit-interface @gol
f4436343 151-Wimplicit-procedure -Wintrinsic-shadow -Wuse-without-only @gol
91c4891a
ME
152-Wintrinsics-std -Wline-truncation -Wno-align-commons @gol
153-Wno-overwrite-recursive -Wno-tabs -Wreal-q-constant -Wsurprising @gol
154-Wunderflow -Wunused-parameter -Wrealloc-lhs -Wrealloc-lhs-all @gol
155-Wfrontend-loop-interchange -Wtarget-lifetime -fmax-errors=@var{n} @gol
156-fsyntax-only -pedantic @gol
f4436343 157-pedantic-errors @gol
f4347334 158}
6de9cd9a
DN
159
160@item Debugging Options
a2bef74c 161@xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
f4347334 162@gccoptlist{-fbacktrace -fdump-fortran-optimized -fdump-fortran-original @gol
5c6aa9a8
TK
163-fdump-fortran-global -fdump-parse-tree -ffpe-trap=@var{list} @gol
164-ffpe-summary=@var{list}
f4347334 165}
6de9cd9a
DN
166
167@item Directory Options
a2bef74c 168@xref{Directory Options,,Options for directory search}.
d8ddea40 169@gccoptlist{-I@var{dir} -J@var{dir} -fintrinsic-modules-path @var{dir}}
6de9cd9a 170
70263321
DF
171@item Link Options
172@xref{Link Options,,Options for influencing the linking step}.
173@gccoptlist{-static-libgfortran}
174
eaa90d25
TK
175@item Runtime Options
176@xref{Runtime Options,,Options for influencing runtime behavior}.
80b91c0b 177@gccoptlist{-fconvert=@var{conversion} -fmax-subrecord-length=@var{length} @gol
f4347334
ZG
178-frecord-marker=@var{length} -fsign-zero
179}
eaa90d25 180
e655a6cc
TK
181@item Interoperability Options
182@xref{Interoperability Options,,Options for interoperability}.
6328ce1f 183@gccoptlist{-fc-prototypes -fc-prototypes-external}
e655a6cc 184
6de9cd9a 185@item Code Generation Options
a2bef74c 186@xref{Code Gen Options,,Options for code generation conventions}.
f4347334 187@gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol
ffeebc4f
JJ
188-fbounds-check -ftail-call-workaround -ftail-call-workaround=@var{n} @gol
189-fcheck-array-temporaries @gol
df1afcca 190-fcheck=@var{<all|array-temps|bits|bounds|do|mem|pointer|recursion>} @gol
f4436343
ME
191-fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c @gol
192-ffrontend-loop-interchange -ffrontend-optimize @gol
f4347334 193-finit-character=@var{n} -finit-integer=@var{n} -finit-local-zero @gol
f4436343 194-finit-derived -finit-logical=@var{<true|false>} @gol
95d27703
TK
195-finit-real=@var{<zero|inf|-inf|nan|snan>}
196-finline-matmul-limit=@var{n} @gol
197-finline-arg-packing -fmax-array-constructor=@var{n} @gol
f4436343
ME
198-fmax-stack-var-size=@var{n} -fno-align-commons -fno-automatic @gol
199-fno-protect-parens -fno-underscoring -fsecond-underscore @gol
200-fpack-derived -frealloc-lhs -frecursive -frepack-arrays @gol
201-fshort-enums -fstack-arrays
f4347334 202}
6de9cd9a
DN
203@end table
204
6de9cd9a 205@node Fortran Dialect Options
a2bef74c 206@section Options controlling Fortran dialect
6de9cd9a
DN
207@cindex dialect options
208@cindex language, dialect options
209@cindex options, dialect
210
3397327c
BM
211The following options control the details of the Fortran dialect
212accepted by the compiler:
6de9cd9a
DN
213
214@table @gcctabopt
4ba96c02 215@item -ffree-form
4d04d67a 216@itemx -ffixed-form
32864778 217@opindex @code{ffree-form}
3435c26f 218@opindex @code{ffixed-form}
8578f640 219@cindex options, Fortran dialect
e739dfac
DF
220@cindex file format, free
221@cindex file format, fixed
49de9e73 222Specify the layout used by the source file. The free form layout
6de9cd9a 223was introduced in Fortran 90. Fixed form was traditionally used in
3397327c
BM
224older Fortran programs. When neither option is specified, the source
225form is determined by the file extension.
6de9cd9a 226
a23eec13 227@item -fall-intrinsics
32864778 228@opindex @code{fall-intrinsics}
aad9c4f4
AM
229This option causes all intrinsic procedures (including the GNU-specific
230extensions) to be accepted. This can be useful with @option{-std=f95} to
231force standard-compliance but get access to the full range of intrinsics
232available with @command{gfortran}. As a consequence, @option{-Wintrinsics-std}
233will be ignored and no user-defined procedure with the same name as any
234intrinsic will be called except when it is explicitly declared @code{EXTERNAL}.
a23eec13 235
7a56096c
TK
236@item -fallow-argument-mismatch
237@opindex @code{fallow-argument-mismatch}
238Some code contains calls to external procedures whith mismatches
239between the calls and the procedure definition, or with mismatches
240between different calls. Such code is non-conforming, and will usually
e0b9e5f9
TK
241be flagged wi1th an error. This options degrades the error to a
242warning, which can only be disabled by disabling all warnings vial
243@option{-w}. Only a single occurrence per argument is flagged by this
244warning. @option{-fallow-argument-mismatch} is implied by
245@option{-std=legacy}.
246
247Using this option is @emph{strongly} discouraged. It is possible to
248provide standard-conforming code which allows different types of
249arguments by using an explicit interface and @code{TYPE(*)}.
7a56096c 250
8dc63166
SK
251@item -fallow-invalid-boz
252@opindex @code{allow-invalid-boz}
f8e36f0a 253A BOZ literal constant can occur in a limited number of contexts in
8dc63166
SK
254standard conforming Fortran. This option degrades an error condition
255to a warning, and allows a BOZ literal constant to appear where the
f8e36f0a 256Fortran standard would otherwise prohibit its use.
8dc63166 257
e0bcf78c 258@item -fd-lines-as-code
4d04d67a 259@itemx -fd-lines-as-comments
32864778
DF
260@opindex @code{fd-lines-as-code}
261@opindex @code{fd-lines-as-comments}
4ba96c02 262Enable special treatment for lines beginning with @code{d} or @code{D}
3397327c
BM
263in fixed form sources. If the @option{-fd-lines-as-code} option is
264given they are treated as if the first column contained a blank. If the
e0bcf78c
TS
265@option{-fd-lines-as-comments} option is given, they are treated as
266comment lines.
267
f6288c24
FR
268@item -fdec
269@opindex @code{fdec}
270DEC compatibility mode. Enables extensions and other features that mimic
271the default behavior of older compilers (such as DEC).
272These features are non-standard and should be avoided at all costs.
f6d17ecd 273For details on GNU Fortran's implementation of these extensions see the
f6288c24
FR
274full documentation.
275
276Other flags enabled by this switch are:
2afeb1ca
ME
277@option{-fdollar-ok} @option{-fcray-pointer} @option{-fdec-char-conversions}
278@option{-fdec-structure} @option{-fdec-intrinsic-ints} @option{-fdec-static}
279@option{-fdec-math} @option{-fdec-include} @option{-fdec-blank-format-item}
f4436343 280@option{-fdec-format-defaults}
f6d17ecd
FR
281
282If @option{-fd-lines-as-code}/@option{-fd-lines-as-comments} are unset, then
283@option{-fdec} also sets @option{-fd-lines-as-comments}.
f6288c24 284
2afeb1ca
ME
285@item -fdec-char-conversions
286@opindex @code{fdec-char-conversions}
32bef8ff 287Enable the use of character literals in assignments and @code{DATA} statements
2afeb1ca
ME
288for non-character variables.
289
f6288c24
FR
290@item -fdec-structure
291@opindex @code{fdec-structure}
292Enable DEC @code{STRUCTURE} and @code{RECORD} as well as @code{UNION},
293@code{MAP}, and dot ('.') as a member separator (in addition to '%'). This is
294provided for compatibility only; Fortran 90 derived types should be used
295instead where possible.
296
c98583e9
FR
297@item -fdec-intrinsic-ints
298@opindex @code{fdec-intrinsic-ints}
299Enable B/I/J/K kind variants of existing integer functions (e.g. BIAND, IIAND,
300JIAND, etc...). For a complete list of intrinsics see the full documentation.
301
8e8c2744
FR
302@item -fdec-math
303@opindex @code{fdec-math}
304Enable legacy math intrinsics such as COTAN and degree-valued trigonometric
305functions (e.g. TAND, ATAND, etc...) for compatability with older code.
306
34d567d1
FR
307@item -fdec-static
308@opindex @code{fdec-static}
309Enable DEC-style STATIC and AUTOMATIC attributes to explicitly specify
310the storage of variables and other objects.
311
99b5ace4
JJ
312@item -fdec-include
313@opindex @code{fdec-include}
314Enable parsing of INCLUDE as a statement in addition to parsing it as
315INCLUDE line. When parsed as INCLUDE statement, INCLUDE does not have to
316be on a single line and can use line continuations.
317
88a8126a
JB
318@item -fdec-format-defaults
319@opindex @code{fdec-format-defaults}
320Enable format specifiers F, G and I to be used without width specifiers,
321default widths will be used instead.
322
17f62b7e
JM
323@item -fdec-blank-format-item
324@opindex @code{fdec-blank-format-item}
325Enable a blank format item at the end of a format specification i.e. nothing
326following the final comma.
327
6de9cd9a 328@item -fdollar-ok
32864778 329@opindex @code{fdollar-ok}
ab940b73 330@cindex @code{$}
6de9cd9a
DN
331@cindex symbol names
332@cindex character set
f4a55802
DF
333Allow @samp{$} as a valid non-first character in a symbol name. Symbols
334that start with @samp{$} are rejected since it is unclear which rules to
cba2a54e 335apply to implicit typing as different vendors implement different rules.
6e8cb9be 336Using @samp{$} in @code{IMPLICIT} statements is also rejected.
6de9cd9a 337
4e6bf178
TB
338@item -fbackslash
339@opindex @code{backslash}
131c66cd
FXC
340@cindex backslash
341@cindex escape characters
8fc541d3
FXC
342Change the interpretation of backslashes in string literals from a single
343backslash character to ``C-style'' escape characters. The following
344combinations are expanded @code{\a}, @code{\b}, @code{\f}, @code{\n},
345@code{\r}, @code{\t}, @code{\v}, @code{\\}, and @code{\0} to the ASCII
346characters alert, backspace, form feed, newline, carriage return,
347horizontal tab, vertical tab, backslash, and NUL, respectively.
348Additionally, @code{\x}@var{nn}, @code{\u}@var{nnnn} and
349@code{\U}@var{nnnnnnnn} (where each @var{n} is a hexadecimal digit) are
350translated into the Unicode characters corresponding to the specified code
351points. All other combinations of a character preceded by \ are
352unexpanded.
131c66cd 353
654b6073
FXC
354@item -fmodule-private
355@opindex @code{fmodule-private}
356@cindex module entities
357@cindex private
358Set the default accessibility of module entities to @code{PRIVATE}.
359Use-associated entities will not be accessible unless they are explicitly
360declared as @code{PUBLIC}.
361
6de9cd9a 362@item -ffixed-line-length-@var{n}
32864778 363@opindex @code{ffixed-line-length-}@var{n}
e739dfac 364@cindex file format, fixed
6de9cd9a 365Set column after which characters are ignored in typical fixed-form
f03d260a
JJ
366lines in the source file, and, unless @code{-fno-pad-source}, through which
367spaces are assumed (as if padded to that length) after the ends of short
368fixed-form lines.
6de9cd9a 369
6de9cd9a 370Popular values for @var{n} include 72 (the
3397327c 371standard and the default), 80 (card image), and 132 (corresponding
6de9cd9a 372to ``extended-source'' options in some popular compilers).
3397327c 373@var{n} may also be @samp{none}, meaning that the entire line is meaningful
6de9cd9a
DN
374and that continued character constants never have implicit spaces appended
375to them to fill out the line.
376@option{-ffixed-line-length-0} means the same thing as
377@option{-ffixed-line-length-none}.
378
f03d260a
JJ
379@item -fno-pad-source
380@opindex @code{fpad-source}
381By default fixed-form lines have spaces assumed (as if padded to that length)
382after the ends of short fixed-form lines. This is not done either if
383@option{-ffixed-line-length-0}, @option{-ffixed-line-length-none} or
384if @option{-fno-pad-source} option is used. With any of those options
385continued character constants never have implicit spaces appended
386to them to fill out the line.
387
16ab8e74 388@item -ffree-line-length-@var{n}
32864778 389@opindex @code{ffree-line-length-}@var{n}
e739dfac 390@cindex file format, free
16ab8e74 391Set column after which characters are ignored in typical free-form
3397327c 392lines in the source file. The default value is 132.
16ab8e74
BF
393@var{n} may be @samp{none}, meaning that the entire line is meaningful.
394@option{-ffree-line-length-0} means the same thing as
395@option{-ffree-line-length-none}.
396
6de9cd9a 397@item -fmax-identifier-length=@var{n}
32864778 398@opindex @code{fmax-identifier-length=}@var{n}
6de9cd9a 399Specify the maximum allowed identifier length. Typical values are
f489fba1 40031 (Fortran 95) and 63 (Fortran 2003 and Fortran 2008).
6de9cd9a 401
6de9cd9a 402@item -fimplicit-none
32864778 403@opindex @code{fimplicit-none}
6de9cd9a 404Specify that no implicit typing is allowed, unless overridden by explicit
40746dcc
BM
405@code{IMPLICIT} statements. This is the equivalent of adding
406@code{implicit none} to the start of every procedure.
6de9cd9a 407
83d890b9 408@item -fcray-pointer
32864778 409@opindex @code{fcray-pointer}
3397327c
BM
410Enable the Cray pointer extension, which provides C-like pointer
411functionality.
83d890b9 412
41dbbb37
TS
413@item -fopenacc
414@opindex @code{fopenacc}
415@cindex OpenACC
416Enable the OpenACC extensions. This includes OpenACC @code{!$acc}
417directives in free form and @code{c$acc}, @code{*$acc} and
418@code{!$acc} directives in fixed form, @code{!$} conditional
419compilation sentinels in free form and @code{c$}, @code{*$} and
420@code{!$} sentinels in fixed form, and when linking arranges for the
421OpenACC runtime library to be linked in.
422
6c7a4dfd 423@item -fopenmp
32864778 424@opindex @code{fopenmp}
4e8b3590 425@cindex OpenMP
3397327c
BM
426Enable the OpenMP extensions. This includes OpenMP @code{!$omp} directives
427in free form
6c7a4dfd 428and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
3397327c
BM
429@code{!$} conditional compilation sentinels in free form
430and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form,
6c7a4dfd 431and when linking arranges for the OpenMP runtime library to be linked
1e7de83b 432in. The option @option{-fopenmp} implies @option{-frecursive}.
6c7a4dfd 433
200c5036 434@item -fno-range-check
32864778 435@opindex @code{frange-check}
200c5036 436Disable range checking on results of simplification of constant
a84b9ee8
SK
437expressions during compilation. For example, GNU Fortran will give
438an error at compile time when simplifying @code{a = 1. / 0}.
439With this option, no error will be given and @code{a} will be assigned
440the value @code{+Infinity}. If an expression evaluates to a value
441outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}],
442then the expression will be replaced by @code{-Inf} or @code{+Inf}
443as appropriate.
40746dcc
BM
444Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
445on most systems, but with @option{-fno-range-check} the value will
446``wrap around'' and @code{i} will be initialized to @math{-1} instead.
54554825 447
9803c5f0
JW
448@item -fdefault-integer-8
449@opindex @code{fdefault-integer-8}
8f606521
JW
450Set the default integer and logical types to an 8 byte wide type. This option
451also affects the kind of integer constants like @code{42}. Unlike
a4cf752c
JW
452@option{-finteger-4-integer-8}, it does not promote variables with explicit
453kind declaration.
9803c5f0
JW
454
455@item -fdefault-real-8
456@opindex @code{fdefault-real-8}
8ff7780c
DH
457Set the default real type to an 8 byte wide type. This option also affects
458the kind of non-double real constants like @code{1.0}. This option promotes
459the default width of @code{DOUBLE PRECISION} and double real constants
460like @code{1.d0} to 16 bytes if possible. If @code{-fdefault-double-8}
461is given along with @code{fdefault-real-8}, @code{DOUBLE PRECISION}
462and double real constants are not promoted. Unlike @option{-freal-4-real-8},
463@code{fdefault-real-8} does not promote variables with explicit kind
464declarations.
9803c5f0 465
d16d81b5
JW
466@item -fdefault-real-10
467@opindex @code{fdefault-real-10}
8ff7780c
DH
468Set the default real type to an 10 byte wide type. This option also affects
469the kind of non-double real constants like @code{1.0}. This option promotes
470the default width of @code{DOUBLE PRECISION} and double real constants
471like @code{1.d0} to 16 bytes if possible. If @code{-fdefault-double-8}
472is given along with @code{fdefault-real-10}, @code{DOUBLE PRECISION}
473and double real constants are not promoted. Unlike @option{-freal-4-real-10},
474@code{fdefault-real-10} does not promote variables with explicit kind
475declarations.
d16d81b5
JW
476
477@item -fdefault-real-16
478@opindex @code{fdefault-real-16}
8ff7780c
DH
479Set the default real type to an 16 byte wide type. This option also affects
480the kind of non-double real constants like @code{1.0}. This option promotes
481the default width of @code{DOUBLE PRECISION} and double real constants
482like @code{1.d0} to 16 bytes if possible. If @code{-fdefault-double-8}
483is given along with @code{fdefault-real-16}, @code{DOUBLE PRECISION}
484and double real constants are not promoted. Unlike @option{-freal-4-real-16},
485@code{fdefault-real-16} does not promote variables with explicit kind
486declarations.
d16d81b5 487
9803c5f0
JW
488@item -fdefault-double-8
489@opindex @code{fdefault-double-8}
8ff7780c
DH
490Set the @code{DOUBLE PRECISION} type and double real constants
491like @code{1.d0} to an 8 byte wide type. Do nothing if this
492is already the default. This option prevents @option{-fdefault-real-8},
493@option{-fdefault-real-10}, and @option{-fdefault-real-16},
494from promoting @code{DOUBLE PRECISION} and double real constants like
495@code{1.d0} to 16 bytes.
9803c5f0
JW
496
497@item -finteger-4-integer-8
498@opindex @code{finteger-4-integer-8}
499Promote all @code{INTEGER(KIND=4)} entities to an @code{INTEGER(KIND=8)}
500entities. If @code{KIND=8} is unavailable, then an error will be issued.
501This option should be used with care and may not be suitable for your codes.
502Areas of possible concern include calls to external procedures,
503alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
504BOZ literal constant conversion, and I/O. Inspection of the intermediate
505representation of the translated Fortran code, produced by
506@option{-fdump-tree-original}, is suggested.
507
f4347334
ZG
508@item -freal-4-real-8
509@itemx -freal-4-real-10
9803c5f0 510@itemx -freal-4-real-16
f4347334
ZG
511@itemx -freal-8-real-4
512@itemx -freal-8-real-10
513@itemx -freal-8-real-16
514@opindex @code{freal-4-real-8}
515@opindex @code{freal-4-real-10}
516@opindex @code{freal-4-real-16}
517@opindex @code{freal-8-real-4}
518@opindex @code{freal-8-real-10}
519@opindex @code{freal-8-real-16}
520@cindex options, real kind type promotion
521Promote all @code{REAL(KIND=M)} entities to @code{REAL(KIND=N)} entities.
522If @code{REAL(KIND=N)} is unavailable, then an error will be issued.
523All other real kind types are unaffected by this option.
524These options should be used with care and may not be suitable for your
525codes. Areas of possible concern include calls to external procedures,
526alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
527BOZ literal constant conversion, and I/O. Inspection of the intermediate
528representation of the translated Fortran code, produced by
529@option{-fdump-tree-original}, is suggested.
530
6de9cd9a 531@item -std=@var{std}
32864778 532@opindex @code{std=}@var{std} option
8179b067
JB
533Specify the standard to which the program is expected to conform,
534which may be one of @samp{f95}, @samp{f2003}, @samp{f2008},
535@samp{f2018}, @samp{gnu}, or @samp{legacy}. The default value for
536@var{std} is @samp{gnu}, which specifies a superset of the latest
537Fortran standard that includes all of the extensions supported by GNU
538Fortran, although warnings will be given for obsolete extensions not
539recommended for use in new code. The @samp{legacy} value is
540equivalent but without the warnings for obsolete extensions, and may
541be useful for old non-standard programs. The @samp{f95},
542@samp{f2003}, @samp{f2008}, and @samp{f2018} values specify strict
543conformance to the Fortran 95, Fortran 2003, Fortran 2008 and Fortran
5442018 standards, respectively; errors are given for all extensions
545beyond the relevant language standard, and warnings are given for the
546Fortran 77 features that are permitted but obsolescent in later
286f737c
JW
547standards. The deprecated option @samp{-std=f2008ts} acts as an alias for
548@samp{-std=f2018}. It is only present for backwards compatibility with
549earlier gfortran versions and should not be used any more.
6de9cd9a 550
7bd5dad2
LK
551@item -ftest-forall-temp
552@opindex @code{ftest-forall-temp}
553Enhance test coverage by forcing most forall assignments to use temporary.
554
6de9cd9a
DN
555@end table
556
670637ee
DF
557@node Preprocessing Options
558@section Enable and customize preprocessing
559@cindex preprocessor
560@cindex options, preprocessor
561@cindex CPP
562
563Preprocessor related options. See section
564@ref{Preprocessing and conditional compilation} for more detailed
565information on preprocessing in @command{gfortran}.
566
567@table @gcctabopt
568@item -cpp
4d04d67a 569@itemx -nocpp
670637ee
DF
570@opindex @code{cpp}
571@opindex @code{fpp}
572@cindex preprocessor, enable
573@cindex preprocessor, disable
574Enable preprocessing. The preprocessor is automatically invoked if
575the file extension is @file{.fpp}, @file{.FPP}, @file{.F}, @file{.FOR},
576@file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
577this option to manually enable preprocessing of any kind of Fortran file.
578
579To disable preprocessing of files with any of the above listed extensions,
580use the negative form: @option{-nocpp}.
581
f90b55a6
TK
582The preprocessor is run in traditional mode. Any restrictions of the
583file-format, especially the limits on line length, apply for
584preprocessed output as well, so it might be advisable to use the
585@option{-ffree-line-length-none} or @option{-ffixed-line-length-none}
586options.
670637ee
DF
587
588@item -dM
589@opindex @code{dM}
590@cindex preprocessor, debugging
591@cindex debugging, preprocessor
592Instead of the normal output, generate a list of @code{'#define'}
593directives for all the macros defined during the execution of the
594preprocessor, including predefined macros. This gives you a way
595of finding out what is predefined in your version of the preprocessor.
596Assuming you have no file @file{foo.f90}, the command
597@smallexample
fc1e05d2 598 touch foo.f90; gfortran -cpp -E -dM foo.f90
670637ee
DF
599@end smallexample
600will show all the predefined macros.
601
602@item -dD
603@opindex @code{dD}
604@cindex preprocessor, debugging
605@cindex debugging, preprocessor
606Like @option{-dM} except in two respects: it does not include the
607predefined macros, and it outputs both the @code{#define} directives
608and the result of preprocessing. Both kinds of output go to the
609standard output file.
610
611@item -dN
612@opindex @code{dN}
613@cindex preprocessor, debugging
614@cindex debugging, preprocessor
615Like @option{-dD}, but emit only the macro names, not their expansions.
616
617@item -dU
618@opindex @code{dU}
619@cindex preprocessor, debugging
620@cindex debugging, preprocessor
621Like @option{dD} except that only macros that are expanded, or whose
622definedness is tested in preprocessor directives, are output; the
623output is delayed until the use or test of the macro; and @code{'#undef'}
624directives are also output for macros tested but undefined at the time.
625
626@item -dI
627@opindex @code{dI}
628@cindex preprocessor, debugging
629@cindex debugging, preprocessor
630Output @code{'#include'} directives in addition to the result
631of preprocessing.
632
633@item -fworking-directory
634@opindex @code{fworking-directory}
635@cindex preprocessor, working directory
636Enable generation of linemarkers in the preprocessor output that will
637let the compiler know the current working directory at the time of
638preprocessing. When this option is enabled, the preprocessor will emit,
639after the initial linemarker, a second linemarker with the current
640working directory followed by two slashes. GCC will use this directory,
c5a0818e 641when it is present in the preprocessed input, as the directory emitted
670637ee
DF
642as the current working directory in some debugging information formats.
643This option is implicitly enabled if debugging information is enabled,
644but this can be inhibited with the negated form
645@option{-fno-working-directory}. If the @option{-P} flag is present
646in the command line, this option has no effect, since no @code{#line}
647directives are emitted whatsoever.
648
c3280643
DF
649@item -idirafter @var{dir}
650@opindex @code{idirafter @var{dir}}
651@cindex preprocessing, include path
652Search @var{dir} for include files, but do it after all directories
653specified with @option{-I} and the standard system directories have
654been exhausted. @var{dir} is treated as a system include directory.
655If dir begins with @code{=}, then the @code{=} will be replaced by
656the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
657
670637ee
DF
658@item -imultilib @var{dir}
659@opindex @code{imultilib @var{dir}}
660@cindex preprocessing, include path
661Use @var{dir} as a subdirectory of the directory containing target-specific
662C++ headers.
663
664@item -iprefix @var{prefix}
665@opindex @code{iprefix @var{prefix}}
666@cindex preprocessing, include path
667Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
668options. If the @var{prefix} represents a directory, you should include
669the final @code{'/'}.
670
671@item -isysroot @var{dir}
672@opindex @code{isysroot @var{dir}}
673@cindex preprocessing, include path
674This option is like the @option{--sysroot} option, but applies only to
675header files. See the @option{--sysroot} option for more information.
676
677@item -iquote @var{dir}
678@opindex @code{iquote @var{dir}}
679@cindex preprocessing, include path
680Search @var{dir} only for header files requested with @code{#include "file"};
681they are not searched for @code{#include <file>}, before all directories
682specified by @option{-I} and before the standard system directories. If
683@var{dir} begins with @code{=}, then the @code{=} will be replaced by the
684sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
685
686@item -isystem @var{dir}
687@opindex @code{isystem @var{dir}}
688@cindex preprocessing, include path
689Search @var{dir} for header files, after all directories specified by
690@option{-I} but before the standard system directories. Mark it as a
691system directory, so that it gets the same special treatment as is
692applied to the standard system directories. If @var{dir} begins with
693@code{=}, then the @code{=} will be replaced by the sysroot prefix;
694see @option{--sysroot} and @option{-isysroot}.
695
696@item -nostdinc
697@opindex @code{nostdinc}
698Do not search the standard system directories for header files. Only
699the directories you have specified with @option{-I} options (and the
700directory of the current file, if appropriate) are searched.
701
702@item -undef
703@opindex @code{undef}
704Do not predefine any system-specific or GCC-specific macros.
705The standard predefined macros remain defined.
706
707@item -A@var{predicate}=@var{answer}
708@opindex @code{A@var{predicate}=@var{answer}}
4d04d67a 709@cindex preprocessing, assertion
670637ee
DF
710Make an assertion with the predicate @var{predicate} and answer @var{answer}.
711This form is preferred to the older form -A predicate(answer), which is still
712supported, because it does not use shell special characters.
713
714@item -A-@var{predicate}=@var{answer}
715@opindex @code{A-@var{predicate}=@var{answer}}
4d04d67a 716@cindex preprocessing, assertion
670637ee
DF
717Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
718
719@item -C
720@opindex @code{C}
721@cindex preprocessing, keep comments
722Do not discard comments. All comments are passed through to the output
723file, except for comments in processed directives, which are deleted
724along with the directive.
725
726You should be prepared for side effects when using @option{-C}; it causes
727the preprocessor to treat comments as tokens in their own right. For example,
728comments appearing at the start of what would be a directive line have the
729effect of turning that line into an ordinary source line, since the first
730token on the line is no longer a @code{'#'}.
731
732Warning: this currently handles C-Style comments only. The preprocessor
733does not yet recognize Fortran-style comments.
734
735@item -CC
736@opindex @code{CC}
737@cindex preprocessing, keep comments
738Do not discard comments, including during macro expansion. This is like
739@option{-C}, except that comments contained within macros are also passed
740through to the output file where the macro is expanded.
741
742In addition to the side-effects of the @option{-C} option, the @option{-CC}
743option causes all C++-style comments inside a macro to be converted to C-style
744comments. This is to prevent later use of that macro from inadvertently
745commenting out the remainder of the source line. The @option{-CC} option
746is generally used to support lint comments.
747
748Warning: this currently handles C- and C++-Style comments only. The
749preprocessor does not yet recognize Fortran-style comments.
750
751@item -D@var{name}
752@opindex @code{D@var{name}}
753@cindex preprocessing, define macros
754Predefine name as a macro, with definition @code{1}.
755
756@item -D@var{name}=@var{definition}
757@opindex @code{D@var{name}=@var{definition}}
758@cindex preprocessing, define macros
759The contents of @var{definition} are tokenized and processed as if they
760appeared during translation phase three in a @code{'#define'} directive.
761In particular, the definition will be truncated by embedded newline
762characters.
763
764If you are invoking the preprocessor from a shell or shell-like program
765you may need to use the shell's quoting syntax to protect characters such
766as spaces that have a meaning in the shell syntax.
767
768If you wish to define a function-like macro on the command line, write
769its argument list with surrounding parentheses before the equals sign
770(if any). Parentheses are meaningful to most shells, so you will need
771to quote the option. With sh and csh, @code{-D'name(args...)=definition'}
772works.
773
774@option{-D} and @option{-U} options are processed in the order they are
775given on the command line. All -imacros file and -include file options
776are processed after all -D and -U options.
777
778@item -H
779@opindex @code{H}
780Print the name of each header file used, in addition to other normal
781activities. Each name is indented to show how deep in the @code{'#include'}
782stack it is.
783
784@item -P
785@opindex @code{P}
786@cindex preprocessing, no linemarkers
787Inhibit generation of linemarkers in the output from the preprocessor.
788This might be useful when running the preprocessor on something that
789is not C code, and will be sent to a program which might be confused
790by the linemarkers.
791
792@item -U@var{name}
793@opindex @code{U@var{name}}
794@cindex preprocessing, undefine macros
795Cancel any previous definition of @var{name}, either built in or provided
796with a @option{-D} option.
797@end table
798
799
592600ce 800@node Error and Warning Options
a2bef74c 801@section Options to request or suppress errors and warnings
6de9cd9a 802@cindex options, warnings
592600ce 803@cindex options, errors
6de9cd9a 804@cindex warnings, suppressing
592600ce 805@cindex messages, error
6de9cd9a
DN
806@cindex messages, warning
807@cindex suppressing warnings
808
592600ce
BM
809Errors are diagnostic messages that report that the GNU Fortran compiler
810cannot compile the relevant piece of source code. The compiler will
811continue to process the program in an attempt to report further errors
812to aid in debugging, but will not produce any compiled output.
813
6de9cd9a 814Warnings are diagnostic messages that report constructions which
592600ce 815are not inherently erroneous but which are risky or suggest there is
4ba96c02 816likely to be a bug in the program. Unless @option{-Werror} is specified,
592600ce 817they do not prevent compilation of the program.
6de9cd9a
DN
818
819You can request many specific warnings with options beginning @option{-W},
820for example @option{-Wimplicit} to request warnings on implicit
821declarations. Each of these specific warning options also has a
822negative form beginning @option{-Wno-} to turn off warnings;
823for example, @option{-Wno-implicit}. This manual lists only one of the
824two forms, whichever is not the default.
825
592600ce
BM
826These options control the amount and kinds of errors and warnings produced
827by GNU Fortran:
6de9cd9a
DN
828
829@table @gcctabopt
efb66586
JD
830@item -fmax-errors=@var{n}
831@opindex @code{fmax-errors=}@var{n}
4ba96c02 832@cindex errors, limiting
592600ce
BM
833Limits the maximum number of error messages to @var{n}, at which point
834GNU Fortran bails out rather than attempting to continue processing the
835source code. If @var{n} is 0, there is no limit on the number of error
836messages produced.
837
6de9cd9a 838@item -fsyntax-only
32864778 839@opindex @code{fsyntax-only}
4ba96c02 840@cindex syntax checking
c5a0818e 841Check the code for syntax errors, but do not actually compile it. This
adeb22c4
FXC
842will generate module files for each module present in the code, but no
843other output file.
6de9cd9a 844
28ce22e6
JW
845@item -Wpedantic
846@itemx -pedantic
32864778 847@opindex @code{pedantic}
28ce22e6 848@opindex @code{Wpedantic}
8179b067 849Issue warnings for uses of extensions to Fortran.
6de9cd9a
DN
850@option{-pedantic} also applies to C-language constructs where they
851occur in GNU Fortran source files, such as use of @samp{\e} in a
40746dcc 852character constant within a directive like @code{#include}.
6de9cd9a 853
8179b067 854Valid Fortran programs should compile properly with or without
6de9cd9a
DN
855this option.
856However, without this option, certain GNU extensions and traditional
857Fortran features are supported as well.
858With this option, many of them are rejected.
859
860Some users try to use @option{-pedantic} to check programs for conformance.
861They soon find that it does not do quite what they want---it finds some
862nonstandard practices, but not all.
7fc15ba5 863However, improvements to GNU Fortran in this area are welcome.
6de9cd9a 864
f489fba1 865This should be used in conjunction with @option{-std=f95},
8179b067 866@option{-std=f2003}, @option{-std=f2008} or @option{-std=f2018}.
6de9cd9a 867
6de9cd9a 868@item -pedantic-errors
32864778 869@opindex @code{pedantic-errors}
6de9cd9a
DN
870Like @option{-pedantic}, except that errors are produced rather than
871warnings.
872
6de9cd9a 873@item -Wall
32864778 874@opindex @code{Wall}
6de9cd9a
DN
875@cindex all warnings
876@cindex warnings, all
3fbab549
JD
877Enables commonly used warning options pertaining to usage that
878we recommend avoiding and that we believe are easy to avoid.
cf21551e 879This currently includes @option{-Waliasing}, @option{-Wampersand},
72ac1c07 880@option{-Wconversion}, @option{-Wsurprising}, @option{-Wc-binding-type},
124bdd23 881@option{-Wintrinsics-std}, @option{-Wtabs}, @option{-Wintrinsic-shadow},
f657024b 882@option{-Wline-truncation}, @option{-Wtarget-lifetime},
1c122092
ML
883@option{-Winteger-division}, @option{-Wreal-q-constant}, @option{-Wunused}
884and @option{-Wundefined-do-loop}.
6de9cd9a 885
6de9cd9a 886@item -Waliasing
32864778 887@opindex @code{Waliasing}
6de9cd9a 888@cindex aliasing
32864778 889@cindex warnings, aliasing
3010be13
AD
890Warn about possible aliasing of dummy arguments. Specifically, it warns
891if the same actual argument is associated with a dummy argument with
40746dcc 892@code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
3010be13
AD
893with an explicit interface.
894
895The following example will trigger the warning.
6de9cd9a 896@smallexample
3010be13
AD
897 interface
898 subroutine bar(a,b)
899 integer, intent(in) :: a
900 integer, intent(out) :: b
901 end subroutine
902 end interface
903 integer :: a
904
905 call bar(a,a)
6de9cd9a
DN
906@end smallexample
907
3fbab549 908@item -Wampersand
32864778
DF
909@opindex @code{Wampersand}
910@cindex warnings, ampersand
ab940b73 911@cindex @code{&}
8179b067
JB
912Warn about missing ampersand in continued character constants. The
913warning is given with @option{-Wampersand}, @option{-pedantic},
914@option{-std=f95}, @option{-std=f2003}, @option{-std=f2008} and
915@option{-std=f2018}. Note: With no ampersand given in a continued
916character constant, GNU Fortran assumes continuation at the first
917non-comment, non-whitespace character after the ampersand that
918initiated the continuation.
3fbab549 919
bdfd2ff0
TK
920@item -Warray-temporaries
921@opindex @code{Warray-temporaries}
922@cindex warnings, array temporaries
923Warn about array temporaries generated by the compiler. The information
924generated by this warning is sometimes useful in optimization, in order to
925avoid such temporaries.
926
0e193637
TB
927@item -Wc-binding-type
928@opindex @code{Wc-binding-type}
929@cindex warning, C binding type
930Warn if the a variable might not be C interoperable. In particular, warn if
931the variable has been declared using an intrinsic type with default kind
932instead of using a kind parameter defined for C interoperability in the
72ac1c07
TK
933intrinsic @code{ISO_C_Binding} module. This option is implied by
934@option{-Wall}.
0e193637 935
276419d0 936@item -Wcharacter-truncation
32864778
DF
937@opindex @code{Wcharacter-truncation}
938@cindex warnings, character truncation
276419d0
BM
939Warn when a character assignment will truncate the assigned string.
940
802e3f8c
RW
941@item -Wline-truncation
942@opindex @code{Wline-truncation}
943@cindex warnings, line truncation
72ac1c07 944Warn when a source code line will be truncated. This option is
aecfd035
TB
945implied by @option{-Wall}. For free-form source code, the default is
946@option{-Werror=line-truncation} such that truncations are reported as
947error.
802e3f8c 948
6de9cd9a 949@item -Wconversion
32864778
DF
950@opindex @code{Wconversion}
951@cindex warnings, conversion
6de9cd9a 952@cindex conversion
daf8c6f0
DF
953Warn about implicit conversions that are likely to change the value of
954the expression after conversion. Implied by @option{-Wall}.
955
956@item -Wconversion-extra
957@opindex @code{Wconversion-extra}
958@cindex warnings, conversion
959@cindex conversion
4daa149b
TB
960Warn about implicit conversions between different types and kinds. This
961option does @emph{not} imply @option{-Wconversion}.
6de9cd9a 962
72ac1c07
TK
963@item -Wextra
964@opindex @code{Wextra}
965@cindex extra warnings
966@cindex warnings, extra
967Enables some warning options for usages of language features which
15e23330
TK
968may be problematic. This currently includes @option{-Wcompare-reals},
969@option{-Wunused-parameter} and @option{-Wdo-subscript}.
72ac1c07 970
d88412fc
TK
971@item -Wfrontend-loop-interchange
972@opindex @code{Wfrontend-loop-interchange}
973@cindex warnings, loop interchange
974@cindex loop interchange, warning
f4436343
ME
975Warn when using @option{-ffrontend-loop-interchange} for performing loop
976interchanges.
d88412fc 977
6de9cd9a 978@item -Wimplicit-interface
32864778
DF
979@opindex @code{Wimplicit-interface}
980@cindex warnings, implicit interface
02712c16 981Warn if a procedure is called without an explicit interface.
6de9cd9a
DN
982Note this only checks that an explicit interface is present. It does not
983check that the declared interfaces are consistent across program units.
984
ca071303
FXC
985@item -Wimplicit-procedure
986@opindex @code{Wimplicit-procedure}
987@cindex warnings, implicit procedure
988Warn if a procedure is called that has neither an explicit interface
989nor has been declared as @code{EXTERNAL}.
990
c219aeb7
TK
991@item -Winteger-division
992@opindex @code{Winteger-division}
993@cindex warnings, integer division
994@cindex warnings, division of integers
91c4891a 995Warn if a constant integer division truncates its result.
c219aeb7
TK
996As an example, 3/5 evaluates to 0.
997
c3005b0f
DK
998@item -Wintrinsics-std
999@opindex @code{Wintrinsics-std}
1207ac67 1000@cindex warnings, non-standard intrinsics
c3005b0f
DK
1001@cindex warnings, intrinsics of other standards
1002Warn if @command{gfortran} finds a procedure named like an intrinsic not
1003available in the currently selected standard (with @option{-std}) and treats
1004it as @code{EXTERNAL} procedure because of this. @option{-fall-intrinsics} can
c7d9f803 1005be used to never trigger this behavior and always link to the intrinsic
c3005b0f 1006regardless of the selected standard.
b7892582 1007
91c4891a
ME
1008@item -Wno-overwrite-recursive
1009@opindex @code{Woverwrite-recursive}
1010@cindex warnings, overwrite recursive
1011Do not warn when @option{-fno-automatic} is used with @option{-frecursive}. Recursion
1012will be broken if the relevant local variables do not have the attribute
1013@code{AUTOMATIC} explicitly declared. This option can be used to suppress the warning
1014when it is known that recursion is not broken. Useful for build environments that use
1015@option{-Werror}.
1016
5a17346a
SK
1017@item -Wreal-q-constant
1018@opindex @code{Wreal-q-constant}
1019@cindex warnings, @code{q} exponent-letter
1020Produce a warning if a real-literal-constant contains a @code{q}
1021exponent-letter.
1022
6de9cd9a 1023@item -Wsurprising
32864778
DF
1024@opindex @code{Wsurprising}
1025@cindex warnings, suspicious code
2d8b59df
SK
1026Produce a warning when ``suspicious'' code constructs are encountered.
1027While technically legal these usually indicate that an error has been made.
6de9cd9a
DN
1028
1029This currently produces a warning under the following circumstances:
1030
1031@itemize @bullet
1032@item
ffd1953e
FXC
1033An INTEGER SELECT construct has a CASE that can never be matched as its
1034lower value is greater than its upper value.
6de9cd9a
DN
1035
1036@item
1037A LOGICAL SELECT construct has three CASE statements.
39a184ce
JD
1038
1039@item
1040A TRANSFER specifies a source that is shorter than the destination.
fee3292b
DK
1041
1042@item
1043The type of a function result is declared more than once with the same type. If
1044@option{-pedantic} or standard-conforming mode is enabled, this is an error.
5e1d6b4c
DK
1045
1046@item
1047A @code{CHARACTER} variable is declared with negative length.
6de9cd9a
DN
1048@end itemize
1049
840bd9f7 1050@item -Wtabs
32864778
DF
1051@opindex @code{Wtabs}
1052@cindex warnings, tabs
e739dfac 1053@cindex tabulators
840bd9f7 1054By default, tabs are accepted as whitespace, but tabs are not members
fd1935d5 1055of the Fortran Character Set. For continuation lines, a tab followed
8179b067
JB
1056by a digit between 1 and 9 is supported. @option{-Wtabs} will cause a
1057warning to be issued if a tab is encountered. Note, @option{-Wtabs} is
1058active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
286f737c 1059@option{-std=f2008}, @option{-std=f2018} and
8179b067 1060@option{-Wall}.
840bd9f7 1061
1c122092
ML
1062@item -Wundefined-do-loop
1063@opindex @code{Wundefined-do-loop}
1064@cindex warnings, undefined do loop
1065Warn if a DO loop with step either 1 or -1 yields an underflow or an overflow
03e6ca48
ML
1066during iteration of an induction variable of the loop.
1067This option is implied by @option{-Wall}.
1c122092 1068
2d8b59df 1069@item -Wunderflow
32864778
DF
1070@opindex @code{Wunderflow}
1071@cindex warnings, underflow
1072@cindex underflow
2d8b59df 1073Produce a warning when numerical constant expressions are
73e42eef 1074encountered, which yield an UNDERFLOW during compilation. Enabled by default.
2d8b59df 1075
c3005b0f
DK
1076@item -Wintrinsic-shadow
1077@opindex @code{Wintrinsic-shadow}
1078@cindex warnings, intrinsic
1079@cindex intrinsic
1080Warn if a user-defined procedure or module procedure has the same name as an
1081intrinsic; in this case, an explicit interface or @code{EXTERNAL} or
1082@code{INTRINSIC} declaration might be needed to get calls later resolved to
72ac1c07 1083the desired intrinsic/procedure. This option is implied by @option{-Wall}.
c3005b0f 1084
7e114fad
JV
1085@item -Wuse-without-only
1086@opindex @code{Wuse-without-only}
1087@cindex warnings, use statements
1088@cindex intrinsic
1089Warn if a @code{USE} statement has no @code{ONLY} qualifier and
1090thus implicitly imports all public entities of the used module.
1091
4ed44ccc
DF
1092@item -Wunused-dummy-argument
1093@opindex @code{Wunused-dummy-argument}
1094@cindex warnings, unused dummy argument
1095@cindex unused dummy argument
1096@cindex dummy argument, unused
1097Warn about unused dummy arguments. This option is implied by @option{-Wall}.
1098
d92693b4
DF
1099@item -Wunused-parameter
1100@opindex @code{Wunused-parameter}
1101@cindex warnings, unused parameter
1102@cindex unused parameter
1103Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
1104@command{gfortran}'s implementation of this option does not warn
4ed44ccc
DF
1105about unused dummy arguments (see @option{-Wunused-dummy-argument}),
1106but about unused @code{PARAMETER} values. @option{-Wunused-parameter}
3e9c4087
TB
1107is implied by @option{-Wextra} if also @option{-Wunused} or
1108@option{-Wall} is used.
d92693b4 1109
f613cea7
JW
1110@item -Walign-commons
1111@opindex @code{Walign-commons}
ab940b73
RW
1112@cindex warnings, alignment of @code{COMMON} blocks
1113@cindex alignment of @code{COMMON} blocks
f613cea7 1114By default, @command{gfortran} warns about any occasion of variables being
ab940b73 1115padded for proper alignment inside a @code{COMMON} block. This warning can be turned
f613cea7
JW
1116off via @option{-Wno-align-commons}. See also @option{-falign-commons}.
1117
51a30b32
TK
1118@item -Wfunction-elimination
1119@opindex @code{Wfunction-elimination}
1120@cindex function elimination
1121@cindex warnings, function elimination
6457b1f0 1122Warn if any calls to impure functions are eliminated by the optimizations
51a30b32 1123enabled by the @option{-ffrontend-optimize} option.
6457b1f0 1124This option is implied by @option{-Wextra}.
51a30b32 1125
f1fb11f1
TB
1126@item -Wrealloc-lhs
1127@opindex @code{Wrealloc-lhs}
1128@cindex Reallocate the LHS in assignments, notification
1129Warn when the compiler might insert code to for allocation or reallocation of
1130an allocatable array variable of intrinsic type in intrinsic assignments. In
1131hot loops, the Fortran 2003 reallocation feature may reduce the performance.
1132If the array is already allocated with the correct shape, consider using a
1133whole-array array-spec (e.g. @code{(:,:,:)}) for the variable on the left-hand
1134side to prevent the reallocation check. Note that in some cases the warning
1135is shown, even if the compiler will optimize reallocation checks away. For
1136instance, when the right-hand side contains the same variable multiplied by
1137a scalar. See also @option{-frealloc-lhs}.
1138
1139@item -Wrealloc-lhs-all
1140@opindex @code{Wrealloc-lhs-all}
1141Warn when the compiler inserts code to for allocation or reallocation of an
1142allocatable variable; this includes scalars and derived types.
51a30b32 1143
cf21551e
TK
1144@item -Wcompare-reals
1145@opindex @code{Wcompare-reals}
1146Warn when comparing real or complex types for equality or inequality.
72ac1c07 1147This option is implied by @option{-Wextra}.
cf21551e 1148
f657024b
TB
1149@item -Wtarget-lifetime
1150@opindex @code{Wtargt-lifetime}
1151Warn if the pointer in a pointer assignment might be longer than the its
1152target. This option is implied by @option{-Wall}.
1153
0e533e50
TK
1154@item -Wzerotrip
1155@opindex @code{Wzerotrip}
1156Warn if a @code{DO} loop is known to execute zero times at compile
1157time. This option is implied by @option{-Wall}.
1158
15e23330
TK
1159@item -Wdo-subscript
1160@opindex @code{Wdo-subscript}
1161Warn if an array subscript inside a DO loop could lead to an
67914693 1162out-of-bounds access even if the compiler cannot prove that the
15e23330
TK
1163statement is actually executed, in cases like
1164@smallexample
1165 real a(3)
1166 do i=1,4
1167 if (condition(i)) then
1168 a(i) = 1.2
1169 end if
1170 end do
1171@end smallexample
1172This option is implied by @option{-Wextra}.
1173
6de9cd9a 1174@item -Werror
32864778
DF
1175@opindex @code{Werror}
1176@cindex warnings, to errors
6de9cd9a 1177Turns all warnings into errors.
6de9cd9a
DN
1178@end table
1179
4f7d9db8 1180@xref{Warning Options,,Options to Request or Suppress Errors and
592600ce
BM
1181Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
1182more options offered by the GBE shared by @command{gfortran}, @command{gcc}
1183and other GNU compilers.
6de9cd9a
DN
1184
1185Some of these have no effect when compiling programs written in Fortran.
1186
1187@node Debugging Options
a2bef74c 1188@section Options for debugging your program or GNU Fortran
6de9cd9a
DN
1189@cindex options, debugging
1190@cindex debugging information options
1191
1192GNU Fortran has various special options that are used for debugging
7fc15ba5 1193either your program or the GNU Fortran compiler.
6de9cd9a
DN
1194
1195@table @gcctabopt
1607a827
TK
1196@item -fdump-fortran-original
1197@opindex @code{fdump-fortran-original}
1198Output the internal parse tree after translating the source program
cebb1919
TK
1199into internal representation. This option is mostly useful for
1200debugging the GNU Fortran compiler itself. The output generated by
1201this option might change between releases. This option may also
1202generate internal compiler errors for features which have only
1203recently been added.
1607a827 1204
85dabaed 1205@item -fdump-fortran-optimized
1607a827 1206@opindex @code{fdump-fortran-optimized}
cebb1919
TK
1207Output the parse tree after front-end optimization. Mostly useful for
1208debugging the GNU Fortran compiler itself. The output generated by
1209this option might change between releases. This option may also
1210generate internal compiler errors for features which have only
1211recently been added.
1607a827 1212
85dabaed 1213@item -fdump-parse-tree
32864778 1214@opindex @code{fdump-parse-tree}
1607a827 1215Output the internal parse tree after translating the source program
cebb1919
TK
1216into internal representation. Mostly useful for debugging the GNU
1217Fortran compiler itself. The output generated by this option might
1218change between releases. This option may also generate internal
1219compiler errors for features which have only recently been added. This
1220option is deprecated; use @code{-fdump-fortran-original} instead.
6de9cd9a 1221
5c6aa9a8
TK
1222@item -fdump-fortran-global
1223@opindex @code{fdump-fortran-global}
1224Output a list of the global identifiers after translating into
1225middle-end representation. Mostly useful for debugging the GNU Fortran
1226compiler itself. The output generated by this option might change
1227between releases. This option may also generate internal compiler
1228errors for features which have only recently been added.
1229
944b8b35 1230@item -ffpe-trap=@var{list}
32864778 1231@opindex @code{ffpe-trap=}@var{list}
57b4d355
JB
1232Specify a list of floating point exception traps to enable. On most
1233systems, if a floating point exception occurs and the trap for that
1234exception is enabled, a SIGFPE signal will be sent and the program
1235being aborted, producing a core file useful for debugging. @var{list}
1236is a (possibly empty) comma-separated list of the following
1237exceptions: @samp{invalid} (invalid floating point operation, such as
1238@code{SQRT(-1.0)}), @samp{zero} (division by zero), @samp{overflow}
1239(overflow in a floating point operation), @samp{underflow} (underflow
1240in a floating point operation), @samp{inexact} (loss of precision
1241during operation), and @samp{denormal} (operation performed on a
1242denormal value). The first five exceptions correspond to the five
1243IEEE 754 exceptions, whereas the last one (@samp{denormal}) is not
1244part of the IEEE 754 standard but is available on some common
1245architectures such as x86.
1246
1247The first three exceptions (@samp{invalid}, @samp{zero}, and
1248@samp{overflow}) often indicate serious errors, and unless the program
1249has provisions for dealing with these exceptions, enabling traps for
1250these three exceptions is probably a good idea.
1251
1bdfc7aa
DH
1252If the option is used more than once in the command line, the lists will
1253be joined: '@code{ffpe-trap=}@var{list1} @code{ffpe-trap=}@var{list2}'
06293766 1254is equivalent to @code{ffpe-trap=}@var{list1},@var{list2}.
1bdfc7aa
DH
1255
1256Note that once enabled an exception cannot be disabled (no negative form).
1257
57b4d355
JB
1258Many, if not most, floating point operations incur loss of precision
1259due to rounding, and hence the @code{ffpe-trap=inexact} is likely to
1260be uninteresting in practice.
1261
1262By default no exception traps are enabled.
8307c61b 1263
fa86f4f9
TB
1264@item -ffpe-summary=@var{list}
1265@opindex @code{ffpe-summary=}@var{list}
1266Specify a list of floating-point exceptions, whose flag status is printed
1267to @code{ERROR_UNIT} when invoking @code{STOP} and @code{ERROR STOP}.
1268@var{list} can be either @samp{none}, @samp{all} or a comma-separated list
1269of the following exceptions: @samp{invalid}, @samp{zero}, @samp{overflow},
1270@samp{underflow}, @samp{inexact} and @samp{denormal}. (See
1271@option{-ffpe-trap} for a description of the exceptions.)
1272
1bdfc7aa
DH
1273If the option is used more than once in the command line, only the
1274last one will be used.
1275
fa86f4f9
TB
1276By default, a summary for all exceptions but @samp{inexact} is shown.
1277
de8bd142
JB
1278@item -fno-backtrace
1279@opindex @code{fno-backtrace}
868d75db
FXC
1280@cindex backtrace
1281@cindex trace
de8bd142
JB
1282When a serious runtime error is encountered or a deadly signal is
1283emitted (segmentation fault, illegal instruction, bus error,
1284floating-point exception, and the other POSIX signals that have the
1285action @samp{core}), the Fortran runtime library tries to output a
1286backtrace of the error. @code{-fno-backtrace} disables the backtrace
1287generation. This option only has influence for compilation of the
1288Fortran main program.
1289
944b8b35
FXC
1290@end table
1291
6de9cd9a
DN
1292@xref{Debugging Options,,Options for Debugging Your Program or GCC,
1293gcc,Using the GNU Compiler Collection (GCC)}, for more information on
1294debugging options.
1295
1296@node Directory Options
a2bef74c 1297@section Options for directory search
6de9cd9a
DN
1298@cindex directory, options
1299@cindex options, directory search
1300@cindex search path
ab940b73
RW
1301@cindex @code{INCLUDE} directive
1302@cindex directive, @code{INCLUDE}
7fc15ba5 1303These options affect how GNU Fortran searches
5724da63 1304for files specified by the @code{INCLUDE} directive and where it searches
6de9cd9a
DN
1305for previously compiled modules.
1306
1307It also affects the search paths used by @command{cpp} when used to preprocess
2d8b59df 1308Fortran source.
6de9cd9a
DN
1309
1310@table @gcctabopt
6de9cd9a 1311@item -I@var{dir}
32864778 1312@opindex @code{I}@var{dir}
6de9cd9a
DN
1313@cindex directory, search paths for inclusion
1314@cindex inclusion, directory search paths for
1315@cindex search paths, for included files
1316@cindex paths, search
1317@cindex module search path
1318These affect interpretation of the @code{INCLUDE} directive
1319(as well as of the @code{#include} directive of the @command{cpp}
1320preprocessor).
1321
1322Also note that the general behavior of @option{-I} and
1323@code{INCLUDE} is pretty much the same as of @option{-I} with
1324@code{#include} in the @command{cpp} preprocessor, with regard to
1325looking for @file{header.gcc} files and other such things.
1326
40746dcc 1327This path is also used to search for @file{.mod} files when previously
6de9cd9a
DN
1328compiled modules are required by a @code{USE} statement.
1329
1330@xref{Directory Options,,Options for Directory Search,
1331gcc,Using the GNU Compiler Collection (GCC)}, for information on the
1332@option{-I} option.
1333
6de9cd9a 1334@item -J@var{dir}
32864778 1335@opindex @code{J}@var{dir}
ccc2ed87 1336@opindex @code{M}@var{dir}
276419d0
BM
1337@cindex paths, search
1338@cindex module search path
40746dcc 1339This option specifies where to put @file{.mod} files for compiled modules.
2d8b59df 1340It is also added to the list of directories to searched by an @code{USE}
6de9cd9a
DN
1341statement.
1342
1343The default is the current directory.
1344
276419d0 1345@item -fintrinsic-modules-path @var{dir}
32864778 1346@opindex @code{fintrinsic-modules-path} @var{dir}
276419d0
BM
1347@cindex paths, search
1348@cindex module search path
1349This option specifies the location of pre-compiled intrinsic modules, if
1350they are not in the default location expected by the compiler.
6de9cd9a
DN
1351@end table
1352
70263321 1353@node Link Options
a2bef74c 1354@section Influencing the linking step
70263321
DF
1355@cindex options, linking
1356@cindex linking, static
1357
1358These options come into play when the compiler links object files into an
1359executable output file. They are meaningless if the compiler is not doing
1360a link step.
1361
1362@table @gcctabopt
1363@item -static-libgfortran
1364@opindex @code{static-libgfortran}
1365On systems that provide @file{libgfortran} as a shared and a static
1366library, this option forces the use of the static version. If no
1367shared version of @file{libgfortran} was built when the compiler was
1368configured, this option has no effect.
1369@end table
1370
1371
eaa90d25 1372@node Runtime Options
a2bef74c 1373@section Influencing runtime behavior
e739dfac 1374@cindex options, runtime
eaa90d25 1375
7fc15ba5 1376These options affect the runtime behavior of programs compiled with GNU Fortran.
4d04d67a 1377
eaa90d25 1378@table @gcctabopt
eaa90d25 1379@item -fconvert=@var{conversion}
32864778 1380@opindex @code{fconvert=}@var{conversion}
eaa90d25
TK
1381Specify the representation of data for unformatted files. Valid
1382values for conversion are: @samp{native}, the default; @samp{swap},
1383swap between big- and little-endian; @samp{big-endian}, use big-endian
1384representation for unformatted files; @samp{little-endian}, use little-endian
1385representation for unformatted files.
1386
1387@emph{This option has an effect only when used in the main program.
1388The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
40746dcc 1389variable override the default specified by @option{-fconvert}.}
d67ab5ee 1390
d67ab5ee 1391@item -frecord-marker=@var{length}
32864778 1392@opindex @code{frecord-marker=}@var{length}
d67ab5ee 1393Specify the length of record markers for unformatted files.
07b3bbf2 1394Valid values for @var{length} are 4 and 8. Default is 4.
a2bef74c 1395@emph{This is different from previous versions of @command{gfortran}},
07b3bbf2
TK
1396which specified a default record marker length of 8 on most
1397systems. If you want to read or write files compatible
a2bef74c 1398with earlier versions of @command{gfortran}, use @option{-frecord-marker=8}.
07b3bbf2 1399
07b3bbf2 1400@item -fmax-subrecord-length=@var{length}
32864778 1401@opindex @code{fmax-subrecord-length=}@var{length}
07b3bbf2
TK
1402Specify the maximum length for a subrecord. The maximum permitted
1403value for length is 2147483639, which is also the default. Only
1404really useful for use by the gfortran testsuite.
0483c79f
JD
1405
1406@item -fsign-zero
1407@opindex @code{fsign-zero}
60d340ef
TB
1408When enabled, floating point numbers of value zero with the sign bit set
1409are written as negative number in formatted output and treated as
c5a0818e
FXC
1410negative in the @code{SIGN} intrinsic. @option{-fno-sign-zero} does not
1411print the negative sign of zero values (or values rounded to zero for I/O)
1412and regards zero as positive number in the @code{SIGN} intrinsic for
1413compatibility with Fortran 77. The default is @option{-fsign-zero}.
eaa90d25
TK
1414@end table
1415
6de9cd9a 1416@node Code Gen Options
a2bef74c 1417@section Options for code generation conventions
6de9cd9a
DN
1418@cindex code generation, conventions
1419@cindex options, code generation
e739dfac 1420@cindex options, run-time
6de9cd9a
DN
1421
1422These machine-independent options control the interface conventions
1423used in code generation.
1424
1425Most of them have both positive and negative forms; the negative form
1426of @option{-ffoo} would be @option{-fno-foo}. In the table below, only
1427one of the forms is listed---the one which is not the default. You
1428can figure out the other form by either removing @option{no-} or adding
1429it.
1430
6de9cd9a 1431@table @gcctabopt
ee5426a4 1432@item -fno-automatic
32864778 1433@opindex @code{fno-automatic}
e739dfac
DF
1434@cindex @code{SAVE} statement
1435@cindex statement, @code{SAVE}
1e7de83b
AL
1436Treat each program unit (except those marked as RECURSIVE) as if the
1437@code{SAVE} statement were specified for every local variable and array
1438referenced in it. Does not affect common blocks. (Some Fortran compilers
1439provide this option under the name @option{-static} or @option{-save}.)
1440The default, which is @option{-fautomatic}, uses the stack for local
1441variables smaller than the value given by @option{-fmax-stack-var-size}.
1442Use the option @option{-frecursive} to use no static memory.
ee5426a4 1443
b4e17cad
DH
1444Local variables or arrays having an explicit @code{SAVE} attribute are
1445silently ignored unless the @option{-pedantic} option is added.
1446
973ff4c0 1447@item -ff2c
e739dfac 1448@opindex ff2c
973ff4c0
TS
1449@cindex calling convention
1450@cindex @command{f2c} calling convention
1451@cindex @command{g77} calling convention
1452@cindex libf2c calling convention
1453Generate code designed to be compatible with code generated
1454by @command{g77} and @command{f2c}.
1455
1456The calling conventions used by @command{g77} (originally implemented
1457in @command{f2c}) require functions that return type
1458default @code{REAL} to actually return the C type @code{double}, and
1459functions that return type @code{COMPLEX} to return the values via an
1460extra argument in the calling sequence that points to where to
1461store the return value. Under the default GNU calling conventions, such
1462functions simply return their results as they would in GNU
8556236b 1463C---default @code{REAL} functions return the C type @code{float}, and
973ff4c0 1464@code{COMPLEX} functions return the GNU C type @code{complex}.
a226fc2b
TS
1465Additionally, this option implies the @option{-fsecond-underscore}
1466option, unless @option{-fno-second-underscore} is explicitly requested.
973ff4c0
TS
1467
1468This does not affect the generation of code that interfaces with
1469the @command{libgfortran} library.
1470
40746dcc
BM
1471@emph{Caution:} It is not a good idea to mix Fortran code compiled with
1472@option{-ff2c} with code compiled with the default @option{-fno-f2c}
973ff4c0
TS
1473calling conventions as, calling @code{COMPLEX} or default @code{REAL}
1474functions between program parts which were compiled with different
1475calling conventions will break at execution time.
1476
1477@emph{Caution:} This will break code which passes intrinsic functions
1478of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
40746dcc 1479the library implementations use the @option{-fno-f2c} calling conventions.
973ff4c0 1480
6de9cd9a 1481@item -fno-underscoring
32864778 1482@opindex @code{fno-underscoring}
6de9cd9a
DN
1483@cindex underscore
1484@cindex symbol names, underscores
1485@cindex transforming symbol names
1486@cindex symbol names, transforming
1487Do not transform names of entities specified in the Fortran
1488source file by appending underscores to them.
1489
7fc15ba5 1490With @option{-funderscoring} in effect, GNU Fortran appends one
5724da63
JD
1491underscore to external names with no underscores. This is done to ensure
1492compatibility with code produced by many UNIX Fortran compilers.
973ff4c0 1493
7fc15ba5 1494@emph{Caution}: The default behavior of GNU Fortran is
973ff4c0 1495incompatible with @command{f2c} and @command{g77}, please use the
b4cbcd1a 1496@option{-ff2c} option if you want object files compiled with
7fc15ba5 1497GNU Fortran to be compatible with object code created with these
b4cbcd1a 1498tools.
6de9cd9a
DN
1499
1500Use of @option{-fno-underscoring} is not recommended unless you are
7fc15ba5 1501experimenting with issues such as integration of GNU Fortran into
8307c61b
FXC
1502existing system environments (vis-@`{a}-vis existing libraries, tools,
1503and so on).
6de9cd9a 1504
87681fb5
FXC
1505For example, with @option{-funderscoring}, and assuming that @code{j()} and
1506@code{max_count()} are external functions while @code{my_var} and
1507@code{lvar} are local variables, a statement like
6de9cd9a
DN
1508@smallexample
1509I = J() + MAX_COUNT (MY_VAR, LVAR)
1510@end smallexample
6de9cd9a
DN
1511@noindent
1512is implemented as something akin to:
6de9cd9a
DN
1513@smallexample
1514i = j_() + max_count__(&my_var__, &lvar);
1515@end smallexample
1516
1517With @option{-fno-underscoring}, the same statement is implemented as:
1518
1519@smallexample
1520i = j() + max_count(&my_var, &lvar);
1521@end smallexample
1522
1523Use of @option{-fno-underscoring} allows direct specification of
7fc15ba5 1524user-defined names while debugging and when interfacing GNU Fortran
6de9cd9a
DN
1525code with other languages.
1526
1527Note that just because the names match does @emph{not} mean that the
7fc15ba5 1528interface implemented by GNU Fortran for an external name matches the
6de9cd9a 1529interface implemented by some other language for that same name.
7fc15ba5 1530That is, getting code produced by GNU Fortran to link to code produced
6de9cd9a
DN
1531by some other compiler using this or any other method can be only a
1532small part of the overall solution---getting the code generated by
1533both compilers to agree on issues other than naming can require
1534significant effort, and, unlike naming disagreements, linkers normally
1535cannot detect disagreements in these other areas.
1536
1537Also, note that with @option{-fno-underscoring}, the lack of appended
1538underscores introduces the very real possibility that a user-defined
1539external name will conflict with a name in a system library, which
1540could make finding unresolved-reference bugs quite difficult in some
1541cases---they might occur at program run time, and show up only as
1542buggy behavior at run time.
1543
7fc15ba5 1544In future versions of GNU Fortran we hope to improve naming and linking
6de9cd9a
DN
1545issues so that debugging always involves using the names as they appear
1546in the source, even if the names as seen by the linker are mangled to
1547prevent accidental linking between procedures with incompatible
1548interfaces.
1549
973ff4c0 1550@item -fsecond-underscore
32864778 1551@opindex @code{fsecond-underscore}
6de9cd9a
DN
1552@cindex underscore
1553@cindex symbol names, underscores
1554@cindex transforming symbol names
1555@cindex symbol names, transforming
973ff4c0
TS
1556@cindex @command{f2c} calling convention
1557@cindex @command{g77} calling convention
1558@cindex libf2c calling convention
7fc15ba5
BM
1559By default, GNU Fortran appends an underscore to external
1560names. If this option is used GNU Fortran appends two
973ff4c0 1561underscores to names with underscores and one underscore to external names
7fc15ba5 1562with no underscores. GNU Fortran also appends two underscores to
973ff4c0
TS
1563internal names with underscores to avoid naming collisions with external
1564names.
6de9cd9a
DN
1565
1566This option has no effect if @option{-fno-underscoring} is
973ff4c0 1567in effect. It is implied by the @option{-ff2c} option.
6de9cd9a 1568
40746dcc 1569Otherwise, with this option, an external name such as @code{MAX_COUNT}
6de9cd9a 1570is implemented as a reference to the link-time external symbol
40746dcc 1571@code{max_count__}, instead of @code{max_count_}. This is required
973ff4c0
TS
1572for compatibility with @command{g77} and @command{f2c}, and is implied
1573by use of the @option{-ff2c} option.
6de9cd9a 1574
f4d1d50a
TB
1575@item -fcoarray=@var{<keyword>}
1576@opindex @code{fcoarray}
1577@cindex coarrays
1578
1579@table @asis
1580@item @samp{none}
1581Disable coarray support; using coarray declarations and image-control
1582statements will produce a compile-time error. (Default)
1583
1584@item @samp{single}
1585Single-image mode, i.e. @code{num_images()} is always one.
60386f50
TB
1586
1587@item @samp{lib}
1588Library-based coarray parallelization; a suitable GNU Fortran coarray
1589library needs to be linked.
f4d1d50a
TB
1590@end table
1591
1592
d3d3011f
FXC
1593@item -fcheck=@var{<keyword>}
1594@opindex @code{fcheck}
e739dfac 1595@cindex array, bounds checking
df1afcca 1596@cindex bit intrinsics checking
6de9cd9a 1597@cindex bounds checking
20460eb9 1598@cindex pointer checking
22bdbb0f 1599@cindex memory checking
6de9cd9a 1600@cindex range checking
6de9cd9a
DN
1601@cindex subscript checking
1602@cindex checking subscripts
d3d3011f
FXC
1603@cindex run-time checking
1604@cindex checking array temporaries
1605
1606Enable the generation of run-time checks; the argument shall be
a4c54bf2
JD
1607a comma-delimited list of the following keywords. Prefixing a check with
1608@option{no-} disables it if it was activated by a previous specification.
d3d3011f
FXC
1609
1610@table @asis
1611@item @samp{all}
1612Enable all run-time test of @option{-fcheck}.
1613
1614@item @samp{array-temps}
1615Warns at run time when for passing an actual argument a temporary array
1616had to be generated. The information generated by this warning is
1617sometimes useful in optimization, in order to avoid such temporaries.
1618
1619Note: The warning is only printed once per location.
1620
df1afcca
HA
1621@item @samp{bits}
1622Enable generation of run-time checks for invalid arguments to the bit
1623manipulation intrinsics.
1624
d3d3011f 1625@item @samp{bounds}
6de9cd9a
DN
1626Enable generation of run-time checks for array subscripts
1627and against the declared minimum and maximum values. It also
1628checks array indices for assumed and deferred
aad9c4f4
AM
1629shape arrays against the actual allocated bounds and ensures that all string
1630lengths are equal for character array constructors without an explicit
1631typespec.
6de9cd9a 1632
d3d3011f 1633Some checks require that @option{-fcheck=bounds} is set for
8307c61b 1634the compilation of the main program.
18fe404f 1635
aad9c4f4
AM
1636Note: In the future this may also include other forms of checking, e.g.,
1637checking substring references.
43998ed9 1638
33abc845
TB
1639@item @samp{do}
1640Enable generation of run-time checks for invalid modification of loop
1641iteration variables.
1642
22bdbb0f
TB
1643@item @samp{mem}
1644Enable generation of run-time checks for memory allocation.
1645Note: This option does not affect explicit allocations using the
1646@code{ALLOCATE} statement, which will be always checked.
1647
20460eb9
TB
1648@item @samp{pointer}
1649Enable generation of run-time checks for pointers and allocatables.
1650
43998ed9
TB
1651@item @samp{recursion}
1652Enable generation of run-time checks for recursively called subroutines and
1653functions which are not marked as recursive. See also @option{-frecursive}.
8b5f6dd8 1654Note: This check does not work for OpenMP programs and is disabled if used
5b130807 1655together with @option{-frecursive} and @option{-fopenmp}.
d3d3011f 1656@end table
6de9cd9a 1657
a4c54bf2
JD
1658Example: Assuming you have a file @file{foo.f90}, the command
1659@smallexample
1660 gfortran -fcheck=all,no-array-temps foo.f90
1661@end smallexample
1662will compile the file with all checks enabled as specified above except
1663warnings for generated array temporaries.
1664
0d52899f 1665
d3d3011f
FXC
1666@item -fbounds-check
1667@opindex @code{fbounds-check}
1668@c Note: This option is also referred in gcc's manpage
1669Deprecated alias for @option{-fcheck=bounds}.
0d52899f 1670
ffeebc4f
JJ
1671@item -ftail-call-workaround
1672@itemx -ftail-call-workaround=@var{n}
1673@opindex @code{tail-call-workaround}
14688b8d
TK
1674Some C interfaces to Fortran codes violate the gfortran ABI by
1675omitting the hidden character length arguments as described in
1676@xref{Argument passing conventions}. This can lead to crashes
1677because pushing arguments for tail calls can overflow the stack.
1678
1679To provide a workaround for existing binary packages, this option
1680disables tail call optimization for gfortran procedures with character
ffeebc4f
JJ
1681arguments. With @option{-ftail-call-workaround=2} tail call optimization
1682is disabled in all gfortran procedures with character arguments,
1683with @option{-ftail-call-workaround=1} or equivalent
1684@option{-ftail-call-workaround} only in gfortran procedures with character
1685arguments that call implicitly prototyped procedures.
14688b8d
TK
1686
1687Using this option can lead to problems including crashes due to
1688insufficient stack space.
1689
1690It is @emph{very strongly} recommended to fix the code in question.
1691The @option{-fc-prototypes-external} option can be used to generate
1692prototypes which conform to gfortran's ABI, for inclusion in the
1693source code.
1694
1695Support for this option will likely be withdrawn in a future release
1696of gfortran.
1697
ffeebc4f
JJ
1698The negative form, @option{-fno-tail-call-workaround} or equivalent
1699@option{-ftail-call-workaround=0}, can be used to disable this option.
14688b8d 1700
ffeebc4f 1701Default is currently @option{-ftail-call-workaround}, this will change
14688b8d
TK
1702in future releases.
1703
d3d3011f
FXC
1704@item -fcheck-array-temporaries
1705@opindex @code{fcheck-array-temporaries}
1706Deprecated alias for @option{-fcheck=array-temps}.
0d52899f 1707
63346ddb
SK
1708@item -fmax-array-constructor=@var{n}
1709@opindex @code{fmax-array-constructor}
1710This option can be used to increase the upper limit permitted in
1711array constructors. The code below requires this option to expand
1712the array at compile time.
1713
1714@smallexample
ab940b73
RW
1715program test
1716implicit none
1717integer j
1718integer, parameter :: n = 100000
1719integer, parameter :: i(n) = (/ (2*j, j = 1, n) /)
1720print '(10(I0,1X))', i
1721end program test
63346ddb
SK
1722@end smallexample
1723
1724@emph{Caution: This option can lead to long compile times and excessively
1725large object files.}
1726
1727The default value for @var{n} is 65535.
1728
1729
6de9cd9a 1730@item -fmax-stack-var-size=@var{n}
32864778 1731@opindex @code{fmax-stack-var-size}
6de9cd9a 1732This option specifies the size in bytes of the largest array that will be put
1e7de83b
AL
1733on the stack; if the size is exceeded static memory is used (except in
1734procedures marked as RECURSIVE). Use the option @option{-frecursive} to
1735allow for recursive procedures which do not have a RECURSIVE attribute or
1736for parallel programs. Use @option{-fno-automatic} to never use the stack.
6de9cd9a
DN
1737
1738This option currently only affects local arrays declared with constant
1739bounds, and may not apply to all character variables.
7fc15ba5 1740Future versions of GNU Fortran may improve this behavior.
6de9cd9a 1741
54320207 1742The default value for @var{n} is 65536.
6de9cd9a 1743
c76f8d52
MM
1744@item -fstack-arrays
1745@opindex @code{fstack-arrays}
27c33b8f
TK
1746Adding this option will make the Fortran compiler put all arrays of
1747unknown size and array temporaries onto stack memory. If your program uses very
c5a0818e 1748large local arrays it is possible that you will have to extend your runtime
2d8c9ad5 1749limits for stack memory on some operating systems. This flag is enabled
27c33b8f
TK
1750by default at optimization level @option{-Ofast} unless
1751@option{-fmax-stack-var-size} is specified.
c76f8d52 1752
5139e1e9 1753@item -fpack-derived
32864778
DF
1754@opindex @code{fpack-derived}
1755@cindex structure packing
7fc15ba5 1756This option tells GNU Fortran to pack derived type members as closely as
2d8b59df 1757possible. Code compiled with this option is likely to be incompatible
6de9cd9a
DN
1758with code compiled without this option, and may execute slower.
1759
6de9cd9a 1760@item -frepack-arrays
32864778
DF
1761@opindex @code{frepack-arrays}
1762@cindex repacking arrays
7fc15ba5 1763In some circumstances GNU Fortran may pass assumed shape array
02712c16 1764sections via a descriptor describing a noncontiguous area of memory.
6de9cd9a
DN
1765This option adds code to the function prologue to repack the data into
1766a contiguous block at runtime.
1767
1768This should result in faster accesses to the array. However it can introduce
1769significant overhead to the function call, especially when the passed data
02712c16 1770is noncontiguous.
a63dad5b 1771
a63dad5b 1772@item -fshort-enums
32864778 1773@opindex @code{fshort-enums}
a63dad5b 1774This option is provided for interoperability with C code that was
4ba96c02 1775compiled with the @option{-fshort-enums} option. It will make
7fc15ba5 1776GNU Fortran choose the smallest @code{INTEGER} kind a given
a63dad5b 1777enumerator set will fit in, and give all its enumerators this kind.
5a0aad31 1778
95d27703
TK
1779@item -finline-arg-packing
1780@opindex @code{finline-arg-packing}
1781When passing an assumed-shape argument of a procedure as actual
1782argument to an assumed-size or explicit size or as argument to a
1783procedure that does not have an explicit interface, the argument may
1784have to be packed, that is put into contiguous memory. An example is
1785the call to @code{foo} in
1786@smallexample
1787 subroutine foo(a)
1788 real, dimension(*) :: a
1789 end subroutine foo
1790 subroutine bar(b)
1791 real, dimension(:) :: b
1792 call foo(b)
1793 end subroutine bar
1794@end smallexample
1795
1796When @option{-finline-arg-packing} is in effect, this packing will be
1797performed by inline code. This allows for more optimization while
1798increasing code size.
1799
1800@option{-finline-arg-packing} is implied by any of the @option{-O} options
1801except when optimizing for size via @option{-Os}. If the code
1802contains a very large number of argument that have to be packed, code
1803size and also compilation time may become excessive. If that is the
1804case, it may be better to disable this option. Instances of packing
1805can be found by using by using @option{-Warray-temporaries}.
1806
5a0aad31 1807@item -fexternal-blas
32864778 1808@opindex @code{fexternal-blas}
a2bef74c
DF
1809This option will make @command{gfortran} generate calls to BLAS functions
1810for some matrix operations like @code{MATMUL}, instead of using our own
5a0aad31 1811algorithms, if the size of the matrices involved is larger than a given
4ba96c02 1812limit (see @option{-fblas-matmul-limit}). This may be profitable if an
5a0aad31
FXC
1813optimized vendor BLAS library is available. The BLAS library will have
1814to be specified at link time.
1815
5a0aad31 1816@item -fblas-matmul-limit=@var{n}
32864778 1817@opindex @code{fblas-matmul-limit}
4ba96c02 1818Only significant when @option{-fexternal-blas} is in effect.
5a0aad31
FXC
1819Matrix multiplication of matrices with size larger than (or equal to) @var{n}
1820will be performed by calls to BLAS functions, while others will be
1821handled by @command{gfortran} internal algorithms. If the matrices
1822involved are not square, the size comparison is performed using the
1823geometric mean of the dimensions of the argument and result matrices.
1824
1825The default value for @var{n} is 30.
1826
f1abbf69
TK
1827@item -finline-matmul-limit=@var{n}
1828@opindex @code{finline-matmul-limit}
1829When front-end optimiztion is active, some calls to the @code{MATMUL}
1830intrinsic function will be inlined. This may result in code size
1831increase if the size of the matrix cannot be determined at compile
1832time, as code for both cases is generated. Setting
1833@code{-finline-matmul-limit=0} will disable inlining in all cases.
1834Setting this option with a value of @var{n} will produce inline code
1835for matrices with size up to @var{n}. If the matrices involved are not
1836square, the size comparison is performed using the geometric mean of
1837the dimensions of the argument and result matrices.
1838
c7b608a9
TK
1839The default value for @var{n} is 30. The @code{-fblas-matmul-limit}
1840can be used to change this value.
f1abbf69 1841
1e7de83b
AL
1842@item -frecursive
1843@opindex @code{frecursive}
1844Allow indirect recursion by forcing all local arrays to be allocated
1845on the stack. This flag cannot be used together with
1846@option{-fmax-stack-var-size=} or @option{-fno-automatic}.
1847
51b09ce3 1848@item -finit-local-zero
7fc61626 1849@itemx -finit-derived
4d04d67a
RW
1850@itemx -finit-integer=@var{n}
1851@itemx -finit-real=@var{<zero|inf|-inf|nan|snan>}
1852@itemx -finit-logical=@var{<true|false>}
1853@itemx -finit-character=@var{n}
51b09ce3 1854@opindex @code{finit-local-zero}
7fc61626 1855@opindex @code{finit-derived}
51b09ce3
AL
1856@opindex @code{finit-integer}
1857@opindex @code{finit-real}
1858@opindex @code{finit-logical}
1859@opindex @code{finit-character}
1860The @option{-finit-local-zero} option instructs the compiler to
1861initialize local @code{INTEGER}, @code{REAL}, and @code{COMPLEX}
1862variables to zero, @code{LOGICAL} variables to false, and
1863@code{CHARACTER} variables to a string of null bytes. Finer-grained
1864initialization options are provided by the
1865@option{-finit-integer=@var{n}},
346a77d1 1866@option{-finit-real=@var{<zero|inf|-inf|nan|snan>}} (which also initializes
51b09ce3
AL
1867the real and imaginary parts of local @code{COMPLEX} variables),
1868@option{-finit-logical=@var{<true|false>}}, and
1869@option{-finit-character=@var{n}} (where @var{n} is an ASCII character
13051352
FR
1870value) options.
1871
1872With @option{-finit-derived}, components of derived type variables will be
1873initialized according to these flags. Components whose type is not covered by
1874an explicit @option{-finit-*} flag will be treated as described above with
1875@option{-finit-local-zero}.
1876
1877These options do not initialize
d6202322
TM
1878@itemize @bullet
1879@item
e5b1f5a1
FR
1880objects with the POINTER attribute
1881@item
d6202322
TM
1882allocatable arrays
1883@item
d6202322
TM
1884variables that appear in an @code{EQUIVALENCE} statement.
1885@end itemize
1886(These limitations may be removed in future releases).
51b09ce3
AL
1887
1888Note that the @option{-finit-real=nan} option initializes @code{REAL}
346a77d1
TB
1889and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN
1890use @option{-finit-real=snan}; note, however, that compile-time
1891optimizations may convert them into quiet NaN and that trapping
1892needs to be enabled (e.g. via @option{-ffpe-trap}).
f613cea7 1893
66086032
JB
1894The @option{-finit-integer} option will parse the value into an
1895integer of type @code{INTEGER(kind=C_LONG)} on the host. Said value
1896is then assigned to the integer variables in the Fortran code, which
1897might result in wraparound if the value is too large for the kind.
1898
29525822
FXC
1899Finally, note that enabling any of the @option{-finit-*} options will
1900silence warnings that would have been emitted by @option{-Wuninitialized}
1901for the affected local variables.
1902
f613cea7
JW
1903@item -falign-commons
1904@opindex @code{falign-commons}
ab940b73 1905@cindex alignment of @code{COMMON} blocks
f613cea7 1906By default, @command{gfortran} enforces proper alignment of all variables in a
ab940b73
RW
1907@code{COMMON} block by padding them as needed. On certain platforms this is mandatory,
1908on others it increases performance. If a @code{COMMON} block is not declared with
f613cea7 1909consistent data types everywhere, this padding can cause trouble, and
ab940b73
RW
1910@option{-fno-align-commons} can be used to disable automatic alignment. The
1911same form of this option should be used for all files that share a @code{COMMON} block.
1912To avoid potential alignment issues in @code{COMMON} blocks, it is recommended to order
4d04d67a 1913objects from largest to smallest.
72bd130e
TB
1914
1915@item -fno-protect-parens
1916@opindex @code{fno-protect-parens}
4d04d67a 1917@cindex re-association of parenthesized expressions
72bd130e
TB
1918By default the parentheses in expression are honored for all optimization
1919levels such that the compiler does not do any re-association. Using
ab940b73
RW
1920@option{-fno-protect-parens} allows the compiler to reorder @code{REAL} and
1921@code{COMPLEX} expressions to produce faster code. Note that for the re-association
72bd130e 1922optimization @option{-fno-signed-zeros} and @option{-fno-trapping-math}
7a994646
TB
1923need to be in effect. The parentheses protection is enabled by default, unless
1924@option{-Ofast} is given.
597553ab
PT
1925
1926@item -frealloc-lhs
1927@opindex @code{frealloc-lhs}
1928@cindex Reallocate the LHS in assignments
1929An allocatable left-hand side of an intrinsic assignment is automatically
1930(re)allocated if it is either unallocated or has a different shape. The
f1fb11f1
TB
1931option is enabled by default except when @option{-std=f95} is given. See
1932also @option{-Wrealloc-lhs}.
2757d5ec
TK
1933
1934@item -faggressive-function-elimination
1935@opindex @code{faggressive-function-elimination}
1936@cindex Elimination of functions with identical argument lists
1937Functions with identical argument lists are eliminated within
1938statements, regardless of whether these functions are marked
1939@code{PURE} or not. For example, in
1940@smallexample
1941 a = f(b,c) + f(b,c)
1942@end smallexample
51a30b32
TK
1943there will only be a single call to @code{f}. This option only works
1944if @option{-ffrontend-optimize} is in effect.
1945
1946@item -ffrontend-optimize
1947@opindex @code{frontend-optimize}
1948@cindex Front-end optimization
1949This option performs front-end optimization, based on manipulating
bf9197df
JW
1950parts the Fortran parse tree. Enabled by default by any @option{-O} option
1951except @option{-O0} and @option{-Og}. Optimizations enabled by this option
1952include:
1953@itemize @bullet
1954@item inlining calls to @code{MATMUL},
1955@item elimination of identical function calls within expressions,
1956@item removing unnecessary calls to @code{TRIM} in comparisons and assignments,
1957@item replacing @code{TRIM(a)} with @code{a(1:LEN_TRIM(a))} and
1958@item short-circuiting of logical operators (@code{.AND.} and @code{.OR.}).
1959@end itemize
1960It can be deselected by specifying @option{-fno-frontend-optimize}.
d88412fc
TK
1961
1962@item -ffrontend-loop-interchange
1963@opindex @code{frontend-loop-interchange}
1964@cindex loop interchange, Fortran
1965Attempt to interchange loops in the Fortran front end where
1966profitable. Enabled by default by any @option{-O} option.
1967At the moment, this option only affects @code{FORALL} and
1968@code{DO CONCURRENT} statements with several forall triplets.
6de9cd9a
DN
1969@end table
1970
1971@xref{Code Gen Options,,Options for Code Generation Conventions,
1972gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1973offered by the GBE
7fc15ba5 1974shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
6de9cd9a 1975
6de9cd9a
DN
1976@c man end
1977
e655a6cc
TK
1978@node Interoperability Options
1979@section Options for interoperability with other languages
1980
1981@table @asis
1982
1983@item -fc-prototypes
1984@opindex @code{c-prototypes}
6328ce1f 1985@cindex Generating C prototypes from Fortran BIND(C) enteties
e655a6cc
TK
1986This option will generate C prototypes from @code{BIND(C)} variable
1987declarations, types and procedure interfaces and writes them to
1988standard output. @code{ENUM} is not yet supported.
1989
1990The generated prototypes may need inclusion of an appropriate header,
1991such as @code{<stdint.h>} or @code{<stdlib.h>}. For types which are
1992not specified using the appropriate kind from the @code{iso_c_binding}
1993module, a warning is added as a comment to the code.
1994
1995For function pointers, a pointer to a function returning @code{int}
1996without an explicit argument list is generated.
1997
1998Example of use:
1999@smallexample
2000$ gfortran -fc-prototypes -fsyntax-only foo.f90 > foo.h
2001@end smallexample
2002where the C code intended for interoperating with the Fortran code
2003then uses @code{#include "foo.h"}.
6328ce1f
TK
2004
2005@item -fc-prototypes-external
2006@opindex @code{c-prototypes-external}
2007@cindex Generating C prototypes from external procedures
2008This option will generate C prototypes from external functions and
2009subroutines and write them to standard output. This may be useful for
2010making sure that C bindings to Fortran code are correct. This option
2011does not generate prototypes for @code{BIND(C)} procedures, use
2012@option{-fc-prototypes} for that.
2013
2014The generated prototypes may need inclusion of an appropriate
2015header, such as as @code{<stdint.h>} or @code{<stdlib.h>}.
2016
2017This is primarily meant for legacy code to ensure that existing C
2018bindings match what @command{gfortran} emits. The generated C
2019prototypes should be correct for the current version of the compiler,
2020but may not match what other compilers or earlier versions of
2021@command{gfortran} need. For new developments, use of the
2022@code{BIND(C)} features is recommended.
2023
2024Example of use:
2025@smallexample
2026$ gfortran -fc-prototypes-external -fsyntax-only foo.f > foo.h
2027@end smallexample
2028where the C code intended for interoperating with the Fortran code
2029then uses @code{#include "foo.h"}.
e655a6cc
TK
2030@end table
2031
6de9cd9a 2032@node Environment Variables
a2bef74c 2033@section Environment variables affecting @command{gfortran}
e739dfac 2034@cindex environment variable
6de9cd9a
DN
2035
2036@c man begin ENVIRONMENT
2037
7fc15ba5 2038The @command{gfortran} compiler currently does not make use of any environment
6de9cd9a
DN
2039variables to control its operation above and beyond those
2040that affect the operation of @command{gcc}.
2041
2042@xref{Environment Variables,,Environment Variables Affecting GCC,
2043gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
2044variables.
2045
eaa90d25 2046@xref{Runtime}, for environment variables that affect the
7fc15ba5 2047run-time behavior of programs compiled with GNU Fortran.
6de9cd9a 2048@c man end