]> gcc.gnu.org Git - gcc.git/blame - gcc/fortran/invoke.texi
[multiple changes]
[gcc.git] / gcc / fortran / invoke.texi
CommitLineData
d3d3011f 1@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
6de9cd9a 2@c Free Software Foundation, Inc.
7fc15ba5 3@c This is part of the GNU Fortran manual.
6de9cd9a
DN
4@c For copying conditions, see the file gfortran.texi.
5
6@ignore
7@c man begin COPYRIGHT
33abc845 8Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009
6de9cd9a
DN
9Free Software Foundation, Inc.
10
11Permission is granted to copy, distribute and/or modify this document
12under the terms of the GNU Free Documentation License, Version 1.2 or
13any later version published by the Free Software Foundation; with the
70b1e376
RW
14Invariant Sections being ``Funding Free Software'', the Front-Cover
15Texts being (a) (see below), and with the Back-Cover Texts being (b)
16(see below). A copy of the license is included in the gfdl(7) man page.
6ccde948 17
6de9cd9a
DN
18(a) The FSF's Front-Cover Text is:
19
20 A GNU Manual
21
22(b) The FSF's Back-Cover Text is:
23
24 You have freedom to copy and modify this GNU Manual, like GNU
25 software. Copies published by the Free Software Foundation raise
26 funds for GNU development.
27@c man end
28@c Set file name and title for the man page.
29@setfilename gfortran
7fc15ba5 30@settitle GNU Fortran compiler.
6de9cd9a
DN
31@c man begin SYNOPSIS
32gfortran [@option{-c}|@option{-S}|@option{-E}]
33 [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
34 [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
35 [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
36 [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
37 [@option{-f}@var{option}@dots{}]
6ccde948 38 [@option{-m}@var{machine-option}@dots{}]
6de9cd9a
DN
39 [@option{-o} @var{outfile}] @var{infile}@dots{}
40
41Only the most useful options are listed here; see below for the
42remainder.
43@c man end
44@c man begin SEEALSO
45gpl(7), gfdl(7), fsf-funding(7),
46cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
47and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
48@file{ld}, @file{binutils} and @file{gdb}.
49@c man end
50@c man begin BUGS
51For instructions on reporting bugs, see
2f41c1d6 52@w{@value{BUGURL}}.
6de9cd9a
DN
53@c man end
54@c man begin AUTHOR
55See the Info entry for @command{gfortran} for contributors to GCC and
7fc15ba5 56GNU Fortran.
6de9cd9a
DN
57@c man end
58@end ignore
59
7fc15ba5
BM
60@node Invoking GNU Fortran
61@chapter GNU Fortran Command Options
62@cindex GNU Fortran command options
6de9cd9a 63@cindex command options
7fc15ba5 64@cindex options, @command{gfortran} command
6de9cd9a
DN
65
66@c man begin DESCRIPTION
67
68The @command{gfortran} command supports all the options supported by the
7fc15ba5 69@command{gcc} command. Only options specific to GNU Fortran are documented here.
6de9cd9a
DN
70
71@xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
72Collection (GCC)}, for information
73on the non-Fortran-specific aspects of the @command{gcc} command (and,
74therefore, the @command{gfortran} command).
75
76@cindex options, negative forms
7fc15ba5 77All GCC and GNU Fortran options
6de9cd9a
DN
78are accepted both by @command{gfortran} and by @command{gcc}
79(as well as any other drivers built at the same time,
80such as @command{g++}),
7fc15ba5
BM
81since adding GNU Fortran to the GCC distribution
82enables acceptance of GNU Fortran options
6de9cd9a
DN
83by all of the relevant drivers.
84
85In some cases, options have positive and negative forms;
86the negative form of @option{-ffoo} would be @option{-fno-foo}.
87This manual documents only one of these two forms, whichever
88one is not the default.
89@c man end
90
91@menu
92* Option Summary:: Brief list of all @command{gfortran} options,
93 without explanations.
94* Fortran Dialect Options:: Controlling the variant of Fortran language
95 compiled.
670637ee 96* Preprocessing Options:: Enable and customize preprocessing.
592600ce 97* Error and Warning Options:: How picky should the compiler be?
6de9cd9a
DN
98* Debugging Options:: Symbol tables, measurements, and debugging dumps.
99* Directory Options:: Where to find module files
70263321 100* Link Options :: Influencing the linking step
eaa90d25 101* Runtime Options:: Influencing runtime behavior
6de9cd9a
DN
102* Code Gen Options:: Specifying conventions for function calls, data layout
103 and register usage.
a2bef74c 104* Environment Variables:: Environment variables that affect @command{gfortran}.
6de9cd9a
DN
105@end menu
106
107@node Option Summary
a2bef74c 108@section Option summary
6de9cd9a
DN
109
110@c man begin OPTIONS
111
112Here is a summary of all the options specific to GNU Fortran, grouped
113by type. Explanations are in the following sections.
114
115@table @emph
116@item Fortran Language Options
a2bef74c 117@xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
592600ce 118@gccoptlist{-fall-intrinsics -ffree-form -fno-fixed-form @gol
6de9cd9a 119-fdollar-ok -fimplicit-none -fmax-identifier-length @gol
592600ce 120-std=@var{std} -fd-lines-as-code -fd-lines-as-comments @gol
6de9cd9a 121-ffixed-line-length-@var{n} -ffixed-line-length-none @gol
16ab8e74 122-ffree-line-length-@var{n} -ffree-line-length-none @gol
83d890b9 123-fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 @gol
4e6bf178 124-fcray-pointer -fopenmp -fno-range-check -fbackslash -fmodule-private}
6de9cd9a 125
670637ee
DF
126@item Preprocessing Options
127@xref{Preprocessing Options,,Enable and customize preprocessing}.
128@gccoptlist{-cpp -dD -dI -dM -dN -dU -fworking-directory @gol
129-imultilib @var{dir} -iprefix @var{file} -isysroot @var{dir} @gol
130-iquote -isystem @var{dir} -nocpp -nostdinc -undef @gol
131-A@var{question}=@var{answer} -A-@var{question}@r{[}=@var{answer}@r{]} @gol
132-C -CC -D@var{macro}@r{[}=@var{defn}@r{]} -U@var{macro} -H -P}
133
592600ce 134@item Error and Warning Options
a2bef74c
DF
135@xref{Error and Warning Options,,Options to request or suppress errors
136and warnings}.
592600ce 137@gccoptlist{-fmax-errors=@var{n} @gol
6de9cd9a 138-fsyntax-only -pedantic -pedantic-errors @gol
bdfd2ff0 139-Wall -Waliasing -Wampersand -Warray-bounds -Wcharacter-truncation @gol
c3005b0f 140-Wconversion -Wimplicit-interface -Wline-truncation -Wintrinsics-std @gol
f613cea7
JW
141-Wsurprising -Wno-tabs -Wunderflow -Wunused-parameter -Wintrinsics-shadow @gol
142-Wno-align-commons}
6de9cd9a
DN
143
144@item Debugging Options
a2bef74c 145@xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
868d75db
FXC
146@gccoptlist{-fdump-parse-tree -ffpe-trap=@var{list} @gol
147-fdump-core -fbacktrace}
6de9cd9a
DN
148
149@item Directory Options
a2bef74c 150@xref{Directory Options,,Options for directory search}.
63346ddb
SK
151@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} @gol
152-fintrinsic-modules-path @var{dir}}
6de9cd9a 153
70263321
DF
154@item Link Options
155@xref{Link Options,,Options for influencing the linking step}.
156@gccoptlist{-static-libgfortran}
157
eaa90d25
TK
158@item Runtime Options
159@xref{Runtime Options,,Options for influencing runtime behavior}.
082b0571
JD
160@gccoptlist{-fconvert=@var{conversion} -fno-range-check
161-frecord-marker=@var{length} @gol -fmax-subrecord-length=@var{length}
162-fsign-zero}
eaa90d25 163
6de9cd9a 164@item Code Generation Options
a2bef74c 165@xref{Code Gen Options,,Options for code generation conventions}.
63346ddb 166@gccoptlist{-fno-automatic -ff2c -fno-underscoring @gol
71a7778c 167-fwhole-file -fsecond-underscore @gol
63346ddb 168-fbounds-check -fcheck-array-temporaries -fmax-array-constructor =@var{n} @gol
d3d3011f 169-fcheck=@var{<all|bounds|array-temps>}
63346ddb 170-fmax-stack-var-size=@var{n} @gol
592600ce 171-fpack-derived -frepack-arrays -fshort-enums -fexternal-blas @gol
51b09ce3 172-fblas-matmul-limit=@var{n} -frecursive -finit-local-zero @gol
346a77d1 173-finit-integer=@var{n} -finit-real=@var{<zero|inf|-inf|nan|snan>} @gol
f613cea7 174-finit-logical=@var{<true|false>} -finit-character=@var{n} -fno-align-commons}
6de9cd9a
DN
175@end table
176
6de9cd9a
DN
177@menu
178* Fortran Dialect Options:: Controlling the variant of Fortran language
179 compiled.
670637ee 180* Preprocessing Options:: Enable and customize preprocessing.
592600ce 181* Error and Warning Options:: How picky should the compiler be?
6de9cd9a
DN
182* Debugging Options:: Symbol tables, measurements, and debugging dumps.
183* Directory Options:: Where to find module files
70263321 184* Link Options :: Influencing the linking step
eaa90d25 185* Runtime Options:: Influencing runtime behavior
6de9cd9a
DN
186* Code Gen Options:: Specifying conventions for function calls, data layout
187 and register usage.
188@end menu
189
190@node Fortran Dialect Options
a2bef74c 191@section Options controlling Fortran dialect
6de9cd9a
DN
192@cindex dialect options
193@cindex language, dialect options
194@cindex options, dialect
195
3397327c
BM
196The following options control the details of the Fortran dialect
197accepted by the compiler:
6de9cd9a
DN
198
199@table @gcctabopt
4ba96c02
BM
200@item -ffree-form
201@item -ffixed-form
32864778
DF
202@opindex @code{ffree-form}
203@opindex @code{fno-fixed-form}
204@cindex options, fortran dialect
e739dfac
DF
205@cindex file format, free
206@cindex file format, fixed
49de9e73 207Specify the layout used by the source file. The free form layout
6de9cd9a 208was introduced in Fortran 90. Fixed form was traditionally used in
3397327c
BM
209older Fortran programs. When neither option is specified, the source
210form is determined by the file extension.
6de9cd9a 211
a23eec13 212@item -fall-intrinsics
32864778 213@opindex @code{fall-intrinsics}
aad9c4f4
AM
214This option causes all intrinsic procedures (including the GNU-specific
215extensions) to be accepted. This can be useful with @option{-std=f95} to
216force standard-compliance but get access to the full range of intrinsics
217available with @command{gfortran}. As a consequence, @option{-Wintrinsics-std}
218will be ignored and no user-defined procedure with the same name as any
219intrinsic will be called except when it is explicitly declared @code{EXTERNAL}.
a23eec13 220
e0bcf78c 221@item -fd-lines-as-code
259b41c1 222@item -fd-lines-as-comments
32864778
DF
223@opindex @code{fd-lines-as-code}
224@opindex @code{fd-lines-as-comments}
4ba96c02 225Enable special treatment for lines beginning with @code{d} or @code{D}
3397327c
BM
226in fixed form sources. If the @option{-fd-lines-as-code} option is
227given they are treated as if the first column contained a blank. If the
e0bcf78c
TS
228@option{-fd-lines-as-comments} option is given, they are treated as
229comment lines.
230
3ae9eb27 231@item -fdefault-double-8
32864778 232@opindex @code{fdefault-double-8}
aad9c4f4
AM
233Set the @code{DOUBLE PRECISION} type to an 8 byte wide type. If
234@option{-fdefault-real-8} is given, @code{DOUBLE PRECISION} would
235instead be promoted to 16 bytes if possible, and @option{-fdefault-double-8}
236can be used to prevent this. The kind of real constants like @code{1.d0} will
237not be changed by @option{-fdefault-real-8} though, so also
238@option{-fdefault-double-8} does not affect it.
3ae9eb27 239
3ae9eb27 240@item -fdefault-integer-8
32864778 241@opindex @code{fdefault-integer-8}
3ae9eb27 242Set the default integer and logical types to an 8 byte wide type.
aad9c4f4
AM
243Do nothing if this is already the default. This option also affects
244the kind of integer constants like @code{42}.
3ae9eb27 245
3ae9eb27 246@item -fdefault-real-8
32864778 247@opindex @code{fdefault-real-8}
3ae9eb27 248Set the default real type to an 8 byte wide type.
aad9c4f4
AM
249Do nothing if this is already the default. This option also affects
250the kind of non-double real constants like @code{1.0}, and does promote
251the default width of @code{DOUBLE PRECISION} to 16 bytes if possible, unless
252@code{-fdefault-double-8} is given, too.
3ae9eb27 253
6de9cd9a 254@item -fdollar-ok
32864778 255@opindex @code{fdollar-ok}
e739dfac 256@cindex $
6de9cd9a
DN
257@cindex symbol names
258@cindex character set
f4a55802
DF
259Allow @samp{$} as a valid non-first character in a symbol name. Symbols
260that start with @samp{$} are rejected since it is unclear which rules to
261apply to implicit typing as different vedors implement different rules.
6de9cd9a 262
4e6bf178
TB
263@item -fbackslash
264@opindex @code{backslash}
131c66cd
FXC
265@cindex backslash
266@cindex escape characters
8fc541d3
FXC
267Change the interpretation of backslashes in string literals from a single
268backslash character to ``C-style'' escape characters. The following
269combinations are expanded @code{\a}, @code{\b}, @code{\f}, @code{\n},
270@code{\r}, @code{\t}, @code{\v}, @code{\\}, and @code{\0} to the ASCII
271characters alert, backspace, form feed, newline, carriage return,
272horizontal tab, vertical tab, backslash, and NUL, respectively.
273Additionally, @code{\x}@var{nn}, @code{\u}@var{nnnn} and
274@code{\U}@var{nnnnnnnn} (where each @var{n} is a hexadecimal digit) are
275translated into the Unicode characters corresponding to the specified code
276points. All other combinations of a character preceded by \ are
277unexpanded.
131c66cd 278
654b6073
FXC
279@item -fmodule-private
280@opindex @code{fmodule-private}
281@cindex module entities
282@cindex private
283Set the default accessibility of module entities to @code{PRIVATE}.
284Use-associated entities will not be accessible unless they are explicitly
285declared as @code{PUBLIC}.
286
6de9cd9a 287@item -ffixed-line-length-@var{n}
32864778 288@opindex @code{ffixed-line-length-}@var{n}
e739dfac 289@cindex file format, fixed
6de9cd9a
DN
290Set column after which characters are ignored in typical fixed-form
291lines in the source file, and through which spaces are assumed (as
292if padded to that length) after the ends of short fixed-form lines.
293
6de9cd9a 294Popular values for @var{n} include 72 (the
3397327c 295standard and the default), 80 (card image), and 132 (corresponding
6de9cd9a 296to ``extended-source'' options in some popular compilers).
3397327c 297@var{n} may also be @samp{none}, meaning that the entire line is meaningful
6de9cd9a
DN
298and that continued character constants never have implicit spaces appended
299to them to fill out the line.
300@option{-ffixed-line-length-0} means the same thing as
301@option{-ffixed-line-length-none}.
302
16ab8e74 303@item -ffree-line-length-@var{n}
32864778 304@opindex @code{ffree-line-length-}@var{n}
e739dfac 305@cindex file format, free
16ab8e74 306Set column after which characters are ignored in typical free-form
3397327c 307lines in the source file. The default value is 132.
16ab8e74
BF
308@var{n} may be @samp{none}, meaning that the entire line is meaningful.
309@option{-ffree-line-length-0} means the same thing as
310@option{-ffree-line-length-none}.
311
6de9cd9a 312@item -fmax-identifier-length=@var{n}
32864778 313@opindex @code{fmax-identifier-length=}@var{n}
6de9cd9a 314Specify the maximum allowed identifier length. Typical values are
f489fba1 31531 (Fortran 95) and 63 (Fortran 2003 and Fortran 2008).
6de9cd9a 316
6de9cd9a 317@item -fimplicit-none
32864778 318@opindex @code{fimplicit-none}
6de9cd9a 319Specify that no implicit typing is allowed, unless overridden by explicit
40746dcc
BM
320@code{IMPLICIT} statements. This is the equivalent of adding
321@code{implicit none} to the start of every procedure.
6de9cd9a 322
83d890b9 323@item -fcray-pointer
32864778 324@opindex @code{fcray-pointer}
3397327c
BM
325Enable the Cray pointer extension, which provides C-like pointer
326functionality.
83d890b9 327
6c7a4dfd 328@item -fopenmp
32864778 329@opindex @code{fopenmp}
4e8b3590 330@cindex OpenMP
3397327c
BM
331Enable the OpenMP extensions. This includes OpenMP @code{!$omp} directives
332in free form
6c7a4dfd 333and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
3397327c
BM
334@code{!$} conditional compilation sentinels in free form
335and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form,
6c7a4dfd 336and when linking arranges for the OpenMP runtime library to be linked
1e7de83b 337in. The option @option{-fopenmp} implies @option{-frecursive}.
6c7a4dfd 338
200c5036 339@item -fno-range-check
32864778 340@opindex @code{frange-check}
200c5036 341Disable range checking on results of simplification of constant
a84b9ee8
SK
342expressions during compilation. For example, GNU Fortran will give
343an error at compile time when simplifying @code{a = 1. / 0}.
344With this option, no error will be given and @code{a} will be assigned
345the value @code{+Infinity}. If an expression evaluates to a value
346outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}],
347then the expression will be replaced by @code{-Inf} or @code{+Inf}
348as appropriate.
40746dcc
BM
349Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
350on most systems, but with @option{-fno-range-check} the value will
351``wrap around'' and @code{i} will be initialized to @math{-1} instead.
54554825 352
6de9cd9a 353@item -std=@var{std}
32864778 354@opindex @code{std=}@var{std} option
276419d0 355Specify the standard to which the program is expected to conform, which
f489fba1
FXC
356may be one of @samp{f95}, @samp{f2003}, @samp{f2008}, @samp{gnu}, or
357@samp{legacy}. The default value for @var{std} is @samp{gnu}, which
358specifies a superset of the Fortran 95 standard that includes all of the
359extensions supported by GNU Fortran, although warnings will be given for
360obsolete extensions not recommended for use in new code. The
361@samp{legacy} value is equivalent but without the warnings for obsolete
362extensions, and may be useful for old non-standard programs. The
363@samp{f95}, @samp{f2003} and @samp{f2008} values specify strict
364conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards,
365respectively; errors are given for all extensions beyond the relevant
366language standard, and warnings are given for the Fortran 77 features
367that are permitted but obsolescent in later standards.
6de9cd9a 368
6de9cd9a
DN
369@end table
370
670637ee
DF
371@node Preprocessing Options
372@section Enable and customize preprocessing
373@cindex preprocessor
374@cindex options, preprocessor
375@cindex CPP
376
377Preprocessor related options. See section
378@ref{Preprocessing and conditional compilation} for more detailed
379information on preprocessing in @command{gfortran}.
380
381@table @gcctabopt
382@item -cpp
383@item -nocpp
384@opindex @code{cpp}
385@opindex @code{fpp}
386@cindex preprocessor, enable
387@cindex preprocessor, disable
388Enable preprocessing. The preprocessor is automatically invoked if
389the file extension is @file{.fpp}, @file{.FPP}, @file{.F}, @file{.FOR},
390@file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
391this option to manually enable preprocessing of any kind of Fortran file.
392
393To disable preprocessing of files with any of the above listed extensions,
394use the negative form: @option{-nocpp}.
395
396The preprocessor is run in traditional mode, be aware that any
397restrictions of the file-format, e.g. fixed-form line width,
398apply for preprocessed output as well.
399
400@item -dM
401@opindex @code{dM}
402@cindex preprocessor, debugging
403@cindex debugging, preprocessor
404Instead of the normal output, generate a list of @code{'#define'}
405directives for all the macros defined during the execution of the
406preprocessor, including predefined macros. This gives you a way
407of finding out what is predefined in your version of the preprocessor.
408Assuming you have no file @file{foo.f90}, the command
409@smallexample
410 touch foo.f90; gfortran -cpp -dM foo.f90
411@end smallexample
412will show all the predefined macros.
413
414@item -dD
415@opindex @code{dD}
416@cindex preprocessor, debugging
417@cindex debugging, preprocessor
418Like @option{-dM} except in two respects: it does not include the
419predefined macros, and it outputs both the @code{#define} directives
420and the result of preprocessing. Both kinds of output go to the
421standard output file.
422
423@item -dN
424@opindex @code{dN}
425@cindex preprocessor, debugging
426@cindex debugging, preprocessor
427Like @option{-dD}, but emit only the macro names, not their expansions.
428
429@item -dU
430@opindex @code{dU}
431@cindex preprocessor, debugging
432@cindex debugging, preprocessor
433Like @option{dD} except that only macros that are expanded, or whose
434definedness is tested in preprocessor directives, are output; the
435output is delayed until the use or test of the macro; and @code{'#undef'}
436directives are also output for macros tested but undefined at the time.
437
438@item -dI
439@opindex @code{dI}
440@cindex preprocessor, debugging
441@cindex debugging, preprocessor
442Output @code{'#include'} directives in addition to the result
443of preprocessing.
444
445@item -fworking-directory
446@opindex @code{fworking-directory}
447@cindex preprocessor, working directory
448Enable generation of linemarkers in the preprocessor output that will
449let the compiler know the current working directory at the time of
450preprocessing. When this option is enabled, the preprocessor will emit,
451after the initial linemarker, a second linemarker with the current
452working directory followed by two slashes. GCC will use this directory,
453when it's present in the preprocessed input, as the directory emitted
454as the current working directory in some debugging information formats.
455This option is implicitly enabled if debugging information is enabled,
456but this can be inhibited with the negated form
457@option{-fno-working-directory}. If the @option{-P} flag is present
458in the command line, this option has no effect, since no @code{#line}
459directives are emitted whatsoever.
460
c3280643
DF
461@item -idirafter @var{dir}
462@opindex @code{idirafter @var{dir}}
463@cindex preprocessing, include path
464Search @var{dir} for include files, but do it after all directories
465specified with @option{-I} and the standard system directories have
466been exhausted. @var{dir} is treated as a system include directory.
467If dir begins with @code{=}, then the @code{=} will be replaced by
468the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
469
670637ee
DF
470@item -imultilib @var{dir}
471@opindex @code{imultilib @var{dir}}
472@cindex preprocessing, include path
473Use @var{dir} as a subdirectory of the directory containing target-specific
474C++ headers.
475
476@item -iprefix @var{prefix}
477@opindex @code{iprefix @var{prefix}}
478@cindex preprocessing, include path
479Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
480options. If the @var{prefix} represents a directory, you should include
481the final @code{'/'}.
482
483@item -isysroot @var{dir}
484@opindex @code{isysroot @var{dir}}
485@cindex preprocessing, include path
486This option is like the @option{--sysroot} option, but applies only to
487header files. See the @option{--sysroot} option for more information.
488
489@item -iquote @var{dir}
490@opindex @code{iquote @var{dir}}
491@cindex preprocessing, include path
492Search @var{dir} only for header files requested with @code{#include "file"};
493they are not searched for @code{#include <file>}, before all directories
494specified by @option{-I} and before the standard system directories. If
495@var{dir} begins with @code{=}, then the @code{=} will be replaced by the
496sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
497
498@item -isystem @var{dir}
499@opindex @code{isystem @var{dir}}
500@cindex preprocessing, include path
501Search @var{dir} for header files, after all directories specified by
502@option{-I} but before the standard system directories. Mark it as a
503system directory, so that it gets the same special treatment as is
504applied to the standard system directories. If @var{dir} begins with
505@code{=}, then the @code{=} will be replaced by the sysroot prefix;
506see @option{--sysroot} and @option{-isysroot}.
507
508@item -nostdinc
509@opindex @code{nostdinc}
510Do not search the standard system directories for header files. Only
511the directories you have specified with @option{-I} options (and the
512directory of the current file, if appropriate) are searched.
513
514@item -undef
515@opindex @code{undef}
516Do not predefine any system-specific or GCC-specific macros.
517The standard predefined macros remain defined.
518
519@item -A@var{predicate}=@var{answer}
520@opindex @code{A@var{predicate}=@var{answer}}
521@cindex preprocessing, assertation
522Make an assertion with the predicate @var{predicate} and answer @var{answer}.
523This form is preferred to the older form -A predicate(answer), which is still
524supported, because it does not use shell special characters.
525
526@item -A-@var{predicate}=@var{answer}
527@opindex @code{A-@var{predicate}=@var{answer}}
528@cindex preprocessing, assertation
529Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
530
531@item -C
532@opindex @code{C}
533@cindex preprocessing, keep comments
534Do not discard comments. All comments are passed through to the output
535file, except for comments in processed directives, which are deleted
536along with the directive.
537
538You should be prepared for side effects when using @option{-C}; it causes
539the preprocessor to treat comments as tokens in their own right. For example,
540comments appearing at the start of what would be a directive line have the
541effect of turning that line into an ordinary source line, since the first
542token on the line is no longer a @code{'#'}.
543
544Warning: this currently handles C-Style comments only. The preprocessor
545does not yet recognize Fortran-style comments.
546
547@item -CC
548@opindex @code{CC}
549@cindex preprocessing, keep comments
550Do not discard comments, including during macro expansion. This is like
551@option{-C}, except that comments contained within macros are also passed
552through to the output file where the macro is expanded.
553
554In addition to the side-effects of the @option{-C} option, the @option{-CC}
555option causes all C++-style comments inside a macro to be converted to C-style
556comments. This is to prevent later use of that macro from inadvertently
557commenting out the remainder of the source line. The @option{-CC} option
558is generally used to support lint comments.
559
560Warning: this currently handles C- and C++-Style comments only. The
561preprocessor does not yet recognize Fortran-style comments.
562
563@item -D@var{name}
564@opindex @code{D@var{name}}
565@cindex preprocessing, define macros
566Predefine name as a macro, with definition @code{1}.
567
568@item -D@var{name}=@var{definition}
569@opindex @code{D@var{name}=@var{definition}}
570@cindex preprocessing, define macros
571The contents of @var{definition} are tokenized and processed as if they
572appeared during translation phase three in a @code{'#define'} directive.
573In particular, the definition will be truncated by embedded newline
574characters.
575
576If you are invoking the preprocessor from a shell or shell-like program
577you may need to use the shell's quoting syntax to protect characters such
578as spaces that have a meaning in the shell syntax.
579
580If you wish to define a function-like macro on the command line, write
581its argument list with surrounding parentheses before the equals sign
582(if any). Parentheses are meaningful to most shells, so you will need
583to quote the option. With sh and csh, @code{-D'name(args...)=definition'}
584works.
585
586@option{-D} and @option{-U} options are processed in the order they are
587given on the command line. All -imacros file and -include file options
588are processed after all -D and -U options.
589
590@item -H
591@opindex @code{H}
592Print the name of each header file used, in addition to other normal
593activities. Each name is indented to show how deep in the @code{'#include'}
594stack it is.
595
596@item -P
597@opindex @code{P}
598@cindex preprocessing, no linemarkers
599Inhibit generation of linemarkers in the output from the preprocessor.
600This might be useful when running the preprocessor on something that
601is not C code, and will be sent to a program which might be confused
602by the linemarkers.
603
604@item -U@var{name}
605@opindex @code{U@var{name}}
606@cindex preprocessing, undefine macros
607Cancel any previous definition of @var{name}, either built in or provided
608with a @option{-D} option.
609@end table
610
611
592600ce 612@node Error and Warning Options
a2bef74c 613@section Options to request or suppress errors and warnings
6de9cd9a 614@cindex options, warnings
592600ce 615@cindex options, errors
6de9cd9a 616@cindex warnings, suppressing
592600ce 617@cindex messages, error
6de9cd9a
DN
618@cindex messages, warning
619@cindex suppressing warnings
620
592600ce
BM
621Errors are diagnostic messages that report that the GNU Fortran compiler
622cannot compile the relevant piece of source code. The compiler will
623continue to process the program in an attempt to report further errors
624to aid in debugging, but will not produce any compiled output.
625
6de9cd9a 626Warnings are diagnostic messages that report constructions which
592600ce 627are not inherently erroneous but which are risky or suggest there is
4ba96c02 628likely to be a bug in the program. Unless @option{-Werror} is specified,
592600ce 629they do not prevent compilation of the program.
6de9cd9a
DN
630
631You can request many specific warnings with options beginning @option{-W},
632for example @option{-Wimplicit} to request warnings on implicit
633declarations. Each of these specific warning options also has a
634negative form beginning @option{-Wno-} to turn off warnings;
635for example, @option{-Wno-implicit}. This manual lists only one of the
636two forms, whichever is not the default.
637
592600ce
BM
638These options control the amount and kinds of errors and warnings produced
639by GNU Fortran:
6de9cd9a
DN
640
641@table @gcctabopt
efb66586
JD
642@item -fmax-errors=@var{n}
643@opindex @code{fmax-errors=}@var{n}
4ba96c02 644@cindex errors, limiting
592600ce
BM
645Limits the maximum number of error messages to @var{n}, at which point
646GNU Fortran bails out rather than attempting to continue processing the
647source code. If @var{n} is 0, there is no limit on the number of error
648messages produced.
649
6de9cd9a 650@item -fsyntax-only
32864778 651@opindex @code{fsyntax-only}
4ba96c02 652@cindex syntax checking
adeb22c4
FXC
653Check the code for syntax errors, but don't actually compile it. This
654will generate module files for each module present in the code, but no
655other output file.
6de9cd9a 656
6de9cd9a 657@item -pedantic
32864778 658@opindex @code{pedantic}
7fc15ba5 659Issue warnings for uses of extensions to Fortran 95.
6de9cd9a
DN
660@option{-pedantic} also applies to C-language constructs where they
661occur in GNU Fortran source files, such as use of @samp{\e} in a
40746dcc 662character constant within a directive like @code{#include}.
6de9cd9a 663
7fc15ba5 664Valid Fortran 95 programs should compile properly with or without
6de9cd9a
DN
665this option.
666However, without this option, certain GNU extensions and traditional
667Fortran features are supported as well.
668With this option, many of them are rejected.
669
670Some users try to use @option{-pedantic} to check programs for conformance.
671They soon find that it does not do quite what they want---it finds some
672nonstandard practices, but not all.
7fc15ba5 673However, improvements to GNU Fortran in this area are welcome.
6de9cd9a 674
f489fba1
FXC
675This should be used in conjunction with @option{-std=f95},
676@option{-std=f2003} or @option{-std=f2008}.
6de9cd9a 677
6de9cd9a 678@item -pedantic-errors
32864778 679@opindex @code{pedantic-errors}
6de9cd9a
DN
680Like @option{-pedantic}, except that errors are produced rather than
681warnings.
682
6de9cd9a 683@item -Wall
32864778 684@opindex @code{Wall}
6de9cd9a
DN
685@cindex all warnings
686@cindex warnings, all
3fbab549
JD
687Enables commonly used warning options pertaining to usage that
688we recommend avoiding and that we believe are easy to avoid.
2e5758e8 689This currently includes @option{-Waliasing},
c3005b0f
DK
690@option{-Wampersand}, @option{-Wsurprising}, @option{-Wintrinsics-std},
691@option{-Wno-tabs}, @option{-Wintrinsic-shadow} and @option{-Wline-truncation}.
6de9cd9a 692
6de9cd9a 693@item -Waliasing
32864778 694@opindex @code{Waliasing}
6de9cd9a 695@cindex aliasing
32864778 696@cindex warnings, aliasing
3010be13
AD
697Warn about possible aliasing of dummy arguments. Specifically, it warns
698if the same actual argument is associated with a dummy argument with
40746dcc 699@code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
3010be13
AD
700with an explicit interface.
701
702The following example will trigger the warning.
6de9cd9a 703@smallexample
3010be13
AD
704 interface
705 subroutine bar(a,b)
706 integer, intent(in) :: a
707 integer, intent(out) :: b
708 end subroutine
709 end interface
710 integer :: a
711
712 call bar(a,a)
6de9cd9a
DN
713@end smallexample
714
3fbab549 715@item -Wampersand
32864778
DF
716@opindex @code{Wampersand}
717@cindex warnings, ampersand
e739dfac 718@cindex &
3fbab549 719Warn about missing ampersand in continued character constants. The warning is
f489fba1
FXC
720given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95},
721@option{-std=f2003} and @option{-std=f2008}. Note: With no ampersand
722given in a continued character constant, GNU Fortran assumes continuation
723at the first non-comment, non-whitespace character after the ampersand
724that initiated the continuation.
3fbab549 725
bdfd2ff0
TK
726@item -Warray-temporaries
727@opindex @code{Warray-temporaries}
728@cindex warnings, array temporaries
729Warn about array temporaries generated by the compiler. The information
730generated by this warning is sometimes useful in optimization, in order to
731avoid such temporaries.
732
276419d0 733@item -Wcharacter-truncation
32864778
DF
734@opindex @code{Wcharacter-truncation}
735@cindex warnings, character truncation
276419d0
BM
736Warn when a character assignment will truncate the assigned string.
737
802e3f8c
RW
738@item -Wline-truncation
739@opindex @code{Wline-truncation}
740@cindex warnings, line truncation
741Warn when a source code line will be truncated.
742
6de9cd9a 743@item -Wconversion
32864778
DF
744@opindex @code{Wconversion}
745@cindex warnings, conversion
6de9cd9a
DN
746@cindex conversion
747Warn about implicit conversions between different types.
748
6de9cd9a 749@item -Wimplicit-interface
32864778
DF
750@opindex @code{Wimplicit-interface}
751@cindex warnings, implicit interface
02712c16 752Warn if a procedure is called without an explicit interface.
6de9cd9a
DN
753Note this only checks that an explicit interface is present. It does not
754check that the declared interfaces are consistent across program units.
755
c3005b0f
DK
756@item -Wintrinsics-std
757@opindex @code{Wintrinsics-std}
1207ac67 758@cindex warnings, non-standard intrinsics
c3005b0f
DK
759@cindex warnings, intrinsics of other standards
760Warn if @command{gfortran} finds a procedure named like an intrinsic not
761available in the currently selected standard (with @option{-std}) and treats
762it as @code{EXTERNAL} procedure because of this. @option{-fall-intrinsics} can
763be used to never trigger this behaviour and always link to the intrinsic
764regardless of the selected standard.
b7892582 765
6de9cd9a 766@item -Wsurprising
32864778
DF
767@opindex @code{Wsurprising}
768@cindex warnings, suspicious code
2d8b59df
SK
769Produce a warning when ``suspicious'' code constructs are encountered.
770While technically legal these usually indicate that an error has been made.
6de9cd9a
DN
771
772This currently produces a warning under the following circumstances:
773
774@itemize @bullet
775@item
ffd1953e
FXC
776An INTEGER SELECT construct has a CASE that can never be matched as its
777lower value is greater than its upper value.
6de9cd9a
DN
778
779@item
780A LOGICAL SELECT construct has three CASE statements.
39a184ce
JD
781
782@item
783A TRANSFER specifies a source that is shorter than the destination.
fee3292b
DK
784
785@item
786The type of a function result is declared more than once with the same type. If
787@option{-pedantic} or standard-conforming mode is enabled, this is an error.
6de9cd9a
DN
788@end itemize
789
840bd9f7 790@item -Wtabs
32864778
DF
791@opindex @code{Wtabs}
792@cindex warnings, tabs
e739dfac 793@cindex tabulators
840bd9f7 794By default, tabs are accepted as whitespace, but tabs are not members
fd1935d5
TB
795of the Fortran Character Set. For continuation lines, a tab followed
796by a digit between 1 and 9 is supported. @option{-Wno-tabs} will cause
797a warning to be issued if a tab is encountered. Note, @option{-Wno-tabs}
798is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
f489fba1 799@option{-std=f2008} and @option{-Wall}.
840bd9f7 800
2d8b59df 801@item -Wunderflow
32864778
DF
802@opindex @code{Wunderflow}
803@cindex warnings, underflow
804@cindex underflow
2d8b59df
SK
805Produce a warning when numerical constant expressions are
806encountered, which yield an UNDERFLOW during compilation.
807
c3005b0f
DK
808@item -Wintrinsic-shadow
809@opindex @code{Wintrinsic-shadow}
810@cindex warnings, intrinsic
811@cindex intrinsic
812Warn if a user-defined procedure or module procedure has the same name as an
813intrinsic; in this case, an explicit interface or @code{EXTERNAL} or
814@code{INTRINSIC} declaration might be needed to get calls later resolved to
815the desired intrinsic/procedure.
816
d92693b4
DF
817@item -Wunused-parameter
818@opindex @code{Wunused-parameter}
819@cindex warnings, unused parameter
820@cindex unused parameter
821Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
822@command{gfortran}'s implementation of this option does not warn
823about unused dummy arguments, but about unused @code{PARAMETER} values.
824@option{-Wunused-parameter} is not included in @option{-Wall} but is
825implied by @option{-Wall -Wextra}.
826
f613cea7
JW
827@item -Walign-commons
828@opindex @code{Walign-commons}
829@cindex warnings, alignment of COMMON blocks
830@cindex alignment of COMMON blocks
831By default, @command{gfortran} warns about any occasion of variables being
832padded for proper alignment inside a COMMON block. This warning can be turned
833off via @option{-Wno-align-commons}. See also @option{-falign-commons}.
834
6de9cd9a 835@item -Werror
32864778
DF
836@opindex @code{Werror}
837@cindex warnings, to errors
6de9cd9a 838Turns all warnings into errors.
6de9cd9a
DN
839@end table
840
592600ce
BM
841@xref{Error and Warning Options,,Options to Request or Suppress Errors and
842Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
843more options offered by the GBE shared by @command{gfortran}, @command{gcc}
844and other GNU compilers.
6de9cd9a
DN
845
846Some of these have no effect when compiling programs written in Fortran.
847
848@node Debugging Options
a2bef74c 849@section Options for debugging your program or GNU Fortran
6de9cd9a
DN
850@cindex options, debugging
851@cindex debugging information options
852
853GNU Fortran has various special options that are used for debugging
7fc15ba5 854either your program or the GNU Fortran compiler.
6de9cd9a
DN
855
856@table @gcctabopt
6de9cd9a 857@item -fdump-parse-tree
32864778 858@opindex @code{fdump-parse-tree}
6de9cd9a 859Output the internal parse tree before starting code generation. Only
7fc15ba5 860really useful for debugging the GNU Fortran compiler itself.
6de9cd9a 861
944b8b35 862@item -ffpe-trap=@var{list}
32864778 863@opindex @code{ffpe-trap=}@var{list}
944b8b35
FXC
864Specify a list of IEEE exceptions when a Floating Point Exception
865(FPE) should be raised. On most systems, this will result in a SIGFPE
866signal being sent and the program being interrupted, producing a core
867file useful for debugging. @var{list} is a (possibly empty) comma-separated
868list of the following IEEE exceptions: @samp{invalid} (invalid floating
40746dcc 869point operation, such as @code{SQRT(-1.0)}), @samp{zero} (division by
944b8b35
FXC
870zero), @samp{overflow} (overflow in a floating point operation),
871@samp{underflow} (underflow in a floating point operation),
872@samp{precision} (loss of precision during operation) and @samp{denormal}
27ea0360 873(operation produced a denormal value).
eedeea04 874
8307c61b 875Some of the routines in the Fortran runtime library, like
aad9c4f4 876@samp{CPU_TIME}, are likely to trigger floating point exceptions when
8307c61b
FXC
877@code{ffpe-trap=precision} is used. For this reason, the use of
878@code{ffpe-trap=precision} is not recommended.
879
868d75db 880@item -fbacktrace
32864778 881@opindex @code{fbacktrace}
868d75db
FXC
882@cindex backtrace
883@cindex trace
2b840e50
FXC
884Specify that, when a runtime error is encountered or a deadly signal is
885emitted (segmentation fault, illegal instruction, bus error or
886floating-point exception), the Fortran runtime
868d75db
FXC
887library should output a backtrace of the error. This option
888only has influence for compilation of the Fortran main program.
889
eedeea04 890@item -fdump-core
e739dfac
DF
891@cindex core, dump
892@opindex @code{fdump-core}
eedeea04
FXC
893Request that a core-dump file is written to disk when a runtime error
894is encountered on systems that support core dumps. This option is
895only effective for the compilation of the Fortran main program.
944b8b35
FXC
896@end table
897
6de9cd9a
DN
898@xref{Debugging Options,,Options for Debugging Your Program or GCC,
899gcc,Using the GNU Compiler Collection (GCC)}, for more information on
900debugging options.
901
902@node Directory Options
a2bef74c 903@section Options for directory search
6de9cd9a
DN
904@cindex directory, options
905@cindex options, directory search
906@cindex search path
6de9cd9a
DN
907@cindex INCLUDE directive
908@cindex directive, INCLUDE
7fc15ba5 909These options affect how GNU Fortran searches
5724da63 910for files specified by the @code{INCLUDE} directive and where it searches
6de9cd9a
DN
911for previously compiled modules.
912
913It also affects the search paths used by @command{cpp} when used to preprocess
2d8b59df 914Fortran source.
6de9cd9a
DN
915
916@table @gcctabopt
6de9cd9a 917@item -I@var{dir}
32864778 918@opindex @code{I}@var{dir}
6de9cd9a
DN
919@cindex directory, search paths for inclusion
920@cindex inclusion, directory search paths for
921@cindex search paths, for included files
922@cindex paths, search
923@cindex module search path
924These affect interpretation of the @code{INCLUDE} directive
925(as well as of the @code{#include} directive of the @command{cpp}
926preprocessor).
927
928Also note that the general behavior of @option{-I} and
929@code{INCLUDE} is pretty much the same as of @option{-I} with
930@code{#include} in the @command{cpp} preprocessor, with regard to
931looking for @file{header.gcc} files and other such things.
932
40746dcc 933This path is also used to search for @file{.mod} files when previously
6de9cd9a
DN
934compiled modules are required by a @code{USE} statement.
935
936@xref{Directory Options,,Options for Directory Search,
937gcc,Using the GNU Compiler Collection (GCC)}, for information on the
938@option{-I} option.
939
6de9cd9a 940@item -J@var{dir}
ccc2ed87 941@item -M@var{dir}
32864778 942@opindex @code{J}@var{dir}
ccc2ed87 943@opindex @code{M}@var{dir}
276419d0
BM
944@cindex paths, search
945@cindex module search path
40746dcc 946This option specifies where to put @file{.mod} files for compiled modules.
2d8b59df 947It is also added to the list of directories to searched by an @code{USE}
6de9cd9a
DN
948statement.
949
950The default is the current directory.
951
ccc2ed87 952@option{-M} is deprecated to avoid conflicts with existing GCC options.
276419d0
BM
953
954@item -fintrinsic-modules-path @var{dir}
32864778 955@opindex @code{fintrinsic-modules-path} @var{dir}
276419d0
BM
956@cindex paths, search
957@cindex module search path
958This option specifies the location of pre-compiled intrinsic modules, if
959they are not in the default location expected by the compiler.
6de9cd9a
DN
960@end table
961
70263321 962@node Link Options
a2bef74c 963@section Influencing the linking step
70263321
DF
964@cindex options, linking
965@cindex linking, static
966
967These options come into play when the compiler links object files into an
968executable output file. They are meaningless if the compiler is not doing
969a link step.
970
971@table @gcctabopt
972@item -static-libgfortran
973@opindex @code{static-libgfortran}
974On systems that provide @file{libgfortran} as a shared and a static
975library, this option forces the use of the static version. If no
976shared version of @file{libgfortran} was built when the compiler was
977configured, this option has no effect.
978@end table
979
980
eaa90d25 981@node Runtime Options
a2bef74c 982@section Influencing runtime behavior
e739dfac 983@cindex options, runtime
eaa90d25 984
7fc15ba5 985These options affect the runtime behavior of programs compiled with GNU Fortran.
eaa90d25 986@table @gcctabopt
eaa90d25 987@item -fconvert=@var{conversion}
32864778 988@opindex @code{fconvert=}@var{conversion}
eaa90d25
TK
989Specify the representation of data for unformatted files. Valid
990values for conversion are: @samp{native}, the default; @samp{swap},
991swap between big- and little-endian; @samp{big-endian}, use big-endian
992representation for unformatted files; @samp{little-endian}, use little-endian
993representation for unformatted files.
994
995@emph{This option has an effect only when used in the main program.
996The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
40746dcc 997variable override the default specified by @option{-fconvert}.}
d67ab5ee 998
082b0571
JD
999
1000@item -fno-range-check
c3280643 1001@opindex @code{fno-range-check}
082b0571
JD
1002Disable range checking of input values during integer @code{READ} operations.
1003For example, GNU Fortran will give an error if an input value is
1004outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}]. In other words,
1005with @code{INTEGER (kind=4) :: i} , attempting to read @math{-2147483648} will
1006give an error unless @option{-fno-range-check} is given.
1007
1008
d67ab5ee 1009@item -frecord-marker=@var{length}
32864778 1010@opindex @code{frecord-marker=}@var{length}
d67ab5ee 1011Specify the length of record markers for unformatted files.
07b3bbf2 1012Valid values for @var{length} are 4 and 8. Default is 4.
a2bef74c 1013@emph{This is different from previous versions of @command{gfortran}},
07b3bbf2
TK
1014which specified a default record marker length of 8 on most
1015systems. If you want to read or write files compatible
a2bef74c 1016with earlier versions of @command{gfortran}, use @option{-frecord-marker=8}.
07b3bbf2 1017
07b3bbf2 1018@item -fmax-subrecord-length=@var{length}
32864778 1019@opindex @code{fmax-subrecord-length=}@var{length}
07b3bbf2
TK
1020Specify the maximum length for a subrecord. The maximum permitted
1021value for length is 2147483639, which is also the default. Only
1022really useful for use by the gfortran testsuite.
0483c79f
JD
1023
1024@item -fsign-zero
1025@opindex @code{fsign-zero}
1026When writing zero values, show the negative sign if the sign bit is set.
1027@code{fno-sign-zero} does not print the negative sign of zero values for
1028compatibility with F77. Default behavior is to show the negative sign.
eaa90d25
TK
1029@end table
1030
6de9cd9a 1031@node Code Gen Options
a2bef74c 1032@section Options for code generation conventions
6de9cd9a
DN
1033@cindex code generation, conventions
1034@cindex options, code generation
e739dfac 1035@cindex options, run-time
6de9cd9a
DN
1036
1037These machine-independent options control the interface conventions
1038used in code generation.
1039
1040Most of them have both positive and negative forms; the negative form
1041of @option{-ffoo} would be @option{-fno-foo}. In the table below, only
1042one of the forms is listed---the one which is not the default. You
1043can figure out the other form by either removing @option{no-} or adding
1044it.
1045
6de9cd9a 1046@table @gcctabopt
ee5426a4 1047@item -fno-automatic
32864778 1048@opindex @code{fno-automatic}
e739dfac
DF
1049@cindex @code{SAVE} statement
1050@cindex statement, @code{SAVE}
1e7de83b
AL
1051Treat each program unit (except those marked as RECURSIVE) as if the
1052@code{SAVE} statement were specified for every local variable and array
1053referenced in it. Does not affect common blocks. (Some Fortran compilers
1054provide this option under the name @option{-static} or @option{-save}.)
1055The default, which is @option{-fautomatic}, uses the stack for local
1056variables smaller than the value given by @option{-fmax-stack-var-size}.
1057Use the option @option{-frecursive} to use no static memory.
ee5426a4 1058
973ff4c0 1059@item -ff2c
e739dfac 1060@opindex ff2c
973ff4c0
TS
1061@cindex calling convention
1062@cindex @command{f2c} calling convention
1063@cindex @command{g77} calling convention
1064@cindex libf2c calling convention
1065Generate code designed to be compatible with code generated
1066by @command{g77} and @command{f2c}.
1067
1068The calling conventions used by @command{g77} (originally implemented
1069in @command{f2c}) require functions that return type
1070default @code{REAL} to actually return the C type @code{double}, and
1071functions that return type @code{COMPLEX} to return the values via an
1072extra argument in the calling sequence that points to where to
1073store the return value. Under the default GNU calling conventions, such
1074functions simply return their results as they would in GNU
8556236b 1075C---default @code{REAL} functions return the C type @code{float}, and
973ff4c0 1076@code{COMPLEX} functions return the GNU C type @code{complex}.
a226fc2b
TS
1077Additionally, this option implies the @option{-fsecond-underscore}
1078option, unless @option{-fno-second-underscore} is explicitly requested.
973ff4c0
TS
1079
1080This does not affect the generation of code that interfaces with
1081the @command{libgfortran} library.
1082
40746dcc
BM
1083@emph{Caution:} It is not a good idea to mix Fortran code compiled with
1084@option{-ff2c} with code compiled with the default @option{-fno-f2c}
973ff4c0
TS
1085calling conventions as, calling @code{COMPLEX} or default @code{REAL}
1086functions between program parts which were compiled with different
1087calling conventions will break at execution time.
1088
1089@emph{Caution:} This will break code which passes intrinsic functions
1090of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
40746dcc 1091the library implementations use the @option{-fno-f2c} calling conventions.
973ff4c0 1092
6de9cd9a 1093@item -fno-underscoring
32864778 1094@opindex @code{fno-underscoring}
6de9cd9a
DN
1095@cindex underscore
1096@cindex symbol names, underscores
1097@cindex transforming symbol names
1098@cindex symbol names, transforming
1099Do not transform names of entities specified in the Fortran
1100source file by appending underscores to them.
1101
7fc15ba5 1102With @option{-funderscoring} in effect, GNU Fortran appends one
5724da63
JD
1103underscore to external names with no underscores. This is done to ensure
1104compatibility with code produced by many UNIX Fortran compilers.
973ff4c0 1105
7fc15ba5 1106@emph{Caution}: The default behavior of GNU Fortran is
973ff4c0 1107incompatible with @command{f2c} and @command{g77}, please use the
b4cbcd1a 1108@option{-ff2c} option if you want object files compiled with
7fc15ba5 1109GNU Fortran to be compatible with object code created with these
b4cbcd1a 1110tools.
6de9cd9a
DN
1111
1112Use of @option{-fno-underscoring} is not recommended unless you are
7fc15ba5 1113experimenting with issues such as integration of GNU Fortran into
8307c61b
FXC
1114existing system environments (vis-@`{a}-vis existing libraries, tools,
1115and so on).
6de9cd9a
DN
1116
1117For example, with @option{-funderscoring}, and assuming other defaults like
40746dcc
BM
1118@option{-fcase-lower} and that @code{j()} and @code{max_count()} are
1119external functions while @code{my_var} and @code{lvar} are local variables,
6de9cd9a 1120a statement like
6de9cd9a
DN
1121@smallexample
1122I = J() + MAX_COUNT (MY_VAR, LVAR)
1123@end smallexample
6de9cd9a
DN
1124@noindent
1125is implemented as something akin to:
6de9cd9a
DN
1126@smallexample
1127i = j_() + max_count__(&my_var__, &lvar);
1128@end smallexample
1129
1130With @option{-fno-underscoring}, the same statement is implemented as:
1131
1132@smallexample
1133i = j() + max_count(&my_var, &lvar);
1134@end smallexample
1135
1136Use of @option{-fno-underscoring} allows direct specification of
7fc15ba5 1137user-defined names while debugging and when interfacing GNU Fortran
6de9cd9a
DN
1138code with other languages.
1139
1140Note that just because the names match does @emph{not} mean that the
7fc15ba5 1141interface implemented by GNU Fortran for an external name matches the
6de9cd9a 1142interface implemented by some other language for that same name.
7fc15ba5 1143That is, getting code produced by GNU Fortran to link to code produced
6de9cd9a
DN
1144by some other compiler using this or any other method can be only a
1145small part of the overall solution---getting the code generated by
1146both compilers to agree on issues other than naming can require
1147significant effort, and, unlike naming disagreements, linkers normally
1148cannot detect disagreements in these other areas.
1149
1150Also, note that with @option{-fno-underscoring}, the lack of appended
1151underscores introduces the very real possibility that a user-defined
1152external name will conflict with a name in a system library, which
1153could make finding unresolved-reference bugs quite difficult in some
1154cases---they might occur at program run time, and show up only as
1155buggy behavior at run time.
1156
7fc15ba5 1157In future versions of GNU Fortran we hope to improve naming and linking
6de9cd9a
DN
1158issues so that debugging always involves using the names as they appear
1159in the source, even if the names as seen by the linker are mangled to
1160prevent accidental linking between procedures with incompatible
1161interfaces.
1162
71a7778c
PT
1163@item -fwhole-file
1164@opindex @code{fwhole-file}
1165By default, GNU Fortran parses, resolves and translates each procedure
1166in a file separately. Using this option modifies this such that the
1167whole file is parsed and placed in a single front-end tree. During
1168resolution, in addition to all the usual checks and fixups, references
1169to external procedures that are in the same file effect resolution of
1170that procedure, if not already done, and a check of the interfaces. The
1171dependences are resolved by changing the order in which the file is
1172translated into the backend tree. Thus, a procedure that is referenced
1173is translated before the reference and the duplication of backend tree
1174declarations eliminated.
1175
973ff4c0 1176@item -fsecond-underscore
32864778 1177@opindex @code{fsecond-underscore}
6de9cd9a
DN
1178@cindex underscore
1179@cindex symbol names, underscores
1180@cindex transforming symbol names
1181@cindex symbol names, transforming
973ff4c0
TS
1182@cindex @command{f2c} calling convention
1183@cindex @command{g77} calling convention
1184@cindex libf2c calling convention
7fc15ba5
BM
1185By default, GNU Fortran appends an underscore to external
1186names. If this option is used GNU Fortran appends two
973ff4c0 1187underscores to names with underscores and one underscore to external names
7fc15ba5 1188with no underscores. GNU Fortran also appends two underscores to
973ff4c0
TS
1189internal names with underscores to avoid naming collisions with external
1190names.
6de9cd9a
DN
1191
1192This option has no effect if @option{-fno-underscoring} is
973ff4c0 1193in effect. It is implied by the @option{-ff2c} option.
6de9cd9a 1194
40746dcc 1195Otherwise, with this option, an external name such as @code{MAX_COUNT}
6de9cd9a 1196is implemented as a reference to the link-time external symbol
40746dcc 1197@code{max_count__}, instead of @code{max_count_}. This is required
973ff4c0
TS
1198for compatibility with @command{g77} and @command{f2c}, and is implied
1199by use of the @option{-ff2c} option.
6de9cd9a 1200
d3d3011f
FXC
1201@item -fcheck=@var{<keyword>}
1202@opindex @code{fcheck}
e739dfac 1203@cindex array, bounds checking
6de9cd9a
DN
1204@cindex bounds checking
1205@cindex range checking
6de9cd9a
DN
1206@cindex subscript checking
1207@cindex checking subscripts
d3d3011f
FXC
1208@cindex run-time checking
1209@cindex checking array temporaries
1210
1211Enable the generation of run-time checks; the argument shall be
1212a comma-delimited list of the following keywords.
1213
1214@table @asis
1215@item @samp{all}
1216Enable all run-time test of @option{-fcheck}.
1217
1218@item @samp{array-temps}
1219Warns at run time when for passing an actual argument a temporary array
1220had to be generated. The information generated by this warning is
1221sometimes useful in optimization, in order to avoid such temporaries.
1222
1223Note: The warning is only printed once per location.
1224
1225@item @samp{bounds}
6de9cd9a
DN
1226Enable generation of run-time checks for array subscripts
1227and against the declared minimum and maximum values. It also
1228checks array indices for assumed and deferred
aad9c4f4
AM
1229shape arrays against the actual allocated bounds and ensures that all string
1230lengths are equal for character array constructors without an explicit
1231typespec.
6de9cd9a 1232
d3d3011f 1233Some checks require that @option{-fcheck=bounds} is set for
8307c61b 1234the compilation of the main program.
18fe404f 1235
aad9c4f4
AM
1236Note: In the future this may also include other forms of checking, e.g.,
1237checking substring references.
43998ed9 1238
33abc845
TB
1239@item @samp{do}
1240Enable generation of run-time checks for invalid modification of loop
1241iteration variables.
1242
43998ed9
TB
1243@item @samp{recursion}
1244Enable generation of run-time checks for recursively called subroutines and
1245functions which are not marked as recursive. See also @option{-frecursive}.
d3d3011f 1246@end table
6de9cd9a 1247
0d52899f 1248
d3d3011f
FXC
1249@item -fbounds-check
1250@opindex @code{fbounds-check}
1251@c Note: This option is also referred in gcc's manpage
1252Deprecated alias for @option{-fcheck=bounds}.
0d52899f 1253
d3d3011f
FXC
1254@item -fcheck-array-temporaries
1255@opindex @code{fcheck-array-temporaries}
1256Deprecated alias for @option{-fcheck=array-temps}.
0d52899f 1257
63346ddb
SK
1258@item -fmax-array-constructor=@var{n}
1259@opindex @code{fmax-array-constructor}
1260This option can be used to increase the upper limit permitted in
1261array constructors. The code below requires this option to expand
1262the array at compile time.
1263
1264@smallexample
1265@code{program test}
1266@code{implicit none}
1267@code{integer j}
1268@code{integer, parameter :: n = 100000}
1269@code{integer, parameter :: i(n) = (/ (2*j, j = 1, n) /)}
1270@code{print '(10(I0,1X))', i}
1271@code{end program test}
1272@end smallexample
1273
1274@emph{Caution: This option can lead to long compile times and excessively
1275large object files.}
1276
1277The default value for @var{n} is 65535.
1278
1279
6de9cd9a 1280@item -fmax-stack-var-size=@var{n}
32864778 1281@opindex @code{fmax-stack-var-size}
6de9cd9a 1282This option specifies the size in bytes of the largest array that will be put
1e7de83b
AL
1283on the stack; if the size is exceeded static memory is used (except in
1284procedures marked as RECURSIVE). Use the option @option{-frecursive} to
1285allow for recursive procedures which do not have a RECURSIVE attribute or
1286for parallel programs. Use @option{-fno-automatic} to never use the stack.
6de9cd9a
DN
1287
1288This option currently only affects local arrays declared with constant
1289bounds, and may not apply to all character variables.
7fc15ba5 1290Future versions of GNU Fortran may improve this behavior.
6de9cd9a
DN
1291
1292The default value for @var{n} is 32768.
1293
5139e1e9 1294@item -fpack-derived
32864778
DF
1295@opindex @code{fpack-derived}
1296@cindex structure packing
7fc15ba5 1297This option tells GNU Fortran to pack derived type members as closely as
2d8b59df 1298possible. Code compiled with this option is likely to be incompatible
6de9cd9a
DN
1299with code compiled without this option, and may execute slower.
1300
6de9cd9a 1301@item -frepack-arrays
32864778
DF
1302@opindex @code{frepack-arrays}
1303@cindex repacking arrays
7fc15ba5 1304In some circumstances GNU Fortran may pass assumed shape array
02712c16 1305sections via a descriptor describing a noncontiguous area of memory.
6de9cd9a
DN
1306This option adds code to the function prologue to repack the data into
1307a contiguous block at runtime.
1308
1309This should result in faster accesses to the array. However it can introduce
1310significant overhead to the function call, especially when the passed data
02712c16 1311is noncontiguous.
a63dad5b 1312
a63dad5b 1313@item -fshort-enums
32864778 1314@opindex @code{fshort-enums}
a63dad5b 1315This option is provided for interoperability with C code that was
4ba96c02 1316compiled with the @option{-fshort-enums} option. It will make
7fc15ba5 1317GNU Fortran choose the smallest @code{INTEGER} kind a given
a63dad5b 1318enumerator set will fit in, and give all its enumerators this kind.
5a0aad31 1319
5a0aad31 1320@item -fexternal-blas
32864778 1321@opindex @code{fexternal-blas}
a2bef74c
DF
1322This option will make @command{gfortran} generate calls to BLAS functions
1323for some matrix operations like @code{MATMUL}, instead of using our own
5a0aad31 1324algorithms, if the size of the matrices involved is larger than a given
4ba96c02 1325limit (see @option{-fblas-matmul-limit}). This may be profitable if an
5a0aad31
FXC
1326optimized vendor BLAS library is available. The BLAS library will have
1327to be specified at link time.
1328
5a0aad31 1329@item -fblas-matmul-limit=@var{n}
32864778 1330@opindex @code{fblas-matmul-limit}
4ba96c02 1331Only significant when @option{-fexternal-blas} is in effect.
5a0aad31
FXC
1332Matrix multiplication of matrices with size larger than (or equal to) @var{n}
1333will be performed by calls to BLAS functions, while others will be
1334handled by @command{gfortran} internal algorithms. If the matrices
1335involved are not square, the size comparison is performed using the
1336geometric mean of the dimensions of the argument and result matrices.
1337
1338The default value for @var{n} is 30.
1339
1e7de83b
AL
1340@item -frecursive
1341@opindex @code{frecursive}
1342Allow indirect recursion by forcing all local arrays to be allocated
1343on the stack. This flag cannot be used together with
1344@option{-fmax-stack-var-size=} or @option{-fno-automatic}.
1345
51b09ce3
AL
1346@item -finit-local-zero
1347@item -finit-integer=@var{n}
346a77d1 1348@item -finit-real=@var{<zero|inf|-inf|nan|snan>}
51b09ce3
AL
1349@item -finit-logical=@var{<true|false>}
1350@item -finit-character=@var{n}
1351@opindex @code{finit-local-zero}
1352@opindex @code{finit-integer}
1353@opindex @code{finit-real}
1354@opindex @code{finit-logical}
1355@opindex @code{finit-character}
1356The @option{-finit-local-zero} option instructs the compiler to
1357initialize local @code{INTEGER}, @code{REAL}, and @code{COMPLEX}
1358variables to zero, @code{LOGICAL} variables to false, and
1359@code{CHARACTER} variables to a string of null bytes. Finer-grained
1360initialization options are provided by the
1361@option{-finit-integer=@var{n}},
346a77d1 1362@option{-finit-real=@var{<zero|inf|-inf|nan|snan>}} (which also initializes
51b09ce3
AL
1363the real and imaginary parts of local @code{COMPLEX} variables),
1364@option{-finit-logical=@var{<true|false>}}, and
1365@option{-finit-character=@var{n}} (where @var{n} is an ASCII character
1366value) options. These options do not initialize components of derived
1367type variables, nor do they initialize variables that appear in an
1368@code{EQUIVALENCE} statement. (This limitation may be removed in
1369future releases).
1370
1371Note that the @option{-finit-real=nan} option initializes @code{REAL}
346a77d1
TB
1372and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN
1373use @option{-finit-real=snan}; note, however, that compile-time
1374optimizations may convert them into quiet NaN and that trapping
1375needs to be enabled (e.g. via @option{-ffpe-trap}).
f613cea7
JW
1376
1377@item -falign-commons
1378@opindex @code{falign-commons}
1379@cindex alignment of COMMON blocks
1380By default, @command{gfortran} enforces proper alignment of all variables in a
1381COMMON block by padding them as needed. On certain platforms this is mandatory,
1382on others it increases performance. If a COMMON block is not declared with
1383consistent data types everywhere, this padding can cause trouble, and
1384@option{-fno-align-commons } can be used to disable automatic alignment. The
1385same form of this option should be used for all files that share a COMMON block.
1386To avoid potential alignment issues in COMMON blocks, it is recommended to order
1387objects from largests to smallest.
6de9cd9a
DN
1388@end table
1389
1390@xref{Code Gen Options,,Options for Code Generation Conventions,
1391gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1392offered by the GBE
7fc15ba5 1393shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
6de9cd9a
DN
1394
1395
1396@c man end
1397
1398@node Environment Variables
a2bef74c 1399@section Environment variables affecting @command{gfortran}
e739dfac 1400@cindex environment variable
6de9cd9a
DN
1401
1402@c man begin ENVIRONMENT
1403
7fc15ba5 1404The @command{gfortran} compiler currently does not make use of any environment
6de9cd9a
DN
1405variables to control its operation above and beyond those
1406that affect the operation of @command{gcc}.
1407
1408@xref{Environment Variables,,Environment Variables Affecting GCC,
1409gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
1410variables.
1411
eaa90d25 1412@xref{Runtime}, for environment variables that affect the
7fc15ba5 1413run-time behavior of programs compiled with GNU Fortran.
6de9cd9a 1414@c man end
This page took 1.591278 seconds and 5 git commands to generate.