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