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