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