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