]> gcc.gnu.org Git - gcc.git/blame - gcc/fortran/invoke.texi
subst.md (define_subst_attr "mask_avx512bw_condition"): New.
[gcc.git] / gcc / fortran / invoke.texi
CommitLineData
98db73df 1@c Copyright (C) 2004-2014 Free Software Foundation, Inc.
7fc15ba5 2@c This is part of the GNU Fortran manual.
6de9cd9a
DN
3@c For copying conditions, see the file gfortran.texi.
4
5@ignore
6@c man begin COPYRIGHT
98db73df 7Copyright @copyright{} 2004-2014 Free Software Foundation, Inc.
6de9cd9a
DN
8
9Permission is granted to copy, distribute and/or modify this document
07a67d6a 10under the terms of the GNU Free Documentation License, Version 1.3 or
6de9cd9a 11any later version published by the Free Software Foundation; with the
70b1e376
RW
12Invariant Sections being ``Funding Free Software'', the Front-Cover
13Texts being (a) (see below), and with the Back-Cover Texts being (b)
14(see below). A copy of the license is included in the gfdl(7) man page.
6ccde948 15
6de9cd9a
DN
16(a) The FSF's Front-Cover Text is:
17
18 A GNU Manual
19
20(b) The FSF's Back-Cover Text is:
21
22 You have freedom to copy and modify this GNU Manual, like GNU
23 software. Copies published by the Free Software Foundation raise
24 funds for GNU development.
25@c man end
26@c Set file name and title for the man page.
27@setfilename gfortran
7fc15ba5 28@settitle GNU Fortran compiler.
6de9cd9a
DN
29@c man begin SYNOPSIS
30gfortran [@option{-c}|@option{-S}|@option{-E}]
31 [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
32 [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
33 [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
34 [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
35 [@option{-f}@var{option}@dots{}]
6ccde948 36 [@option{-m}@var{machine-option}@dots{}]
6de9cd9a
DN
37 [@option{-o} @var{outfile}] @var{infile}@dots{}
38
39Only the most useful options are listed here; see below for the
40remainder.
41@c man end
42@c man begin SEEALSO
43gpl(7), gfdl(7), fsf-funding(7),
44cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
45and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
46@file{ld}, @file{binutils} and @file{gdb}.
47@c man end
48@c man begin BUGS
49For instructions on reporting bugs, see
2f41c1d6 50@w{@value{BUGURL}}.
6de9cd9a
DN
51@c man end
52@c man begin AUTHOR
53See the Info entry for @command{gfortran} for contributors to GCC and
7fc15ba5 54GNU Fortran.
6de9cd9a
DN
55@c man end
56@end ignore
57
7fc15ba5
BM
58@node Invoking GNU Fortran
59@chapter GNU Fortran Command Options
60@cindex GNU Fortran command options
6de9cd9a 61@cindex command options
7fc15ba5 62@cindex options, @command{gfortran} command
6de9cd9a
DN
63
64@c man begin DESCRIPTION
65
66The @command{gfortran} command supports all the options supported by the
f4347334
ZG
67@command{gcc} command. Only options specific to GNU Fortran are documented
68here.
6de9cd9a
DN
69
70@xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
71Collection (GCC)}, for information
72on the non-Fortran-specific aspects of the @command{gcc} command (and,
73therefore, the @command{gfortran} command).
74
75@cindex options, negative forms
7fc15ba5 76All GCC and GNU Fortran options
6de9cd9a
DN
77are accepted both by @command{gfortran} and by @command{gcc}
78(as well as any other drivers built at the same time,
79such as @command{g++}),
7fc15ba5
BM
80since adding GNU Fortran to the GCC distribution
81enables acceptance of GNU Fortran options
6de9cd9a
DN
82by all of the relevant drivers.
83
84In some cases, options have positive and negative forms;
85the negative form of @option{-ffoo} would be @option{-fno-foo}.
86This manual documents only one of these two forms, whichever
87one is not the default.
88@c man end
89
90@menu
91* Option Summary:: Brief list of all @command{gfortran} options,
92 without explanations.
93* Fortran Dialect Options:: Controlling the variant of Fortran language
94 compiled.
670637ee 95* Preprocessing Options:: Enable and customize preprocessing.
592600ce 96* Error and Warning Options:: How picky should the compiler be?
6de9cd9a
DN
97* Debugging Options:: Symbol tables, measurements, and debugging dumps.
98* Directory Options:: Where to find module files
70263321 99* Link Options :: Influencing the linking step
eaa90d25 100* Runtime Options:: Influencing runtime behavior
6de9cd9a
DN
101* Code Gen Options:: Specifying conventions for function calls, data layout
102 and register usage.
a2bef74c 103* Environment Variables:: Environment variables that affect @command{gfortran}.
6de9cd9a
DN
104@end menu
105
106@node Option Summary
a2bef74c 107@section Option summary
6de9cd9a
DN
108
109@c man begin OPTIONS
110
111Here is a summary of all the options specific to GNU Fortran, grouped
112by type. Explanations are in the following sections.
113
114@table @emph
115@item Fortran Language Options
a2bef74c 116@xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
f4347334
ZG
117@gccoptlist{-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code @gol
118-fd-lines-as-comments -fdefault-double-8 -fdefault-integer-8 @gol
119-fdefault-real-8 -fdollar-ok -ffixed-line-length-@var{n} @gol
120-ffixed-line-length-none -ffree-form -ffree-line-length-@var{n} @gol
121-ffree-line-length-none -fimplicit-none -finteger-4-integer-8 @gol
122-fmax-identifier-length -fmodule-private -fno-fixed-form -fno-range-check @gol
123-fopenmp -freal-4-real-10 -freal-4-real-16 -freal-4-real-8 @gol
124-freal-8-real-10 -freal-8-real-16 -freal-8-real-4 -std=@var{std}
125}
6de9cd9a 126
670637ee
DF
127@item Preprocessing Options
128@xref{Preprocessing Options,,Enable and customize preprocessing}.
f4347334
ZG
129@gccoptlist{-A-@var{question}@r{[}=@var{answer}@r{]}
130-A@var{question}=@var{answer} -C -CC -D@var{macro}@r{[}=@var{defn}@r{]}
131-H -P @gol
132-U@var{macro} -cpp -dD -dI -dM -dN -dU -fworking-directory
133-imultilib @var{dir} @gol
134-iprefix @var{file} -iquote -isysroot @var{dir} -isystem @var{dir} -nocpp
135-nostdinc @gol
136-undef
137}
670637ee 138
592600ce 139@item Error and Warning Options
a2bef74c
DF
140@xref{Error and Warning Options,,Options to request or suppress errors
141and warnings}.
f4347334 142@gccoptlist{-Waliasing -Wall -Wampersand -Warray-bounds
0e193637 143-Wc-binding-type -Wcharacter-truncation @gol
f4347334
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}
8f606521
JW
332Set the default integer and logical types to an 8 byte wide type. This option
333also affects the kind of integer constants like @code{42}. Unlike
a4cf752c
JW
334@option{-finteger-4-integer-8}, it does not promote variables with explicit
335kind declaration.
9803c5f0
JW
336
337@item -fdefault-real-8
338@opindex @code{fdefault-real-8}
8f606521 339Set the default real type to an 8 byte wide type. This option also affects
9803c5f0
JW
340the kind of non-double real constants like @code{1.0}, and does promote
341the default width of @code{DOUBLE PRECISION} to 16 bytes if possible, unless
a4cf752c
JW
342@code{-fdefault-double-8} is given, too. Unlike @option{-freal-4-real-8},
343it does not promote variables with explicit kind declaration.
9803c5f0
JW
344
345@item -fdefault-double-8
346@opindex @code{fdefault-double-8}
8f606521
JW
347Set the @code{DOUBLE PRECISION} type to an 8 byte wide type. Do nothing if this
348is already the default. If @option{-fdefault-real-8} is given,
349@code{DOUBLE PRECISION} would instead be promoted to 16 bytes if possible, and
350@option{-fdefault-double-8} can be used to prevent this. The kind of real
351constants like @code{1.d0} will not be changed by @option{-fdefault-real-8}
352though, so also @option{-fdefault-double-8} does not affect it.
9803c5f0
JW
353
354@item -finteger-4-integer-8
355@opindex @code{finteger-4-integer-8}
356Promote all @code{INTEGER(KIND=4)} entities to an @code{INTEGER(KIND=8)}
357entities. If @code{KIND=8} is unavailable, then an error will be issued.
358This option should be used with care and may not be suitable for your codes.
359Areas of possible concern include calls to external procedures,
360alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
361BOZ literal constant conversion, and I/O. Inspection of the intermediate
362representation of the translated Fortran code, produced by
363@option{-fdump-tree-original}, is suggested.
364
f4347334
ZG
365@item -freal-4-real-8
366@itemx -freal-4-real-10
9803c5f0 367@itemx -freal-4-real-16
f4347334
ZG
368@itemx -freal-8-real-4
369@itemx -freal-8-real-10
370@itemx -freal-8-real-16
371@opindex @code{freal-4-real-8}
372@opindex @code{freal-4-real-10}
373@opindex @code{freal-4-real-16}
374@opindex @code{freal-8-real-4}
375@opindex @code{freal-8-real-10}
376@opindex @code{freal-8-real-16}
377@cindex options, real kind type promotion
378Promote all @code{REAL(KIND=M)} entities to @code{REAL(KIND=N)} entities.
379If @code{REAL(KIND=N)} is unavailable, then an error will be issued.
380All other real kind types are unaffected by this option.
381These options should be used with care and may not be suitable for your
382codes. Areas of possible concern include calls to external procedures,
383alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
384BOZ literal constant conversion, and I/O. Inspection of the intermediate
385representation of the translated Fortran code, produced by
386@option{-fdump-tree-original}, is suggested.
387
6de9cd9a 388@item -std=@var{std}
32864778 389@opindex @code{std=}@var{std} option
276419d0 390Specify the standard to which the program is expected to conform, which
f489fba1
FXC
391may be one of @samp{f95}, @samp{f2003}, @samp{f2008}, @samp{gnu}, or
392@samp{legacy}. The default value for @var{std} is @samp{gnu}, which
393specifies a superset of the Fortran 95 standard that includes all of the
394extensions supported by GNU Fortran, although warnings will be given for
395obsolete extensions not recommended for use in new code. The
396@samp{legacy} value is equivalent but without the warnings for obsolete
397extensions, and may be useful for old non-standard programs. The
398@samp{f95}, @samp{f2003} and @samp{f2008} values specify strict
399conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards,
400respectively; errors are given for all extensions beyond the relevant
401language standard, and warnings are given for the Fortran 77 features
4650947d 402that are permitted but obsolescent in later standards. @samp{-std=f2008ts}
2e8d9212 403allows the Fortran 2008 standard including the additions of the
4650947d 404Technical Specification (TS) 29113 on Further Interoperability of Fortran
d62cf3df 405with C and TS 18508 on Additional Parallel Features in Fortran.
6de9cd9a 406
6de9cd9a
DN
407@end table
408
670637ee
DF
409@node Preprocessing Options
410@section Enable and customize preprocessing
411@cindex preprocessor
412@cindex options, preprocessor
413@cindex CPP
414
415Preprocessor related options. See section
416@ref{Preprocessing and conditional compilation} for more detailed
417information on preprocessing in @command{gfortran}.
418
419@table @gcctabopt
420@item -cpp
4d04d67a 421@itemx -nocpp
670637ee
DF
422@opindex @code{cpp}
423@opindex @code{fpp}
424@cindex preprocessor, enable
425@cindex preprocessor, disable
426Enable preprocessing. The preprocessor is automatically invoked if
427the file extension is @file{.fpp}, @file{.FPP}, @file{.F}, @file{.FOR},
428@file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
429this option to manually enable preprocessing of any kind of Fortran file.
430
431To disable preprocessing of files with any of the above listed extensions,
432use the negative form: @option{-nocpp}.
433
f90b55a6
TK
434The preprocessor is run in traditional mode. Any restrictions of the
435file-format, especially the limits on line length, apply for
436preprocessed output as well, so it might be advisable to use the
437@option{-ffree-line-length-none} or @option{-ffixed-line-length-none}
438options.
670637ee
DF
439
440@item -dM
441@opindex @code{dM}
442@cindex preprocessor, debugging
443@cindex debugging, preprocessor
444Instead of the normal output, generate a list of @code{'#define'}
445directives for all the macros defined during the execution of the
446preprocessor, including predefined macros. This gives you a way
447of finding out what is predefined in your version of the preprocessor.
448Assuming you have no file @file{foo.f90}, the command
449@smallexample
fc1e05d2 450 touch foo.f90; gfortran -cpp -E -dM foo.f90
670637ee
DF
451@end smallexample
452will show all the predefined macros.
453
454@item -dD
455@opindex @code{dD}
456@cindex preprocessor, debugging
457@cindex debugging, preprocessor
458Like @option{-dM} except in two respects: it does not include the
459predefined macros, and it outputs both the @code{#define} directives
460and the result of preprocessing. Both kinds of output go to the
461standard output file.
462
463@item -dN
464@opindex @code{dN}
465@cindex preprocessor, debugging
466@cindex debugging, preprocessor
467Like @option{-dD}, but emit only the macro names, not their expansions.
468
469@item -dU
470@opindex @code{dU}
471@cindex preprocessor, debugging
472@cindex debugging, preprocessor
473Like @option{dD} except that only macros that are expanded, or whose
474definedness is tested in preprocessor directives, are output; the
475output is delayed until the use or test of the macro; and @code{'#undef'}
476directives are also output for macros tested but undefined at the time.
477
478@item -dI
479@opindex @code{dI}
480@cindex preprocessor, debugging
481@cindex debugging, preprocessor
482Output @code{'#include'} directives in addition to the result
483of preprocessing.
484
485@item -fworking-directory
486@opindex @code{fworking-directory}
487@cindex preprocessor, working directory
488Enable generation of linemarkers in the preprocessor output that will
489let the compiler know the current working directory at the time of
490preprocessing. When this option is enabled, the preprocessor will emit,
491after the initial linemarker, a second linemarker with the current
492working directory followed by two slashes. GCC will use this directory,
c5a0818e 493when it is present in the preprocessed input, as the directory emitted
670637ee
DF
494as the current working directory in some debugging information formats.
495This option is implicitly enabled if debugging information is enabled,
496but this can be inhibited with the negated form
497@option{-fno-working-directory}. If the @option{-P} flag is present
498in the command line, this option has no effect, since no @code{#line}
499directives are emitted whatsoever.
500
c3280643
DF
501@item -idirafter @var{dir}
502@opindex @code{idirafter @var{dir}}
503@cindex preprocessing, include path
504Search @var{dir} for include files, but do it after all directories
505specified with @option{-I} and the standard system directories have
506been exhausted. @var{dir} is treated as a system include directory.
507If dir begins with @code{=}, then the @code{=} will be replaced by
508the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
509
670637ee
DF
510@item -imultilib @var{dir}
511@opindex @code{imultilib @var{dir}}
512@cindex preprocessing, include path
513Use @var{dir} as a subdirectory of the directory containing target-specific
514C++ headers.
515
516@item -iprefix @var{prefix}
517@opindex @code{iprefix @var{prefix}}
518@cindex preprocessing, include path
519Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
520options. If the @var{prefix} represents a directory, you should include
521the final @code{'/'}.
522
523@item -isysroot @var{dir}
524@opindex @code{isysroot @var{dir}}
525@cindex preprocessing, include path
526This option is like the @option{--sysroot} option, but applies only to
527header files. See the @option{--sysroot} option for more information.
528
529@item -iquote @var{dir}
530@opindex @code{iquote @var{dir}}
531@cindex preprocessing, include path
532Search @var{dir} only for header files requested with @code{#include "file"};
533they are not searched for @code{#include <file>}, before all directories
534specified by @option{-I} and before the standard system directories. If
535@var{dir} begins with @code{=}, then the @code{=} will be replaced by the
536sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
537
538@item -isystem @var{dir}
539@opindex @code{isystem @var{dir}}
540@cindex preprocessing, include path
541Search @var{dir} for header files, after all directories specified by
542@option{-I} but before the standard system directories. Mark it as a
543system directory, so that it gets the same special treatment as is
544applied to the standard system directories. If @var{dir} begins with
545@code{=}, then the @code{=} will be replaced by the sysroot prefix;
546see @option{--sysroot} and @option{-isysroot}.
547
548@item -nostdinc
549@opindex @code{nostdinc}
550Do not search the standard system directories for header files. Only
551the directories you have specified with @option{-I} options (and the
552directory of the current file, if appropriate) are searched.
553
554@item -undef
555@opindex @code{undef}
556Do not predefine any system-specific or GCC-specific macros.
557The standard predefined macros remain defined.
558
559@item -A@var{predicate}=@var{answer}
560@opindex @code{A@var{predicate}=@var{answer}}
4d04d67a 561@cindex preprocessing, assertion
670637ee
DF
562Make an assertion with the predicate @var{predicate} and answer @var{answer}.
563This form is preferred to the older form -A predicate(answer), which is still
564supported, because it does not use shell special characters.
565
566@item -A-@var{predicate}=@var{answer}
567@opindex @code{A-@var{predicate}=@var{answer}}
4d04d67a 568@cindex preprocessing, assertion
670637ee
DF
569Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
570
571@item -C
572@opindex @code{C}
573@cindex preprocessing, keep comments
574Do not discard comments. All comments are passed through to the output
575file, except for comments in processed directives, which are deleted
576along with the directive.
577
578You should be prepared for side effects when using @option{-C}; it causes
579the preprocessor to treat comments as tokens in their own right. For example,
580comments appearing at the start of what would be a directive line have the
581effect of turning that line into an ordinary source line, since the first
582token on the line is no longer a @code{'#'}.
583
584Warning: this currently handles C-Style comments only. The preprocessor
585does not yet recognize Fortran-style comments.
586
587@item -CC
588@opindex @code{CC}
589@cindex preprocessing, keep comments
590Do not discard comments, including during macro expansion. This is like
591@option{-C}, except that comments contained within macros are also passed
592through to the output file where the macro is expanded.
593
594In addition to the side-effects of the @option{-C} option, the @option{-CC}
595option causes all C++-style comments inside a macro to be converted to C-style
596comments. This is to prevent later use of that macro from inadvertently
597commenting out the remainder of the source line. The @option{-CC} option
598is generally used to support lint comments.
599
600Warning: this currently handles C- and C++-Style comments only. The
601preprocessor does not yet recognize Fortran-style comments.
602
603@item -D@var{name}
604@opindex @code{D@var{name}}
605@cindex preprocessing, define macros
606Predefine name as a macro, with definition @code{1}.
607
608@item -D@var{name}=@var{definition}
609@opindex @code{D@var{name}=@var{definition}}
610@cindex preprocessing, define macros
611The contents of @var{definition} are tokenized and processed as if they
612appeared during translation phase three in a @code{'#define'} directive.
613In particular, the definition will be truncated by embedded newline
614characters.
615
616If you are invoking the preprocessor from a shell or shell-like program
617you may need to use the shell's quoting syntax to protect characters such
618as spaces that have a meaning in the shell syntax.
619
620If you wish to define a function-like macro on the command line, write
621its argument list with surrounding parentheses before the equals sign
622(if any). Parentheses are meaningful to most shells, so you will need
623to quote the option. With sh and csh, @code{-D'name(args...)=definition'}
624works.
625
626@option{-D} and @option{-U} options are processed in the order they are
627given on the command line. All -imacros file and -include file options
628are processed after all -D and -U options.
629
630@item -H
631@opindex @code{H}
632Print the name of each header file used, in addition to other normal
633activities. Each name is indented to show how deep in the @code{'#include'}
634stack it is.
635
636@item -P
637@opindex @code{P}
638@cindex preprocessing, no linemarkers
639Inhibit generation of linemarkers in the output from the preprocessor.
640This might be useful when running the preprocessor on something that
641is not C code, and will be sent to a program which might be confused
642by the linemarkers.
643
644@item -U@var{name}
645@opindex @code{U@var{name}}
646@cindex preprocessing, undefine macros
647Cancel any previous definition of @var{name}, either built in or provided
648with a @option{-D} option.
649@end table
650
651
592600ce 652@node Error and Warning Options
a2bef74c 653@section Options to request or suppress errors and warnings
6de9cd9a 654@cindex options, warnings
592600ce 655@cindex options, errors
6de9cd9a 656@cindex warnings, suppressing
592600ce 657@cindex messages, error
6de9cd9a
DN
658@cindex messages, warning
659@cindex suppressing warnings
660
592600ce
BM
661Errors are diagnostic messages that report that the GNU Fortran compiler
662cannot compile the relevant piece of source code. The compiler will
663continue to process the program in an attempt to report further errors
664to aid in debugging, but will not produce any compiled output.
665
6de9cd9a 666Warnings are diagnostic messages that report constructions which
592600ce 667are not inherently erroneous but which are risky or suggest there is
4ba96c02 668likely to be a bug in the program. Unless @option{-Werror} is specified,
592600ce 669they do not prevent compilation of the program.
6de9cd9a
DN
670
671You can request many specific warnings with options beginning @option{-W},
672for example @option{-Wimplicit} to request warnings on implicit
673declarations. Each of these specific warning options also has a
674negative form beginning @option{-Wno-} to turn off warnings;
675for example, @option{-Wno-implicit}. This manual lists only one of the
676two forms, whichever is not the default.
677
592600ce
BM
678These options control the amount and kinds of errors and warnings produced
679by GNU Fortran:
6de9cd9a
DN
680
681@table @gcctabopt
efb66586
JD
682@item -fmax-errors=@var{n}
683@opindex @code{fmax-errors=}@var{n}
4ba96c02 684@cindex errors, limiting
592600ce
BM
685Limits the maximum number of error messages to @var{n}, at which point
686GNU Fortran bails out rather than attempting to continue processing the
687source code. If @var{n} is 0, there is no limit on the number of error
688messages produced.
689
6de9cd9a 690@item -fsyntax-only
32864778 691@opindex @code{fsyntax-only}
4ba96c02 692@cindex syntax checking
c5a0818e 693Check the code for syntax errors, but do not actually compile it. This
adeb22c4
FXC
694will generate module files for each module present in the code, but no
695other output file.
6de9cd9a 696
6de9cd9a 697@item -pedantic
32864778 698@opindex @code{pedantic}
7fc15ba5 699Issue warnings for uses of extensions to Fortran 95.
6de9cd9a
DN
700@option{-pedantic} also applies to C-language constructs where they
701occur in GNU Fortran source files, such as use of @samp{\e} in a
40746dcc 702character constant within a directive like @code{#include}.
6de9cd9a 703
7fc15ba5 704Valid Fortran 95 programs should compile properly with or without
6de9cd9a
DN
705this option.
706However, without this option, certain GNU extensions and traditional
707Fortran features are supported as well.
708With this option, many of them are rejected.
709
710Some users try to use @option{-pedantic} to check programs for conformance.
711They soon find that it does not do quite what they want---it finds some
712nonstandard practices, but not all.
7fc15ba5 713However, improvements to GNU Fortran in this area are welcome.
6de9cd9a 714
f489fba1
FXC
715This should be used in conjunction with @option{-std=f95},
716@option{-std=f2003} or @option{-std=f2008}.
6de9cd9a 717
6de9cd9a 718@item -pedantic-errors
32864778 719@opindex @code{pedantic-errors}
6de9cd9a
DN
720Like @option{-pedantic}, except that errors are produced rather than
721warnings.
722
6de9cd9a 723@item -Wall
32864778 724@opindex @code{Wall}
6de9cd9a
DN
725@cindex all warnings
726@cindex warnings, all
3fbab549
JD
727Enables commonly used warning options pertaining to usage that
728we recommend avoiding and that we believe are easy to avoid.
cf21551e 729This currently includes @option{-Waliasing}, @option{-Wampersand},
72ac1c07 730@option{-Wconversion}, @option{-Wsurprising}, @option{-Wc-binding-type},
cf21551e 731@option{-Wintrinsics-std}, @option{-Wno-tabs}, @option{-Wintrinsic-shadow},
f657024b
TB
732@option{-Wline-truncation}, @option{-Wtarget-lifetime},
733@option{-Wreal-q-constant} and @option{-Wunused}.
6de9cd9a 734
6de9cd9a 735@item -Waliasing
32864778 736@opindex @code{Waliasing}
6de9cd9a 737@cindex aliasing
32864778 738@cindex warnings, aliasing
3010be13
AD
739Warn about possible aliasing of dummy arguments. Specifically, it warns
740if the same actual argument is associated with a dummy argument with
40746dcc 741@code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
3010be13
AD
742with an explicit interface.
743
744The following example will trigger the warning.
6de9cd9a 745@smallexample
3010be13
AD
746 interface
747 subroutine bar(a,b)
748 integer, intent(in) :: a
749 integer, intent(out) :: b
750 end subroutine
751 end interface
752 integer :: a
753
754 call bar(a,a)
6de9cd9a
DN
755@end smallexample
756
3fbab549 757@item -Wampersand
32864778
DF
758@opindex @code{Wampersand}
759@cindex warnings, ampersand
ab940b73 760@cindex @code{&}
3fbab549 761Warn about missing ampersand in continued character constants. The warning is
f489fba1
FXC
762given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95},
763@option{-std=f2003} and @option{-std=f2008}. Note: With no ampersand
764given in a continued character constant, GNU Fortran assumes continuation
765at the first non-comment, non-whitespace character after the ampersand
766that initiated the continuation.
3fbab549 767
bdfd2ff0
TK
768@item -Warray-temporaries
769@opindex @code{Warray-temporaries}
770@cindex warnings, array temporaries
771Warn about array temporaries generated by the compiler. The information
772generated by this warning is sometimes useful in optimization, in order to
773avoid such temporaries.
774
0e193637
TB
775@item -Wc-binding-type
776@opindex @code{Wc-binding-type}
777@cindex warning, C binding type
778Warn if the a variable might not be C interoperable. In particular, warn if
779the variable has been declared using an intrinsic type with default kind
780instead of using a kind parameter defined for C interoperability in the
72ac1c07
TK
781intrinsic @code{ISO_C_Binding} module. This option is implied by
782@option{-Wall}.
0e193637 783
276419d0 784@item -Wcharacter-truncation
32864778
DF
785@opindex @code{Wcharacter-truncation}
786@cindex warnings, character truncation
276419d0
BM
787Warn when a character assignment will truncate the assigned string.
788
802e3f8c
RW
789@item -Wline-truncation
790@opindex @code{Wline-truncation}
791@cindex warnings, line truncation
72ac1c07
TK
792Warn when a source code line will be truncated. This option is
793implied by @option{-Wall}.
802e3f8c 794
6de9cd9a 795@item -Wconversion
32864778
DF
796@opindex @code{Wconversion}
797@cindex warnings, conversion
6de9cd9a 798@cindex conversion
daf8c6f0
DF
799Warn about implicit conversions that are likely to change the value of
800the expression after conversion. Implied by @option{-Wall}.
801
802@item -Wconversion-extra
803@opindex @code{Wconversion-extra}
804@cindex warnings, conversion
805@cindex conversion
806Warn about implicit conversions between different types and kinds.
6de9cd9a 807
72ac1c07
TK
808@item -Wextra
809@opindex @code{Wextra}
810@cindex extra warnings
811@cindex warnings, extra
812Enables some warning options for usages of language features which
813may be problematic. This currently includes @option{-Wcompare-reals}
814and @option{-Wunused-parameter}.
815
6de9cd9a 816@item -Wimplicit-interface
32864778
DF
817@opindex @code{Wimplicit-interface}
818@cindex warnings, implicit interface
02712c16 819Warn if a procedure is called without an explicit interface.
6de9cd9a
DN
820Note this only checks that an explicit interface is present. It does not
821check that the declared interfaces are consistent across program units.
822
ca071303
FXC
823@item -Wimplicit-procedure
824@opindex @code{Wimplicit-procedure}
825@cindex warnings, implicit procedure
826Warn if a procedure is called that has neither an explicit interface
827nor has been declared as @code{EXTERNAL}.
828
c3005b0f
DK
829@item -Wintrinsics-std
830@opindex @code{Wintrinsics-std}
1207ac67 831@cindex warnings, non-standard intrinsics
c3005b0f
DK
832@cindex warnings, intrinsics of other standards
833Warn if @command{gfortran} finds a procedure named like an intrinsic not
834available in the currently selected standard (with @option{-std}) and treats
835it as @code{EXTERNAL} procedure because of this. @option{-fall-intrinsics} can
c7d9f803 836be used to never trigger this behavior and always link to the intrinsic
c3005b0f 837regardless of the selected standard.
b7892582 838
5a17346a
SK
839@item -Wreal-q-constant
840@opindex @code{Wreal-q-constant}
841@cindex warnings, @code{q} exponent-letter
842Produce a warning if a real-literal-constant contains a @code{q}
843exponent-letter.
844
6de9cd9a 845@item -Wsurprising
32864778
DF
846@opindex @code{Wsurprising}
847@cindex warnings, suspicious code
2d8b59df
SK
848Produce a warning when ``suspicious'' code constructs are encountered.
849While technically legal these usually indicate that an error has been made.
6de9cd9a
DN
850
851This currently produces a warning under the following circumstances:
852
853@itemize @bullet
854@item
ffd1953e
FXC
855An INTEGER SELECT construct has a CASE that can never be matched as its
856lower value is greater than its upper value.
6de9cd9a
DN
857
858@item
859A LOGICAL SELECT construct has three CASE statements.
39a184ce
JD
860
861@item
862A TRANSFER specifies a source that is shorter than the destination.
fee3292b
DK
863
864@item
865The type of a function result is declared more than once with the same type. If
866@option{-pedantic} or standard-conforming mode is enabled, this is an error.
5e1d6b4c
DK
867
868@item
869A @code{CHARACTER} variable is declared with negative length.
6de9cd9a
DN
870@end itemize
871
840bd9f7 872@item -Wtabs
32864778
DF
873@opindex @code{Wtabs}
874@cindex warnings, tabs
e739dfac 875@cindex tabulators
840bd9f7 876By default, tabs are accepted as whitespace, but tabs are not members
fd1935d5
TB
877of the Fortran Character Set. For continuation lines, a tab followed
878by a digit between 1 and 9 is supported. @option{-Wno-tabs} will cause
879a warning to be issued if a tab is encountered. Note, @option{-Wno-tabs}
880is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
f489fba1 881@option{-std=f2008} and @option{-Wall}.
840bd9f7 882
2d8b59df 883@item -Wunderflow
32864778
DF
884@opindex @code{Wunderflow}
885@cindex warnings, underflow
886@cindex underflow
2d8b59df
SK
887Produce a warning when numerical constant expressions are
888encountered, which yield an UNDERFLOW during compilation.
889
c3005b0f
DK
890@item -Wintrinsic-shadow
891@opindex @code{Wintrinsic-shadow}
892@cindex warnings, intrinsic
893@cindex intrinsic
894Warn if a user-defined procedure or module procedure has the same name as an
895intrinsic; in this case, an explicit interface or @code{EXTERNAL} or
896@code{INTRINSIC} declaration might be needed to get calls later resolved to
72ac1c07 897the desired intrinsic/procedure. This option is implied by @option{-Wall}.
c3005b0f 898
4ed44ccc
DF
899@item -Wunused-dummy-argument
900@opindex @code{Wunused-dummy-argument}
901@cindex warnings, unused dummy argument
902@cindex unused dummy argument
903@cindex dummy argument, unused
904Warn about unused dummy arguments. This option is implied by @option{-Wall}.
905
d92693b4
DF
906@item -Wunused-parameter
907@opindex @code{Wunused-parameter}
908@cindex warnings, unused parameter
909@cindex unused parameter
910Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
911@command{gfortran}'s implementation of this option does not warn
4ed44ccc
DF
912about unused dummy arguments (see @option{-Wunused-dummy-argument}),
913but about unused @code{PARAMETER} values. @option{-Wunused-parameter}
3e9c4087
TB
914is implied by @option{-Wextra} if also @option{-Wunused} or
915@option{-Wall} is used.
d92693b4 916
f613cea7
JW
917@item -Walign-commons
918@opindex @code{Walign-commons}
ab940b73
RW
919@cindex warnings, alignment of @code{COMMON} blocks
920@cindex alignment of @code{COMMON} blocks
f613cea7 921By default, @command{gfortran} warns about any occasion of variables being
ab940b73 922padded for proper alignment inside a @code{COMMON} block. This warning can be turned
f613cea7
JW
923off via @option{-Wno-align-commons}. See also @option{-falign-commons}.
924
51a30b32
TK
925@item -Wfunction-elimination
926@opindex @code{Wfunction-elimination}
927@cindex function elimination
928@cindex warnings, function elimination
929Warn if any calls to functions are eliminated by the optimizations
930enabled by the @option{-ffrontend-optimize} option.
931
f1fb11f1
TB
932@item -Wrealloc-lhs
933@opindex @code{Wrealloc-lhs}
934@cindex Reallocate the LHS in assignments, notification
935Warn when the compiler might insert code to for allocation or reallocation of
936an allocatable array variable of intrinsic type in intrinsic assignments. In
937hot loops, the Fortran 2003 reallocation feature may reduce the performance.
938If the array is already allocated with the correct shape, consider using a
939whole-array array-spec (e.g. @code{(:,:,:)}) for the variable on the left-hand
940side to prevent the reallocation check. Note that in some cases the warning
941is shown, even if the compiler will optimize reallocation checks away. For
942instance, when the right-hand side contains the same variable multiplied by
943a scalar. See also @option{-frealloc-lhs}.
944
945@item -Wrealloc-lhs-all
946@opindex @code{Wrealloc-lhs-all}
947Warn when the compiler inserts code to for allocation or reallocation of an
948allocatable variable; this includes scalars and derived types.
51a30b32 949
cf21551e
TK
950@item -Wcompare-reals
951@opindex @code{Wcompare-reals}
952Warn when comparing real or complex types for equality or inequality.
72ac1c07 953This option is implied by @option{-Wextra}.
cf21551e 954
f657024b
TB
955@item -Wtarget-lifetime
956@opindex @code{Wtargt-lifetime}
957Warn if the pointer in a pointer assignment might be longer than the its
958target. This option is implied by @option{-Wall}.
959
0e533e50
TK
960@item -Wzerotrip
961@opindex @code{Wzerotrip}
962Warn if a @code{DO} loop is known to execute zero times at compile
963time. This option is implied by @option{-Wall}.
964
6de9cd9a 965@item -Werror
32864778
DF
966@opindex @code{Werror}
967@cindex warnings, to errors
6de9cd9a 968Turns all warnings into errors.
6de9cd9a
DN
969@end table
970
4f7d9db8 971@xref{Warning Options,,Options to Request or Suppress Errors and
592600ce
BM
972Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
973more options offered by the GBE shared by @command{gfortran}, @command{gcc}
974and other GNU compilers.
6de9cd9a
DN
975
976Some of these have no effect when compiling programs written in Fortran.
977
978@node Debugging Options
a2bef74c 979@section Options for debugging your program or GNU Fortran
6de9cd9a
DN
980@cindex options, debugging
981@cindex debugging information options
982
983GNU Fortran has various special options that are used for debugging
7fc15ba5 984either your program or the GNU Fortran compiler.
6de9cd9a
DN
985
986@table @gcctabopt
1607a827
TK
987@item -fdump-fortran-original
988@opindex @code{fdump-fortran-original}
989Output the internal parse tree after translating the source program
990into internal representation. Only really useful for debugging the
991GNU Fortran compiler itself.
992
85dabaed 993@item -fdump-fortran-optimized
1607a827
TK
994@opindex @code{fdump-fortran-optimized}
995Output the parse tree after front-end optimization. Only really
996useful for debugging the GNU Fortran compiler itself.
997
85dabaed 998@item -fdump-parse-tree
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 1267
87681fb5
FXC
1268For example, with @option{-funderscoring}, and assuming that @code{j()} and
1269@code{max_count()} are external functions while @code{my_var} and
1270@code{lvar} are local variables, a statement like
6de9cd9a
DN
1271@smallexample
1272I = J() + MAX_COUNT (MY_VAR, LVAR)
1273@end smallexample
6de9cd9a
DN
1274@noindent
1275is implemented as something akin to:
6de9cd9a
DN
1276@smallexample
1277i = j_() + max_count__(&my_var__, &lvar);
1278@end smallexample
1279
1280With @option{-fno-underscoring}, the same statement is implemented as:
1281
1282@smallexample
1283i = j() + max_count(&my_var, &lvar);
1284@end smallexample
1285
1286Use of @option{-fno-underscoring} allows direct specification of
7fc15ba5 1287user-defined names while debugging and when interfacing GNU Fortran
6de9cd9a
DN
1288code with other languages.
1289
1290Note that just because the names match does @emph{not} mean that the
7fc15ba5 1291interface implemented by GNU Fortran for an external name matches the
6de9cd9a 1292interface implemented by some other language for that same name.
7fc15ba5 1293That is, getting code produced by GNU Fortran to link to code produced
6de9cd9a
DN
1294by some other compiler using this or any other method can be only a
1295small part of the overall solution---getting the code generated by
1296both compilers to agree on issues other than naming can require
1297significant effort, and, unlike naming disagreements, linkers normally
1298cannot detect disagreements in these other areas.
1299
1300Also, note that with @option{-fno-underscoring}, the lack of appended
1301underscores introduces the very real possibility that a user-defined
1302external name will conflict with a name in a system library, which
1303could make finding unresolved-reference bugs quite difficult in some
1304cases---they might occur at program run time, and show up only as
1305buggy behavior at run time.
1306
7fc15ba5 1307In future versions of GNU Fortran we hope to improve naming and linking
6de9cd9a
DN
1308issues so that debugging always involves using the names as they appear
1309in the source, even if the names as seen by the linker are mangled to
1310prevent accidental linking between procedures with incompatible
1311interfaces.
1312
973ff4c0 1313@item -fsecond-underscore
32864778 1314@opindex @code{fsecond-underscore}
6de9cd9a
DN
1315@cindex underscore
1316@cindex symbol names, underscores
1317@cindex transforming symbol names
1318@cindex symbol names, transforming
973ff4c0
TS
1319@cindex @command{f2c} calling convention
1320@cindex @command{g77} calling convention
1321@cindex libf2c calling convention
7fc15ba5
BM
1322By default, GNU Fortran appends an underscore to external
1323names. If this option is used GNU Fortran appends two
973ff4c0 1324underscores to names with underscores and one underscore to external names
7fc15ba5 1325with no underscores. GNU Fortran also appends two underscores to
973ff4c0
TS
1326internal names with underscores to avoid naming collisions with external
1327names.
6de9cd9a
DN
1328
1329This option has no effect if @option{-fno-underscoring} is
973ff4c0 1330in effect. It is implied by the @option{-ff2c} option.
6de9cd9a 1331
40746dcc 1332Otherwise, with this option, an external name such as @code{MAX_COUNT}
6de9cd9a 1333is implemented as a reference to the link-time external symbol
40746dcc 1334@code{max_count__}, instead of @code{max_count_}. This is required
973ff4c0
TS
1335for compatibility with @command{g77} and @command{f2c}, and is implied
1336by use of the @option{-ff2c} option.
6de9cd9a 1337
f4d1d50a
TB
1338@item -fcoarray=@var{<keyword>}
1339@opindex @code{fcoarray}
1340@cindex coarrays
1341
1342@table @asis
1343@item @samp{none}
1344Disable coarray support; using coarray declarations and image-control
1345statements will produce a compile-time error. (Default)
1346
1347@item @samp{single}
1348Single-image mode, i.e. @code{num_images()} is always one.
60386f50
TB
1349
1350@item @samp{lib}
1351Library-based coarray parallelization; a suitable GNU Fortran coarray
1352library needs to be linked.
f4d1d50a
TB
1353@end table
1354
1355
d3d3011f
FXC
1356@item -fcheck=@var{<keyword>}
1357@opindex @code{fcheck}
e739dfac 1358@cindex array, bounds checking
6de9cd9a 1359@cindex bounds checking
20460eb9 1360@cindex pointer checking
22bdbb0f 1361@cindex memory checking
6de9cd9a 1362@cindex range checking
6de9cd9a
DN
1363@cindex subscript checking
1364@cindex checking subscripts
d3d3011f
FXC
1365@cindex run-time checking
1366@cindex checking array temporaries
1367
1368Enable the generation of run-time checks; the argument shall be
1369a comma-delimited list of the following keywords.
1370
1371@table @asis
1372@item @samp{all}
1373Enable all run-time test of @option{-fcheck}.
1374
1375@item @samp{array-temps}
1376Warns at run time when for passing an actual argument a temporary array
1377had to be generated. The information generated by this warning is
1378sometimes useful in optimization, in order to avoid such temporaries.
1379
1380Note: The warning is only printed once per location.
1381
1382@item @samp{bounds}
6de9cd9a
DN
1383Enable generation of run-time checks for array subscripts
1384and against the declared minimum and maximum values. It also
1385checks array indices for assumed and deferred
aad9c4f4
AM
1386shape arrays against the actual allocated bounds and ensures that all string
1387lengths are equal for character array constructors without an explicit
1388typespec.
6de9cd9a 1389
d3d3011f 1390Some checks require that @option{-fcheck=bounds} is set for
8307c61b 1391the compilation of the main program.
18fe404f 1392
aad9c4f4
AM
1393Note: In the future this may also include other forms of checking, e.g.,
1394checking substring references.
43998ed9 1395
33abc845
TB
1396@item @samp{do}
1397Enable generation of run-time checks for invalid modification of loop
1398iteration variables.
1399
22bdbb0f
TB
1400@item @samp{mem}
1401Enable generation of run-time checks for memory allocation.
1402Note: This option does not affect explicit allocations using the
1403@code{ALLOCATE} statement, which will be always checked.
1404
20460eb9
TB
1405@item @samp{pointer}
1406Enable generation of run-time checks for pointers and allocatables.
1407
43998ed9
TB
1408@item @samp{recursion}
1409Enable generation of run-time checks for recursively called subroutines and
1410functions which are not marked as recursive. See also @option{-frecursive}.
8b5f6dd8 1411Note: This check does not work for OpenMP programs and is disabled if used
5b130807 1412together with @option{-frecursive} and @option{-fopenmp}.
d3d3011f 1413@end table
6de9cd9a 1414
0d52899f 1415
d3d3011f
FXC
1416@item -fbounds-check
1417@opindex @code{fbounds-check}
1418@c Note: This option is also referred in gcc's manpage
1419Deprecated alias for @option{-fcheck=bounds}.
0d52899f 1420
d3d3011f
FXC
1421@item -fcheck-array-temporaries
1422@opindex @code{fcheck-array-temporaries}
1423Deprecated alias for @option{-fcheck=array-temps}.
0d52899f 1424
63346ddb
SK
1425@item -fmax-array-constructor=@var{n}
1426@opindex @code{fmax-array-constructor}
1427This option can be used to increase the upper limit permitted in
1428array constructors. The code below requires this option to expand
1429the array at compile time.
1430
1431@smallexample
ab940b73
RW
1432program test
1433implicit none
1434integer j
1435integer, parameter :: n = 100000
1436integer, parameter :: i(n) = (/ (2*j, j = 1, n) /)
1437print '(10(I0,1X))', i
1438end program test
63346ddb
SK
1439@end smallexample
1440
1441@emph{Caution: This option can lead to long compile times and excessively
1442large object files.}
1443
1444The default value for @var{n} is 65535.
1445
1446
6de9cd9a 1447@item -fmax-stack-var-size=@var{n}
32864778 1448@opindex @code{fmax-stack-var-size}
6de9cd9a 1449This option specifies the size in bytes of the largest array that will be put
1e7de83b
AL
1450on the stack; if the size is exceeded static memory is used (except in
1451procedures marked as RECURSIVE). Use the option @option{-frecursive} to
1452allow for recursive procedures which do not have a RECURSIVE attribute or
1453for parallel programs. Use @option{-fno-automatic} to never use the stack.
6de9cd9a
DN
1454
1455This option currently only affects local arrays declared with constant
1456bounds, and may not apply to all character variables.
7fc15ba5 1457Future versions of GNU Fortran may improve this behavior.
6de9cd9a
DN
1458
1459The default value for @var{n} is 32768.
1460
c76f8d52
MM
1461@item -fstack-arrays
1462@opindex @code{fstack-arrays}
8578f640 1463Adding this option will make the Fortran compiler put all local arrays,
c76f8d52 1464even those of unknown size onto stack memory. If your program uses very
c5a0818e 1465large local arrays it is possible that you will have to extend your runtime
2d8c9ad5
TB
1466limits for stack memory on some operating systems. This flag is enabled
1467by default at optimization level @option{-Ofast}.
1468
c76f8d52 1469
5139e1e9 1470@item -fpack-derived
32864778
DF
1471@opindex @code{fpack-derived}
1472@cindex structure packing
7fc15ba5 1473This option tells GNU Fortran to pack derived type members as closely as
2d8b59df 1474possible. Code compiled with this option is likely to be incompatible
6de9cd9a
DN
1475with code compiled without this option, and may execute slower.
1476
6de9cd9a 1477@item -frepack-arrays
32864778
DF
1478@opindex @code{frepack-arrays}
1479@cindex repacking arrays
7fc15ba5 1480In some circumstances GNU Fortran may pass assumed shape array
02712c16 1481sections via a descriptor describing a noncontiguous area of memory.
6de9cd9a
DN
1482This option adds code to the function prologue to repack the data into
1483a contiguous block at runtime.
1484
1485This should result in faster accesses to the array. However it can introduce
1486significant overhead to the function call, especially when the passed data
02712c16 1487is noncontiguous.
a63dad5b 1488
a63dad5b 1489@item -fshort-enums
32864778 1490@opindex @code{fshort-enums}
a63dad5b 1491This option is provided for interoperability with C code that was
4ba96c02 1492compiled with the @option{-fshort-enums} option. It will make
7fc15ba5 1493GNU Fortran choose the smallest @code{INTEGER} kind a given
a63dad5b 1494enumerator set will fit in, and give all its enumerators this kind.
5a0aad31 1495
5a0aad31 1496@item -fexternal-blas
32864778 1497@opindex @code{fexternal-blas}
a2bef74c
DF
1498This option will make @command{gfortran} generate calls to BLAS functions
1499for some matrix operations like @code{MATMUL}, instead of using our own
5a0aad31 1500algorithms, if the size of the matrices involved is larger than a given
4ba96c02 1501limit (see @option{-fblas-matmul-limit}). This may be profitable if an
5a0aad31
FXC
1502optimized vendor BLAS library is available. The BLAS library will have
1503to be specified at link time.
1504
5a0aad31 1505@item -fblas-matmul-limit=@var{n}
32864778 1506@opindex @code{fblas-matmul-limit}
4ba96c02 1507Only significant when @option{-fexternal-blas} is in effect.
5a0aad31
FXC
1508Matrix multiplication of matrices with size larger than (or equal to) @var{n}
1509will be performed by calls to BLAS functions, while others will be
1510handled by @command{gfortran} internal algorithms. If the matrices
1511involved are not square, the size comparison is performed using the
1512geometric mean of the dimensions of the argument and result matrices.
1513
1514The default value for @var{n} is 30.
1515
1e7de83b
AL
1516@item -frecursive
1517@opindex @code{frecursive}
1518Allow indirect recursion by forcing all local arrays to be allocated
1519on the stack. This flag cannot be used together with
1520@option{-fmax-stack-var-size=} or @option{-fno-automatic}.
1521
51b09ce3 1522@item -finit-local-zero
4d04d67a
RW
1523@itemx -finit-integer=@var{n}
1524@itemx -finit-real=@var{<zero|inf|-inf|nan|snan>}
1525@itemx -finit-logical=@var{<true|false>}
1526@itemx -finit-character=@var{n}
51b09ce3
AL
1527@opindex @code{finit-local-zero}
1528@opindex @code{finit-integer}
1529@opindex @code{finit-real}
1530@opindex @code{finit-logical}
1531@opindex @code{finit-character}
1532The @option{-finit-local-zero} option instructs the compiler to
1533initialize local @code{INTEGER}, @code{REAL}, and @code{COMPLEX}
1534variables to zero, @code{LOGICAL} variables to false, and
1535@code{CHARACTER} variables to a string of null bytes. Finer-grained
1536initialization options are provided by the
1537@option{-finit-integer=@var{n}},
346a77d1 1538@option{-finit-real=@var{<zero|inf|-inf|nan|snan>}} (which also initializes
51b09ce3
AL
1539the real and imaginary parts of local @code{COMPLEX} variables),
1540@option{-finit-logical=@var{<true|false>}}, and
1541@option{-finit-character=@var{n}} (where @var{n} is an ASCII character
d6202322
TM
1542value) options. These options do not initialize
1543@itemize @bullet
1544@item
d6202322
TM
1545allocatable arrays
1546@item
1547components of derived type variables
1548@item
1549variables that appear in an @code{EQUIVALENCE} statement.
1550@end itemize
1551(These limitations may be removed in future releases).
51b09ce3
AL
1552
1553Note that the @option{-finit-real=nan} option initializes @code{REAL}
346a77d1
TB
1554and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN
1555use @option{-finit-real=snan}; note, however, that compile-time
1556optimizations may convert them into quiet NaN and that trapping
1557needs to be enabled (e.g. via @option{-ffpe-trap}).
f613cea7 1558
29525822
FXC
1559Finally, note that enabling any of the @option{-finit-*} options will
1560silence warnings that would have been emitted by @option{-Wuninitialized}
1561for the affected local variables.
1562
f613cea7
JW
1563@item -falign-commons
1564@opindex @code{falign-commons}
ab940b73 1565@cindex alignment of @code{COMMON} blocks
f613cea7 1566By default, @command{gfortran} enforces proper alignment of all variables in a
ab940b73
RW
1567@code{COMMON} block by padding them as needed. On certain platforms this is mandatory,
1568on others it increases performance. If a @code{COMMON} block is not declared with
f613cea7 1569consistent data types everywhere, this padding can cause trouble, and
ab940b73
RW
1570@option{-fno-align-commons} can be used to disable automatic alignment. The
1571same form of this option should be used for all files that share a @code{COMMON} block.
1572To avoid potential alignment issues in @code{COMMON} blocks, it is recommended to order
4d04d67a 1573objects from largest to smallest.
72bd130e
TB
1574
1575@item -fno-protect-parens
1576@opindex @code{fno-protect-parens}
4d04d67a 1577@cindex re-association of parenthesized expressions
72bd130e
TB
1578By default the parentheses in expression are honored for all optimization
1579levels such that the compiler does not do any re-association. Using
ab940b73
RW
1580@option{-fno-protect-parens} allows the compiler to reorder @code{REAL} and
1581@code{COMPLEX} expressions to produce faster code. Note that for the re-association
72bd130e 1582optimization @option{-fno-signed-zeros} and @option{-fno-trapping-math}
7a994646
TB
1583need to be in effect. The parentheses protection is enabled by default, unless
1584@option{-Ofast} is given.
597553ab
PT
1585
1586@item -frealloc-lhs
1587@opindex @code{frealloc-lhs}
1588@cindex Reallocate the LHS in assignments
1589An allocatable left-hand side of an intrinsic assignment is automatically
1590(re)allocated if it is either unallocated or has a different shape. The
f1fb11f1
TB
1591option is enabled by default except when @option{-std=f95} is given. See
1592also @option{-Wrealloc-lhs}.
2757d5ec
TK
1593
1594@item -faggressive-function-elimination
1595@opindex @code{faggressive-function-elimination}
1596@cindex Elimination of functions with identical argument lists
1597Functions with identical argument lists are eliminated within
1598statements, regardless of whether these functions are marked
1599@code{PURE} or not. For example, in
1600@smallexample
1601 a = f(b,c) + f(b,c)
1602@end smallexample
51a30b32
TK
1603there will only be a single call to @code{f}. This option only works
1604if @option{-ffrontend-optimize} is in effect.
1605
1606@item -ffrontend-optimize
1607@opindex @code{frontend-optimize}
1608@cindex Front-end optimization
1609This option performs front-end optimization, based on manipulating
1610parts the Fortran parse tree. Enabled by default by any @option{-O}
1611option. Optimizations enabled by this option include elimination of
1612identical function calls within expressions, removing unnecessary
1613calls to @code{TRIM} in comparisons and assignments and replacing
1614@code{TRIM(a)} with @code{a(1:LEN_TRIM(a))}.
1615It can be deselected by specifying @option{-fno-frontend-optimize}.
6de9cd9a
DN
1616@end table
1617
1618@xref{Code Gen Options,,Options for Code Generation Conventions,
1619gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1620offered by the GBE
7fc15ba5 1621shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
6de9cd9a 1622
6de9cd9a
DN
1623@c man end
1624
1625@node Environment Variables
a2bef74c 1626@section Environment variables affecting @command{gfortran}
e739dfac 1627@cindex environment variable
6de9cd9a
DN
1628
1629@c man begin ENVIRONMENT
1630
7fc15ba5 1631The @command{gfortran} compiler currently does not make use of any environment
6de9cd9a
DN
1632variables to control its operation above and beyond those
1633that affect the operation of @command{gcc}.
1634
1635@xref{Environment Variables,,Environment Variables Affecting GCC,
1636gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
1637variables.
1638
eaa90d25 1639@xref{Runtime}, for environment variables that affect the
7fc15ba5 1640run-time behavior of programs compiled with GNU Fortran.
6de9cd9a 1641@c man end
This page took 3.196991 seconds and 5 git commands to generate.