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