]> gcc.gnu.org Git - gcc.git/blame - gcc/fortran/invoke.texi
c-decl.c (finish_declspecs): When _Sat is used without _Fract or _Accum, set the...
[gcc.git] / gcc / fortran / invoke.texi
CommitLineData
2553e4e0 1@c Copyright (C) 2004, 2005, 2006, 2007
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
5f9a37a6 8Copyright @copyright{} 2004, 2005, 2006, 2007
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
14Invariant Sections being ``GNU General Public License'' and ``Funding
15Free Software'', the Front-Cover texts being (a) (see below), and with
16the Back-Cover Texts being (b) (see below). A copy of the license is
17included in the gfdl(7) man page.
18
19(a) The FSF's Front-Cover Text is:
20
21 A GNU Manual
22
23(b) The FSF's Back-Cover Text is:
24
25 You have freedom to copy and modify this GNU Manual, like GNU
26 software. Copies published by the Free Software Foundation raise
27 funds for GNU development.
28@c man end
29@c Set file name and title for the man page.
30@setfilename gfortran
7fc15ba5 31@settitle GNU Fortran compiler.
6de9cd9a
DN
32@c man begin SYNOPSIS
33gfortran [@option{-c}|@option{-S}|@option{-E}]
34 [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
35 [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
36 [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
37 [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
38 [@option{-f}@var{option}@dots{}]
39 [@option{-m}@var{machine-option}@dots{}]
40 [@option{-o} @var{outfile}] @var{infile}@dots{}
41
42Only the most useful options are listed here; see below for the
43remainder.
44@c man end
45@c man begin SEEALSO
46gpl(7), gfdl(7), fsf-funding(7),
47cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
48and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
49@file{ld}, @file{binutils} and @file{gdb}.
50@c man end
51@c man begin BUGS
52For instructions on reporting bugs, see
2f41c1d6 53@w{@value{BUGURL}}.
6de9cd9a
DN
54@c man end
55@c man begin AUTHOR
56See the Info entry for @command{gfortran} for contributors to GCC and
7fc15ba5 57GNU Fortran.
6de9cd9a
DN
58@c man end
59@end ignore
60
7fc15ba5
BM
61@node Invoking GNU Fortran
62@chapter GNU Fortran Command Options
63@cindex GNU Fortran command options
6de9cd9a 64@cindex command options
7fc15ba5 65@cindex options, @command{gfortran} command
6de9cd9a
DN
66
67@c man begin DESCRIPTION
68
69The @command{gfortran} command supports all the options supported by the
7fc15ba5 70@command{gcc} command. Only options specific to GNU Fortran are documented here.
6de9cd9a
DN
71
72@xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
73Collection (GCC)}, for information
74on the non-Fortran-specific aspects of the @command{gcc} command (and,
75therefore, the @command{gfortran} command).
76
77@cindex options, negative forms
7fc15ba5 78All GCC and GNU Fortran options
6de9cd9a
DN
79are accepted both by @command{gfortran} and by @command{gcc}
80(as well as any other drivers built at the same time,
81such as @command{g++}),
7fc15ba5
BM
82since adding GNU Fortran to the GCC distribution
83enables acceptance of GNU Fortran options
6de9cd9a
DN
84by all of the relevant drivers.
85
86In some cases, options have positive and negative forms;
87the negative form of @option{-ffoo} would be @option{-fno-foo}.
88This manual documents only one of these two forms, whichever
89one is not the default.
90@c man end
91
92@menu
93* Option Summary:: Brief list of all @command{gfortran} options,
94 without explanations.
95* Fortran Dialect Options:: Controlling the variant of Fortran language
96 compiled.
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
200c5036 124-fcray-pointer -fopenmp -fno-range-check -fno-backslash -fmodule-private}
6de9cd9a 125
592600ce 126@item Error and Warning Options
a2bef74c
DF
127@xref{Error and Warning Options,,Options to request or suppress errors
128and warnings}.
592600ce 129@gccoptlist{-fmax-errors=@var{n} @gol
6de9cd9a 130-fsyntax-only -pedantic -pedantic-errors @gol
5a2197e9 131-Wall -Waliasing -Wampersand -Wcharacter-truncation -Wconversion @gol
276419d0 132-Wimplicit-interface -Wline-truncation -Wnonstd-intrinsics -Wsurprising @gol
d92693b4 133-Wno-tabs -Wunderflow -Wunused-parameter}
6de9cd9a
DN
134
135@item Debugging Options
a2bef74c 136@xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
868d75db
FXC
137@gccoptlist{-fdump-parse-tree -ffpe-trap=@var{list} @gol
138-fdump-core -fbacktrace}
6de9cd9a
DN
139
140@item Directory Options
a2bef74c 141@xref{Directory Options,,Options for directory search}.
276419d0 142@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} -fintrinsic-modules-path @var{dir}}
6de9cd9a 143
70263321
DF
144@item Link Options
145@xref{Link Options,,Options for influencing the linking step}.
146@gccoptlist{-static-libgfortran}
147
eaa90d25
TK
148@item Runtime Options
149@xref{Runtime Options,,Options for influencing runtime behavior}.
276419d0 150@gccoptlist{-fconvert=@var{conversion} -frecord-marker=@var{length} @gol
0483c79f 151-fmax-subrecord-length=@var{length} -fsign-zero}
eaa90d25 152
6de9cd9a 153@item Code Generation Options
a2bef74c 154@xref{Code Gen Options,,Options for code generation conventions}.
592600ce
BM
155@gccoptlist{-fno-automatic -ff2c -fno-underscoring
156-fsecond-underscore @gol
6de9cd9a 157-fbounds-check -fmax-stack-var-size=@var{n} @gol
592600ce 158-fpack-derived -frepack-arrays -fshort-enums -fexternal-blas @gol
1e7de83b 159-fblas-matmul-limit=@var{n} -frecursive}
6de9cd9a
DN
160@end table
161
6de9cd9a
DN
162@menu
163* Fortran Dialect Options:: Controlling the variant of Fortran language
164 compiled.
592600ce 165* Error and Warning Options:: How picky should the compiler be?
6de9cd9a
DN
166* Debugging Options:: Symbol tables, measurements, and debugging dumps.
167* Directory Options:: Where to find module files
70263321 168* Link Options :: Influencing the linking step
eaa90d25 169* Runtime Options:: Influencing runtime behavior
6de9cd9a
DN
170* Code Gen Options:: Specifying conventions for function calls, data layout
171 and register usage.
172@end menu
173
174@node Fortran Dialect Options
a2bef74c 175@section Options controlling Fortran dialect
6de9cd9a
DN
176@cindex dialect options
177@cindex language, dialect options
178@cindex options, dialect
179
3397327c
BM
180The following options control the details of the Fortran dialect
181accepted by the compiler:
6de9cd9a
DN
182
183@table @gcctabopt
4ba96c02
BM
184@item -ffree-form
185@item -ffixed-form
32864778
DF
186@opindex @code{ffree-form}
187@opindex @code{fno-fixed-form}
188@cindex options, fortran dialect
e739dfac
DF
189@cindex file format, free
190@cindex file format, fixed
49de9e73 191Specify the layout used by the source file. The free form layout
6de9cd9a 192was introduced in Fortran 90. Fixed form was traditionally used in
3397327c
BM
193older Fortran programs. When neither option is specified, the source
194form is determined by the file extension.
6de9cd9a 195
a23eec13 196@item -fall-intrinsics
32864778 197@opindex @code{fall-intrinsics}
a23eec13
SK
198Accept all of the intrinsic procedures provided in libgfortran
199without regard to the setting of @option{-std}. In particular,
08f36673 200this option can be quite useful with @option{-std=f95}. Additionally,
7fc15ba5 201@command{gfortran} will ignore @option{-Wnonstd-intrinsics}.
a23eec13 202
e0bcf78c 203@item -fd-lines-as-code
259b41c1 204@item -fd-lines-as-comments
32864778
DF
205@opindex @code{fd-lines-as-code}
206@opindex @code{fd-lines-as-comments}
4ba96c02 207Enable special treatment for lines beginning with @code{d} or @code{D}
3397327c
BM
208in fixed form sources. If the @option{-fd-lines-as-code} option is
209given they are treated as if the first column contained a blank. If the
e0bcf78c
TS
210@option{-fd-lines-as-comments} option is given, they are treated as
211comment lines.
212
3ae9eb27 213@item -fdefault-double-8
32864778 214@opindex @code{fdefault-double-8}
3397327c 215Set the @code{DOUBLE PRECISION} type to an 8 byte wide type.
3ae9eb27 216
3ae9eb27 217@item -fdefault-integer-8
32864778 218@opindex @code{fdefault-integer-8}
3ae9eb27
SK
219Set the default integer and logical types to an 8 byte wide type.
220Do nothing if this is already the default.
221
3ae9eb27 222@item -fdefault-real-8
32864778 223@opindex @code{fdefault-real-8}
3ae9eb27
SK
224Set the default real type to an 8 byte wide type.
225Do nothing if this is already the default.
226
6de9cd9a 227@item -fdollar-ok
32864778 228@opindex @code{fdollar-ok}
e739dfac 229@cindex $
6de9cd9a
DN
230@cindex symbol names
231@cindex character set
232Allow @samp{$} as a valid character in a symbol name.
233
131c66cd 234@item -fno-backslash
32864778 235@opindex @code{fno-backslash}
131c66cd
FXC
236@cindex backslash
237@cindex escape characters
3397327c
BM
238Change the interpretation of backslashes in string literals from
239``C-style'' escape characters to a single backslash character.
131c66cd 240
654b6073
FXC
241@item -fmodule-private
242@opindex @code{fmodule-private}
243@cindex module entities
244@cindex private
245Set the default accessibility of module entities to @code{PRIVATE}.
246Use-associated entities will not be accessible unless they are explicitly
247declared as @code{PUBLIC}.
248
6de9cd9a 249@item -ffixed-line-length-@var{n}
32864778 250@opindex @code{ffixed-line-length-}@var{n}
e739dfac 251@cindex file format, fixed
6de9cd9a
DN
252Set column after which characters are ignored in typical fixed-form
253lines in the source file, and through which spaces are assumed (as
254if padded to that length) after the ends of short fixed-form lines.
255
6de9cd9a 256Popular values for @var{n} include 72 (the
3397327c 257standard and the default), 80 (card image), and 132 (corresponding
6de9cd9a 258to ``extended-source'' options in some popular compilers).
3397327c 259@var{n} may also be @samp{none}, meaning that the entire line is meaningful
6de9cd9a
DN
260and that continued character constants never have implicit spaces appended
261to them to fill out the line.
262@option{-ffixed-line-length-0} means the same thing as
263@option{-ffixed-line-length-none}.
264
16ab8e74 265@item -ffree-line-length-@var{n}
32864778 266@opindex @code{ffree-line-length-}@var{n}
e739dfac 267@cindex file format, free
16ab8e74 268Set column after which characters are ignored in typical free-form
3397327c 269lines in the source file. The default value is 132.
16ab8e74
BF
270@var{n} may be @samp{none}, meaning that the entire line is meaningful.
271@option{-ffree-line-length-0} means the same thing as
272@option{-ffree-line-length-none}.
273
6de9cd9a 274@item -fmax-identifier-length=@var{n}
32864778 275@opindex @code{fmax-identifier-length=}@var{n}
6de9cd9a 276Specify the maximum allowed identifier length. Typical values are
3397327c 27731 (Fortran 95) and 63 (Fortran 2003).
6de9cd9a 278
6de9cd9a 279@item -fimplicit-none
32864778 280@opindex @code{fimplicit-none}
6de9cd9a 281Specify that no implicit typing is allowed, unless overridden by explicit
40746dcc
BM
282@code{IMPLICIT} statements. This is the equivalent of adding
283@code{implicit none} to the start of every procedure.
6de9cd9a 284
83d890b9 285@item -fcray-pointer
32864778 286@opindex @code{fcray-pointer}
3397327c
BM
287Enable the Cray pointer extension, which provides C-like pointer
288functionality.
83d890b9 289
6c7a4dfd 290@item -fopenmp
32864778 291@opindex @code{fopenmp}
4e8b3590 292@cindex OpenMP
3397327c
BM
293Enable the OpenMP extensions. This includes OpenMP @code{!$omp} directives
294in free form
6c7a4dfd 295and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
3397327c
BM
296@code{!$} conditional compilation sentinels in free form
297and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form,
6c7a4dfd 298and when linking arranges for the OpenMP runtime library to be linked
1e7de83b 299in. The option @option{-fopenmp} implies @option{-frecursive}.
6c7a4dfd 300
200c5036 301@item -fno-range-check
32864778 302@opindex @code{frange-check}
200c5036 303Disable range checking on results of simplification of constant
40746dcc
BM
304expressions during compilation. For example, by default, GNU Fortran
305will give an overflow error at compile time when simplifying @code{a =
306EXP(1000)}. With @option{-fno-range-check}, no error will be given and
307the variable @code{a} will be assigned the value @code{+Infinity}.
308Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
309on most systems, but with @option{-fno-range-check} the value will
310``wrap around'' and @code{i} will be initialized to @math{-1} instead.
54554825 311
6de9cd9a 312@item -std=@var{std}
32864778 313@opindex @code{std=}@var{std} option
276419d0
BM
314Specify the standard to which the program is expected to conform, which
315may be one of @samp{f95}, @samp{f2003}, @samp{gnu}, or @samp{legacy}.
316The default value for @var{std} is @samp{gnu}, which specifies a
317superset of the Fortran 95 standard that includes all of the extensions
318supported by GNU Fortran, although warnings will be given for obsolete
319extensions not recommended for use in new code. The @samp{legacy} value
320is equivalent but without the warnings for obsolete extensions, and may
321be useful for old non-standard programs. The @samp{f95} and
322@samp{f2003} values specify strict conformance to the Fortran 95 and
323Fortran 2003 standards, respectively; errors are given for all
324extensions beyond the relevant language standard, and warnings are given
325for the Fortran 77 features that are permitted but obsolescent in later
326standards.
6de9cd9a 327
6de9cd9a
DN
328@end table
329
592600ce 330@node Error and Warning Options
a2bef74c 331@section Options to request or suppress errors and warnings
6de9cd9a 332@cindex options, warnings
592600ce 333@cindex options, errors
6de9cd9a 334@cindex warnings, suppressing
592600ce 335@cindex messages, error
6de9cd9a
DN
336@cindex messages, warning
337@cindex suppressing warnings
338
592600ce
BM
339Errors are diagnostic messages that report that the GNU Fortran compiler
340cannot compile the relevant piece of source code. The compiler will
341continue to process the program in an attempt to report further errors
342to aid in debugging, but will not produce any compiled output.
343
6de9cd9a 344Warnings are diagnostic messages that report constructions which
592600ce 345are not inherently erroneous but which are risky or suggest there is
4ba96c02 346likely to be a bug in the program. Unless @option{-Werror} is specified,
592600ce 347they do not prevent compilation of the program.
6de9cd9a
DN
348
349You can request many specific warnings with options beginning @option{-W},
350for example @option{-Wimplicit} to request warnings on implicit
351declarations. Each of these specific warning options also has a
352negative form beginning @option{-Wno-} to turn off warnings;
353for example, @option{-Wno-implicit}. This manual lists only one of the
354two forms, whichever is not the default.
355
592600ce
BM
356These options control the amount and kinds of errors and warnings produced
357by GNU Fortran:
6de9cd9a
DN
358
359@table @gcctabopt
592600ce 360@item -fmax-errors-@var{n}
32864778 361@opindex @code{fmax-errors-}@var{n}
4ba96c02 362@cindex errors, limiting
592600ce
BM
363Limits the maximum number of error messages to @var{n}, at which point
364GNU Fortran bails out rather than attempting to continue processing the
365source code. If @var{n} is 0, there is no limit on the number of error
366messages produced.
367
6de9cd9a 368@item -fsyntax-only
32864778 369@opindex @code{fsyntax-only}
4ba96c02 370@cindex syntax checking
adeb22c4
FXC
371Check the code for syntax errors, but don't actually compile it. This
372will generate module files for each module present in the code, but no
373other output file.
6de9cd9a 374
6de9cd9a 375@item -pedantic
32864778 376@opindex @code{pedantic}
7fc15ba5 377Issue warnings for uses of extensions to Fortran 95.
6de9cd9a
DN
378@option{-pedantic} also applies to C-language constructs where they
379occur in GNU Fortran source files, such as use of @samp{\e} in a
40746dcc 380character constant within a directive like @code{#include}.
6de9cd9a 381
7fc15ba5 382Valid Fortran 95 programs should compile properly with or without
6de9cd9a
DN
383this option.
384However, without this option, certain GNU extensions and traditional
385Fortran features are supported as well.
386With this option, many of them are rejected.
387
388Some users try to use @option{-pedantic} to check programs for conformance.
389They soon find that it does not do quite what they want---it finds some
390nonstandard practices, but not all.
7fc15ba5 391However, improvements to GNU Fortran in this area are welcome.
6de9cd9a 392
4ba96c02
BM
393This should be used in conjunction with @option{-std=f95} or
394@option{-std=f2003}.
6de9cd9a 395
6de9cd9a 396@item -pedantic-errors
32864778 397@opindex @code{pedantic-errors}
6de9cd9a
DN
398Like @option{-pedantic}, except that errors are produced rather than
399warnings.
400
6de9cd9a 401@item -Wall
32864778 402@opindex @code{Wall}
6de9cd9a
DN
403@cindex all warnings
404@cindex warnings, all
3fbab549
JD
405Enables commonly used warning options pertaining to usage that
406we recommend avoiding and that we believe are easy to avoid.
2e5758e8 407This currently includes @option{-Waliasing},
276419d0 408@option{-Wampersand}, @option{-Wsurprising}, @option{-Wnonstd-intrinsics},
3fbab549 409@option{-Wno-tabs}, and @option{-Wline-truncation}.
6de9cd9a 410
6de9cd9a 411@item -Waliasing
32864778 412@opindex @code{Waliasing}
6de9cd9a 413@cindex aliasing
32864778 414@cindex warnings, aliasing
3010be13
AD
415Warn about possible aliasing of dummy arguments. Specifically, it warns
416if the same actual argument is associated with a dummy argument with
40746dcc 417@code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
3010be13
AD
418with an explicit interface.
419
420The following example will trigger the warning.
6de9cd9a 421@smallexample
3010be13
AD
422 interface
423 subroutine bar(a,b)
424 integer, intent(in) :: a
425 integer, intent(out) :: b
426 end subroutine
427 end interface
428 integer :: a
429
430 call bar(a,a)
6de9cd9a
DN
431@end smallexample
432
3fbab549 433@item -Wampersand
32864778
DF
434@opindex @code{Wampersand}
435@cindex warnings, ampersand
e739dfac 436@cindex &
3fbab549
JD
437Warn about missing ampersand in continued character constants. The warning is
438given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95}, and
439@option{-std=f2003}. Note: With no ampersand given in a continued character
7fc15ba5 440constant, GNU Fortran assumes continuation at the first non-comment,
3fbab549
JD
441non-whitespace character after the ampersand that initiated the continuation.
442
276419d0 443@item -Wcharacter-truncation
32864778
DF
444@opindex @code{Wcharacter-truncation}
445@cindex warnings, character truncation
276419d0
BM
446Warn when a character assignment will truncate the assigned string.
447
6de9cd9a 448@item -Wconversion
32864778
DF
449@opindex @code{Wconversion}
450@cindex warnings, conversion
6de9cd9a
DN
451@cindex conversion
452Warn about implicit conversions between different types.
453
6de9cd9a 454@item -Wimplicit-interface
32864778
DF
455@opindex @code{Wimplicit-interface}
456@cindex warnings, implicit interface
02712c16 457Warn if a procedure is called without an explicit interface.
6de9cd9a
DN
458Note this only checks that an explicit interface is present. It does not
459check that the declared interfaces are consistent across program units.
460
276419d0 461@item -Wnonstd-intrinsics
32864778 462@opindex @code{Wnonstd-intrinsics}
1207ac67 463@cindex warnings, non-standard intrinsics
b7892582 464Warn if the user tries to use an intrinsic that does not belong to the
276419d0 465standard the user has chosen via the @option{-std} option.
b7892582 466
6de9cd9a 467@item -Wsurprising
32864778
DF
468@opindex @code{Wsurprising}
469@cindex warnings, suspicious code
2d8b59df
SK
470Produce a warning when ``suspicious'' code constructs are encountered.
471While technically legal these usually indicate that an error has been made.
6de9cd9a
DN
472
473This currently produces a warning under the following circumstances:
474
475@itemize @bullet
476@item
ffd1953e
FXC
477An INTEGER SELECT construct has a CASE that can never be matched as its
478lower value is greater than its upper value.
6de9cd9a
DN
479
480@item
481A LOGICAL SELECT construct has three CASE statements.
482@end itemize
483
840bd9f7 484@item -Wtabs
32864778
DF
485@opindex @code{Wtabs}
486@cindex warnings, tabs
e739dfac 487@cindex tabulators
840bd9f7
SK
488By default, tabs are accepted as whitespace, but tabs are not members
489of the Fortran Character Set. @option{-Wno-tabs} will cause a warning
490to be issued if a tab is encountered. Note, @option{-Wno-tabs} is active
8135cfa8
SK
491for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003}, and
492@option{-Wall}.
840bd9f7 493
2d8b59df 494@item -Wunderflow
32864778
DF
495@opindex @code{Wunderflow}
496@cindex warnings, underflow
497@cindex underflow
2d8b59df
SK
498Produce a warning when numerical constant expressions are
499encountered, which yield an UNDERFLOW during compilation.
500
d92693b4
DF
501@item -Wunused-parameter
502@opindex @code{Wunused-parameter}
503@cindex warnings, unused parameter
504@cindex unused parameter
505Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
506@command{gfortran}'s implementation of this option does not warn
507about unused dummy arguments, but about unused @code{PARAMETER} values.
508@option{-Wunused-parameter} is not included in @option{-Wall} but is
509implied by @option{-Wall -Wextra}.
510
6de9cd9a 511@item -Werror
32864778
DF
512@opindex @code{Werror}
513@cindex warnings, to errors
6de9cd9a 514Turns all warnings into errors.
6de9cd9a
DN
515@end table
516
592600ce
BM
517@xref{Error and Warning Options,,Options to Request or Suppress Errors and
518Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
519more options offered by the GBE shared by @command{gfortran}, @command{gcc}
520and other GNU compilers.
6de9cd9a
DN
521
522Some of these have no effect when compiling programs written in Fortran.
523
524@node Debugging Options
a2bef74c 525@section Options for debugging your program or GNU Fortran
6de9cd9a
DN
526@cindex options, debugging
527@cindex debugging information options
528
529GNU Fortran has various special options that are used for debugging
7fc15ba5 530either your program or the GNU Fortran compiler.
6de9cd9a
DN
531
532@table @gcctabopt
6de9cd9a 533@item -fdump-parse-tree
32864778 534@opindex @code{fdump-parse-tree}
6de9cd9a 535Output the internal parse tree before starting code generation. Only
7fc15ba5 536really useful for debugging the GNU Fortran compiler itself.
6de9cd9a 537
944b8b35 538@item -ffpe-trap=@var{list}
32864778 539@opindex @code{ffpe-trap=}@var{list}
944b8b35
FXC
540Specify a list of IEEE exceptions when a Floating Point Exception
541(FPE) should be raised. On most systems, this will result in a SIGFPE
542signal being sent and the program being interrupted, producing a core
543file useful for debugging. @var{list} is a (possibly empty) comma-separated
544list of the following IEEE exceptions: @samp{invalid} (invalid floating
40746dcc 545point operation, such as @code{SQRT(-1.0)}), @samp{zero} (division by
944b8b35
FXC
546zero), @samp{overflow} (overflow in a floating point operation),
547@samp{underflow} (underflow in a floating point operation),
548@samp{precision} (loss of precision during operation) and @samp{denormal}
27ea0360 549(operation produced a denormal value).
eedeea04 550
868d75db 551@item -fbacktrace
32864778 552@opindex @code{fbacktrace}
868d75db
FXC
553@cindex backtrace
554@cindex trace
2b840e50
FXC
555Specify that, when a runtime error is encountered or a deadly signal is
556emitted (segmentation fault, illegal instruction, bus error or
557floating-point exception), the Fortran runtime
868d75db
FXC
558library should output a backtrace of the error. This option
559only has influence for compilation of the Fortran main program.
560
eedeea04 561@item -fdump-core
e739dfac
DF
562@cindex core, dump
563@opindex @code{fdump-core}
eedeea04
FXC
564Request that a core-dump file is written to disk when a runtime error
565is encountered on systems that support core dumps. This option is
566only effective for the compilation of the Fortran main program.
944b8b35
FXC
567@end table
568
6de9cd9a
DN
569@xref{Debugging Options,,Options for Debugging Your Program or GCC,
570gcc,Using the GNU Compiler Collection (GCC)}, for more information on
571debugging options.
572
573@node Directory Options
a2bef74c 574@section Options for directory search
6de9cd9a
DN
575@cindex directory, options
576@cindex options, directory search
577@cindex search path
6de9cd9a
DN
578@cindex INCLUDE directive
579@cindex directive, INCLUDE
7fc15ba5 580These options affect how GNU Fortran searches
5724da63 581for files specified by the @code{INCLUDE} directive and where it searches
6de9cd9a
DN
582for previously compiled modules.
583
584It also affects the search paths used by @command{cpp} when used to preprocess
2d8b59df 585Fortran source.
6de9cd9a
DN
586
587@table @gcctabopt
6de9cd9a 588@item -I@var{dir}
32864778 589@opindex @code{I}@var{dir}
6de9cd9a
DN
590@cindex directory, search paths for inclusion
591@cindex inclusion, directory search paths for
592@cindex search paths, for included files
593@cindex paths, search
594@cindex module search path
595These affect interpretation of the @code{INCLUDE} directive
596(as well as of the @code{#include} directive of the @command{cpp}
597preprocessor).
598
599Also note that the general behavior of @option{-I} and
600@code{INCLUDE} is pretty much the same as of @option{-I} with
601@code{#include} in the @command{cpp} preprocessor, with regard to
602looking for @file{header.gcc} files and other such things.
603
40746dcc 604This path is also used to search for @file{.mod} files when previously
6de9cd9a
DN
605compiled modules are required by a @code{USE} statement.
606
607@xref{Directory Options,,Options for Directory Search,
608gcc,Using the GNU Compiler Collection (GCC)}, for information on the
609@option{-I} option.
610
6de9cd9a
DN
611@item -M@var{dir}
612@item -J@var{dir}
32864778
DF
613@opindex @code{M}@var{dir}
614@opindex @code{J}@var{dir}
276419d0
BM
615@cindex paths, search
616@cindex module search path
40746dcc 617This option specifies where to put @file{.mod} files for compiled modules.
2d8b59df 618It is also added to the list of directories to searched by an @code{USE}
6de9cd9a
DN
619statement.
620
621The default is the current directory.
622
623@option{-J} is an alias for @option{-M} to avoid conflicts with existing
624GCC options.
276419d0
BM
625
626@item -fintrinsic-modules-path @var{dir}
32864778 627@opindex @code{fintrinsic-modules-path} @var{dir}
276419d0
BM
628@cindex paths, search
629@cindex module search path
630This option specifies the location of pre-compiled intrinsic modules, if
631they are not in the default location expected by the compiler.
6de9cd9a
DN
632@end table
633
70263321 634@node Link Options
a2bef74c 635@section Influencing the linking step
70263321
DF
636@cindex options, linking
637@cindex linking, static
638
639These options come into play when the compiler links object files into an
640executable output file. They are meaningless if the compiler is not doing
641a link step.
642
643@table @gcctabopt
644@item -static-libgfortran
645@opindex @code{static-libgfortran}
646On systems that provide @file{libgfortran} as a shared and a static
647library, this option forces the use of the static version. If no
648shared version of @file{libgfortran} was built when the compiler was
649configured, this option has no effect.
650@end table
651
652
eaa90d25 653@node Runtime Options
a2bef74c 654@section Influencing runtime behavior
e739dfac 655@cindex options, runtime
eaa90d25 656
7fc15ba5 657These options affect the runtime behavior of programs compiled with GNU Fortran.
eaa90d25 658@table @gcctabopt
eaa90d25 659@item -fconvert=@var{conversion}
32864778 660@opindex @code{fconvert=}@var{conversion}
eaa90d25
TK
661Specify the representation of data for unformatted files. Valid
662values for conversion are: @samp{native}, the default; @samp{swap},
663swap between big- and little-endian; @samp{big-endian}, use big-endian
664representation for unformatted files; @samp{little-endian}, use little-endian
665representation for unformatted files.
666
667@emph{This option has an effect only when used in the main program.
668The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
40746dcc 669variable override the default specified by @option{-fconvert}.}
d67ab5ee 670
d67ab5ee 671@item -frecord-marker=@var{length}
32864778 672@opindex @code{frecord-marker=}@var{length}
d67ab5ee 673Specify the length of record markers for unformatted files.
07b3bbf2 674Valid values for @var{length} are 4 and 8. Default is 4.
a2bef74c 675@emph{This is different from previous versions of @command{gfortran}},
07b3bbf2
TK
676which specified a default record marker length of 8 on most
677systems. If you want to read or write files compatible
a2bef74c 678with earlier versions of @command{gfortran}, use @option{-frecord-marker=8}.
07b3bbf2 679
07b3bbf2 680@item -fmax-subrecord-length=@var{length}
32864778 681@opindex @code{fmax-subrecord-length=}@var{length}
07b3bbf2
TK
682Specify the maximum length for a subrecord. The maximum permitted
683value for length is 2147483639, which is also the default. Only
684really useful for use by the gfortran testsuite.
0483c79f
JD
685
686@item -fsign-zero
687@opindex @code{fsign-zero}
688When writing zero values, show the negative sign if the sign bit is set.
689@code{fno-sign-zero} does not print the negative sign of zero values for
690compatibility with F77. Default behavior is to show the negative sign.
eaa90d25
TK
691@end table
692
6de9cd9a 693@node Code Gen Options
a2bef74c 694@section Options for code generation conventions
6de9cd9a
DN
695@cindex code generation, conventions
696@cindex options, code generation
e739dfac 697@cindex options, run-time
6de9cd9a
DN
698
699These machine-independent options control the interface conventions
700used in code generation.
701
702Most of them have both positive and negative forms; the negative form
703of @option{-ffoo} would be @option{-fno-foo}. In the table below, only
704one of the forms is listed---the one which is not the default. You
705can figure out the other form by either removing @option{no-} or adding
706it.
707
6de9cd9a 708@table @gcctabopt
ee5426a4 709@item -fno-automatic
32864778 710@opindex @code{fno-automatic}
e739dfac
DF
711@cindex @code{SAVE} statement
712@cindex statement, @code{SAVE}
1e7de83b
AL
713Treat each program unit (except those marked as RECURSIVE) as if the
714@code{SAVE} statement were specified for every local variable and array
715referenced in it. Does not affect common blocks. (Some Fortran compilers
716provide this option under the name @option{-static} or @option{-save}.)
717The default, which is @option{-fautomatic}, uses the stack for local
718variables smaller than the value given by @option{-fmax-stack-var-size}.
719Use the option @option{-frecursive} to use no static memory.
ee5426a4 720
973ff4c0 721@item -ff2c
e739dfac 722@opindex ff2c
973ff4c0
TS
723@cindex calling convention
724@cindex @command{f2c} calling convention
725@cindex @command{g77} calling convention
726@cindex libf2c calling convention
727Generate code designed to be compatible with code generated
728by @command{g77} and @command{f2c}.
729
730The calling conventions used by @command{g77} (originally implemented
731in @command{f2c}) require functions that return type
732default @code{REAL} to actually return the C type @code{double}, and
733functions that return type @code{COMPLEX} to return the values via an
734extra argument in the calling sequence that points to where to
735store the return value. Under the default GNU calling conventions, such
736functions simply return their results as they would in GNU
8556236b 737C---default @code{REAL} functions return the C type @code{float}, and
973ff4c0 738@code{COMPLEX} functions return the GNU C type @code{complex}.
a226fc2b
TS
739Additionally, this option implies the @option{-fsecond-underscore}
740option, unless @option{-fno-second-underscore} is explicitly requested.
973ff4c0
TS
741
742This does not affect the generation of code that interfaces with
743the @command{libgfortran} library.
744
40746dcc
BM
745@emph{Caution:} It is not a good idea to mix Fortran code compiled with
746@option{-ff2c} with code compiled with the default @option{-fno-f2c}
973ff4c0
TS
747calling conventions as, calling @code{COMPLEX} or default @code{REAL}
748functions between program parts which were compiled with different
749calling conventions will break at execution time.
750
751@emph{Caution:} This will break code which passes intrinsic functions
752of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
40746dcc 753the library implementations use the @option{-fno-f2c} calling conventions.
973ff4c0 754
6de9cd9a 755@item -fno-underscoring
32864778 756@opindex @code{fno-underscoring}
6de9cd9a
DN
757@cindex underscore
758@cindex symbol names, underscores
759@cindex transforming symbol names
760@cindex symbol names, transforming
761Do not transform names of entities specified in the Fortran
762source file by appending underscores to them.
763
7fc15ba5 764With @option{-funderscoring} in effect, GNU Fortran appends one
5724da63
JD
765underscore to external names with no underscores. This is done to ensure
766compatibility with code produced by many UNIX Fortran compilers.
973ff4c0 767
7fc15ba5 768@emph{Caution}: The default behavior of GNU Fortran is
973ff4c0 769incompatible with @command{f2c} and @command{g77}, please use the
b4cbcd1a 770@option{-ff2c} option if you want object files compiled with
7fc15ba5 771GNU Fortran to be compatible with object code created with these
b4cbcd1a 772tools.
6de9cd9a
DN
773
774Use of @option{-fno-underscoring} is not recommended unless you are
7fc15ba5 775experimenting with issues such as integration of GNU Fortran into
6de9cd9a
DN
776existing system environments (vis-a-vis existing libraries, tools, and
777so on).
778
779For example, with @option{-funderscoring}, and assuming other defaults like
40746dcc
BM
780@option{-fcase-lower} and that @code{j()} and @code{max_count()} are
781external functions while @code{my_var} and @code{lvar} are local variables,
6de9cd9a 782a statement like
6de9cd9a
DN
783@smallexample
784I = J() + MAX_COUNT (MY_VAR, LVAR)
785@end smallexample
6de9cd9a
DN
786@noindent
787is implemented as something akin to:
6de9cd9a
DN
788@smallexample
789i = j_() + max_count__(&my_var__, &lvar);
790@end smallexample
791
792With @option{-fno-underscoring}, the same statement is implemented as:
793
794@smallexample
795i = j() + max_count(&my_var, &lvar);
796@end smallexample
797
798Use of @option{-fno-underscoring} allows direct specification of
7fc15ba5 799user-defined names while debugging and when interfacing GNU Fortran
6de9cd9a
DN
800code with other languages.
801
802Note that just because the names match does @emph{not} mean that the
7fc15ba5 803interface implemented by GNU Fortran for an external name matches the
6de9cd9a 804interface implemented by some other language for that same name.
7fc15ba5 805That is, getting code produced by GNU Fortran to link to code produced
6de9cd9a
DN
806by some other compiler using this or any other method can be only a
807small part of the overall solution---getting the code generated by
808both compilers to agree on issues other than naming can require
809significant effort, and, unlike naming disagreements, linkers normally
810cannot detect disagreements in these other areas.
811
812Also, note that with @option{-fno-underscoring}, the lack of appended
813underscores introduces the very real possibility that a user-defined
814external name will conflict with a name in a system library, which
815could make finding unresolved-reference bugs quite difficult in some
816cases---they might occur at program run time, and show up only as
817buggy behavior at run time.
818
7fc15ba5 819In future versions of GNU Fortran we hope to improve naming and linking
6de9cd9a
DN
820issues so that debugging always involves using the names as they appear
821in the source, even if the names as seen by the linker are mangled to
822prevent accidental linking between procedures with incompatible
823interfaces.
824
973ff4c0 825@item -fsecond-underscore
32864778 826@opindex @code{fsecond-underscore}
6de9cd9a
DN
827@cindex underscore
828@cindex symbol names, underscores
829@cindex transforming symbol names
830@cindex symbol names, transforming
973ff4c0
TS
831@cindex @command{f2c} calling convention
832@cindex @command{g77} calling convention
833@cindex libf2c calling convention
7fc15ba5
BM
834By default, GNU Fortran appends an underscore to external
835names. If this option is used GNU Fortran appends two
973ff4c0 836underscores to names with underscores and one underscore to external names
7fc15ba5 837with no underscores. GNU Fortran also appends two underscores to
973ff4c0
TS
838internal names with underscores to avoid naming collisions with external
839names.
6de9cd9a
DN
840
841This option has no effect if @option{-fno-underscoring} is
973ff4c0 842in effect. It is implied by the @option{-ff2c} option.
6de9cd9a 843
40746dcc 844Otherwise, with this option, an external name such as @code{MAX_COUNT}
6de9cd9a 845is implemented as a reference to the link-time external symbol
40746dcc 846@code{max_count__}, instead of @code{max_count_}. This is required
973ff4c0
TS
847for compatibility with @command{g77} and @command{f2c}, and is implied
848by use of the @option{-ff2c} option.
6de9cd9a 849
6de9cd9a 850@item -fbounds-check
32864778 851@opindex @code{fbounds-check}
e739dfac 852@cindex array, bounds checking
6de9cd9a
DN
853@cindex bounds checking
854@cindex range checking
6de9cd9a
DN
855@cindex subscript checking
856@cindex checking subscripts
857Enable generation of run-time checks for array subscripts
858and against the declared minimum and maximum values. It also
859checks array indices for assumed and deferred
860shape arrays against the actual allocated bounds.
861
18fe404f
TK
862Some checks require that @option{-fbounds-check} is set for
863the compilation of the main probram.
864
8370304d 865In the future this may also include other forms of checking, e.g., checking
6de9cd9a
DN
866substring references.
867
6de9cd9a 868@item -fmax-stack-var-size=@var{n}
32864778 869@opindex @code{fmax-stack-var-size}
6de9cd9a 870This option specifies the size in bytes of the largest array that will be put
1e7de83b
AL
871on the stack; if the size is exceeded static memory is used (except in
872procedures marked as RECURSIVE). Use the option @option{-frecursive} to
873allow for recursive procedures which do not have a RECURSIVE attribute or
874for parallel programs. Use @option{-fno-automatic} to never use the stack.
6de9cd9a
DN
875
876This option currently only affects local arrays declared with constant
877bounds, and may not apply to all character variables.
7fc15ba5 878Future versions of GNU Fortran may improve this behavior.
6de9cd9a
DN
879
880The default value for @var{n} is 32768.
881
5139e1e9 882@item -fpack-derived
32864778
DF
883@opindex @code{fpack-derived}
884@cindex structure packing
7fc15ba5 885This option tells GNU Fortran to pack derived type members as closely as
2d8b59df 886possible. Code compiled with this option is likely to be incompatible
6de9cd9a
DN
887with code compiled without this option, and may execute slower.
888
6de9cd9a 889@item -frepack-arrays
32864778
DF
890@opindex @code{frepack-arrays}
891@cindex repacking arrays
7fc15ba5 892In some circumstances GNU Fortran may pass assumed shape array
02712c16 893sections via a descriptor describing a noncontiguous area of memory.
6de9cd9a
DN
894This option adds code to the function prologue to repack the data into
895a contiguous block at runtime.
896
897This should result in faster accesses to the array. However it can introduce
898significant overhead to the function call, especially when the passed data
02712c16 899is noncontiguous.
a63dad5b 900
a63dad5b 901@item -fshort-enums
32864778 902@opindex @code{fshort-enums}
a63dad5b 903This option is provided for interoperability with C code that was
4ba96c02 904compiled with the @option{-fshort-enums} option. It will make
7fc15ba5 905GNU Fortran choose the smallest @code{INTEGER} kind a given
a63dad5b 906enumerator set will fit in, and give all its enumerators this kind.
5a0aad31 907
5a0aad31 908@item -fexternal-blas
32864778 909@opindex @code{fexternal-blas}
a2bef74c
DF
910This option will make @command{gfortran} generate calls to BLAS functions
911for some matrix operations like @code{MATMUL}, instead of using our own
5a0aad31 912algorithms, if the size of the matrices involved is larger than a given
4ba96c02 913limit (see @option{-fblas-matmul-limit}). This may be profitable if an
5a0aad31
FXC
914optimized vendor BLAS library is available. The BLAS library will have
915to be specified at link time.
916
5a0aad31 917@item -fblas-matmul-limit=@var{n}
32864778 918@opindex @code{fblas-matmul-limit}
4ba96c02 919Only significant when @option{-fexternal-blas} is in effect.
5a0aad31
FXC
920Matrix multiplication of matrices with size larger than (or equal to) @var{n}
921will be performed by calls to BLAS functions, while others will be
922handled by @command{gfortran} internal algorithms. If the matrices
923involved are not square, the size comparison is performed using the
924geometric mean of the dimensions of the argument and result matrices.
925
926The default value for @var{n} is 30.
927
1e7de83b
AL
928@item -frecursive
929@opindex @code{frecursive}
930Allow indirect recursion by forcing all local arrays to be allocated
931on the stack. This flag cannot be used together with
932@option{-fmax-stack-var-size=} or @option{-fno-automatic}.
933
6de9cd9a
DN
934@end table
935
936@xref{Code Gen Options,,Options for Code Generation Conventions,
937gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
938offered by the GBE
7fc15ba5 939shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
6de9cd9a
DN
940
941
942@c man end
943
944@node Environment Variables
a2bef74c 945@section Environment variables affecting @command{gfortran}
e739dfac 946@cindex environment variable
6de9cd9a
DN
947
948@c man begin ENVIRONMENT
949
7fc15ba5 950The @command{gfortran} compiler currently does not make use of any environment
6de9cd9a
DN
951variables to control its operation above and beyond those
952that affect the operation of @command{gcc}.
953
954@xref{Environment Variables,,Environment Variables Affecting GCC,
955gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
956variables.
957
eaa90d25 958@xref{Runtime}, for environment variables that affect the
7fc15ba5 959run-time behavior of programs compiled with GNU Fortran.
6de9cd9a 960@c man end
This page took 1.163393 seconds and 5 git commands to generate.