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