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