1 @c Copyright (C) 2004, 2005, 2006, 2007, 2008
2 @c Free Software Foundation, Inc.
3 @c This is part of the GNU Fortran manual.
4 @c For copying conditions, see the file gfortran.texi.
8 Copyright @copyright{} 2004, 2005, 2006, 2007
9 Free Software Foundation, Inc.
11 Permission is granted to copy, distribute and/or modify this document
12 under the terms of the GNU Free Documentation License, Version 1.2 or
13 any later version published by the Free Software Foundation; with the
14 Invariant Sections being ``GNU General Public License'' and ``Funding
15 Free Software'', the Front-Cover texts being (a) (see below), and with
16 the Back-Cover Texts being (b) (see below). A copy of the license is
17 included in the gfdl(7) man page.
19 (a) The FSF's Front-Cover Text is:
23 (b) The FSF's Back-Cover Text is:
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.
29 @c Set file name and title for the man page.
31 @settitle GNU Fortran compiler.
33 gfortran [@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{}
42 Only the most useful options are listed here; see below for the
46 gpl(7), gfdl(7), fsf-funding(7),
47 cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
48 and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
49 @file{ld}, @file{binutils} and @file{gdb}.
52 For instructions on reporting bugs, see
56 See the Info entry for @command{gfortran} for contributors to GCC and
61 @node Invoking GNU Fortran
62 @chapter GNU Fortran Command Options
63 @cindex GNU Fortran command options
64 @cindex command options
65 @cindex options, @command{gfortran} command
67 @c man begin DESCRIPTION
69 The @command{gfortran} command supports all the options supported by the
70 @command{gcc} command. Only options specific to GNU Fortran are documented here.
72 @xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
73 Collection (GCC)}, for information
74 on the non-Fortran-specific aspects of the @command{gcc} command (and,
75 therefore, the @command{gfortran} command).
77 @cindex options, negative forms
78 All GCC and GNU Fortran options
79 are accepted both by @command{gfortran} and by @command{gcc}
80 (as well as any other drivers built at the same time,
81 such as @command{g++}),
82 since adding GNU Fortran to the GCC distribution
83 enables acceptance of GNU Fortran options
84 by all of the relevant drivers.
86 In some cases, options have positive and negative forms;
87 the negative form of @option{-ffoo} would be @option{-fno-foo}.
88 This manual documents only one of these two forms, whichever
89 one is not the default.
93 * Option Summary:: Brief list of all @command{gfortran} options,
95 * Fortran Dialect Options:: Controlling the variant of Fortran language
97 * Preprocessing Options:: Enable and customize preprocessing.
98 * Error and Warning Options:: How picky should the compiler be?
99 * Debugging Options:: Symbol tables, measurements, and debugging dumps.
100 * Directory Options:: Where to find module files
101 * Link Options :: Influencing the linking step
102 * Runtime Options:: Influencing runtime behavior
103 * Code Gen Options:: Specifying conventions for function calls, data layout
105 * Environment Variables:: Environment variables that affect @command{gfortran}.
109 @section Option summary
113 Here is a summary of all the options specific to GNU Fortran, grouped
114 by type. Explanations are in the following sections.
117 @item Fortran Language Options
118 @xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
119 @gccoptlist{-fall-intrinsics -ffree-form -fno-fixed-form @gol
120 -fdollar-ok -fimplicit-none -fmax-identifier-length @gol
121 -std=@var{std} -fd-lines-as-code -fd-lines-as-comments @gol
122 -ffixed-line-length-@var{n} -ffixed-line-length-none @gol
123 -ffree-line-length-@var{n} -ffree-line-length-none @gol
124 -fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 @gol
125 -fcray-pointer -fopenmp -fno-range-check -fbackslash -fmodule-private}
127 @item Preprocessing Options
128 @xref{Preprocessing Options,,Enable and customize preprocessing}.
129 @gccoptlist{-cpp -dD -dI -dM -dN -dU -fworking-directory @gol
130 -imultilib @var{dir} -iprefix @var{file} -isysroot @var{dir} @gol
131 -iquote -isystem @var{dir} -nocpp -nostdinc -undef @gol
132 -A@var{question}=@var{answer} -A-@var{question}@r{[}=@var{answer}@r{]} @gol
133 -C -CC -D@var{macro}@r{[}=@var{defn}@r{]} -U@var{macro} -H -P}
135 @item Error and Warning Options
136 @xref{Error and Warning Options,,Options to request or suppress errors
138 @gccoptlist{-fmax-errors=@var{n} @gol
139 -fsyntax-only -pedantic -pedantic-errors @gol
140 -Wall -Waliasing -Wampersand -Wcharacter-truncation -Wconversion @gol
141 -Wimplicit-interface -Wline-truncation -Wnonstd-intrinsics -Wsurprising @gol
142 -Wno-tabs -Wunderflow -Wunused-parameter}
144 @item Debugging Options
145 @xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
146 @gccoptlist{-fdump-parse-tree -ffpe-trap=@var{list} @gol
147 -fdump-core -fbacktrace}
149 @item Directory Options
150 @xref{Directory Options,,Options for directory search}.
151 @gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} -fintrinsic-modules-path @var{dir}}
154 @xref{Link Options,,Options for influencing the linking step}.
155 @gccoptlist{-static-libgfortran}
157 @item Runtime Options
158 @xref{Runtime Options,,Options for influencing runtime behavior}.
159 @gccoptlist{-fconvert=@var{conversion} -frecord-marker=@var{length} @gol
160 -fmax-subrecord-length=@var{length} -fsign-zero}
162 @item Code Generation Options
163 @xref{Code Gen Options,,Options for code generation conventions}.
164 @gccoptlist{-fno-automatic -ff2c -fno-underscoring
165 -fsecond-underscore @gol
166 -fbounds-check -fmax-stack-var-size=@var{n} @gol
167 -fpack-derived -frepack-arrays -fshort-enums -fexternal-blas @gol
168 -fblas-matmul-limit=@var{n} -frecursive -finit-local-zero @gol
169 -finit-integer=@var{n} -finit-real=@var{<zero|inf|-inf|nan>} @gol
170 -finit-logical=@var{<true|false>} -finit-character=@var{n}}
174 * Fortran Dialect Options:: Controlling the variant of Fortran language
176 * Preprocessing Options:: Enable and customize preprocessing.
177 * Error and Warning Options:: How picky should the compiler be?
178 * Debugging Options:: Symbol tables, measurements, and debugging dumps.
179 * Directory Options:: Where to find module files
180 * Link Options :: Influencing the linking step
181 * Runtime Options:: Influencing runtime behavior
182 * Code Gen Options:: Specifying conventions for function calls, data layout
186 @node Fortran Dialect Options
187 @section Options controlling Fortran dialect
188 @cindex dialect options
189 @cindex language, dialect options
190 @cindex options, dialect
192 The following options control the details of the Fortran dialect
193 accepted by the compiler:
198 @opindex @code{ffree-form}
199 @opindex @code{fno-fixed-form}
200 @cindex options, fortran dialect
201 @cindex file format, free
202 @cindex file format, fixed
203 Specify the layout used by the source file. The free form layout
204 was introduced in Fortran 90. Fixed form was traditionally used in
205 older Fortran programs. When neither option is specified, the source
206 form is determined by the file extension.
208 @item -fall-intrinsics
209 @opindex @code{fall-intrinsics}
210 Accept all of the intrinsic procedures provided in libgfortran
211 without regard to the setting of @option{-std}. In particular,
212 this option can be quite useful with @option{-std=f95}. Additionally,
213 @command{gfortran} will ignore @option{-Wnonstd-intrinsics}.
215 @item -fd-lines-as-code
216 @item -fd-lines-as-comments
217 @opindex @code{fd-lines-as-code}
218 @opindex @code{fd-lines-as-comments}
219 Enable special treatment for lines beginning with @code{d} or @code{D}
220 in fixed form sources. If the @option{-fd-lines-as-code} option is
221 given they are treated as if the first column contained a blank. If the
222 @option{-fd-lines-as-comments} option is given, they are treated as
225 @item -fdefault-double-8
226 @opindex @code{fdefault-double-8}
227 Set the @code{DOUBLE PRECISION} type to an 8 byte wide type.
229 @item -fdefault-integer-8
230 @opindex @code{fdefault-integer-8}
231 Set the default integer and logical types to an 8 byte wide type.
232 Do nothing if this is already the default.
234 @item -fdefault-real-8
235 @opindex @code{fdefault-real-8}
236 Set the default real type to an 8 byte wide type.
237 Do nothing if this is already the default.
240 @opindex @code{fdollar-ok}
243 @cindex character set
244 Allow @samp{$} as a valid character in a symbol name.
247 @opindex @code{backslash}
249 @cindex escape characters
250 Change the interpretation of backslashes in string literals from a single
251 backslash character to ``C-style'' escape characters. The following
252 combinations are expanded @code{\a}, @code{\b}, @code{\f}, @code{\n},
253 @code{\r}, @code{\t}, @code{\v}, @code{\\}, and @code{\0} to the ASCII
254 characters alert, backspace, form feed, newline, carriage return,
255 horizontal tab, vertical tab, backslash, and NUL, respectively.
256 Additionally, @code{\x}@var{nn}, @code{\u}@var{nnnn} and
257 @code{\U}@var{nnnnnnnn} (where each @var{n} is a hexadecimal digit) are
258 translated into the Unicode characters corresponding to the specified code
259 points. All other combinations of a character preceded by \ are
262 @item -fmodule-private
263 @opindex @code{fmodule-private}
264 @cindex module entities
266 Set the default accessibility of module entities to @code{PRIVATE}.
267 Use-associated entities will not be accessible unless they are explicitly
268 declared as @code{PUBLIC}.
270 @item -ffixed-line-length-@var{n}
271 @opindex @code{ffixed-line-length-}@var{n}
272 @cindex file format, fixed
273 Set column after which characters are ignored in typical fixed-form
274 lines in the source file, and through which spaces are assumed (as
275 if padded to that length) after the ends of short fixed-form lines.
277 Popular values for @var{n} include 72 (the
278 standard and the default), 80 (card image), and 132 (corresponding
279 to ``extended-source'' options in some popular compilers).
280 @var{n} may also be @samp{none}, meaning that the entire line is meaningful
281 and that continued character constants never have implicit spaces appended
282 to them to fill out the line.
283 @option{-ffixed-line-length-0} means the same thing as
284 @option{-ffixed-line-length-none}.
286 @item -ffree-line-length-@var{n}
287 @opindex @code{ffree-line-length-}@var{n}
288 @cindex file format, free
289 Set column after which characters are ignored in typical free-form
290 lines in the source file. The default value is 132.
291 @var{n} may be @samp{none}, meaning that the entire line is meaningful.
292 @option{-ffree-line-length-0} means the same thing as
293 @option{-ffree-line-length-none}.
295 @item -fmax-identifier-length=@var{n}
296 @opindex @code{fmax-identifier-length=}@var{n}
297 Specify the maximum allowed identifier length. Typical values are
298 31 (Fortran 95) and 63 (Fortran 2003 and Fortran 2008).
300 @item -fimplicit-none
301 @opindex @code{fimplicit-none}
302 Specify that no implicit typing is allowed, unless overridden by explicit
303 @code{IMPLICIT} statements. This is the equivalent of adding
304 @code{implicit none} to the start of every procedure.
307 @opindex @code{fcray-pointer}
308 Enable the Cray pointer extension, which provides C-like pointer
312 @opindex @code{fopenmp}
314 Enable the OpenMP extensions. This includes OpenMP @code{!$omp} directives
316 and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
317 @code{!$} conditional compilation sentinels in free form
318 and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form,
319 and when linking arranges for the OpenMP runtime library to be linked
320 in. The option @option{-fopenmp} implies @option{-frecursive}.
322 @item -fno-range-check
323 @opindex @code{frange-check}
324 Disable range checking on results of simplification of constant
325 expressions during compilation. For example, GNU Fortran will give
326 an error at compile time when simplifying @code{a = 1. / 0}.
327 With this option, no error will be given and @code{a} will be assigned
328 the value @code{+Infinity}. If an expression evaluates to a value
329 outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}],
330 then the expression will be replaced by @code{-Inf} or @code{+Inf}
332 Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
333 on most systems, but with @option{-fno-range-check} the value will
334 ``wrap around'' and @code{i} will be initialized to @math{-1} instead.
337 @opindex @code{std=}@var{std} option
338 Specify the standard to which the program is expected to conform, which
339 may be one of @samp{f95}, @samp{f2003}, @samp{f2008}, @samp{gnu}, or
340 @samp{legacy}. The default value for @var{std} is @samp{gnu}, which
341 specifies a superset of the Fortran 95 standard that includes all of the
342 extensions supported by GNU Fortran, although warnings will be given for
343 obsolete extensions not recommended for use in new code. The
344 @samp{legacy} value is equivalent but without the warnings for obsolete
345 extensions, and may be useful for old non-standard programs. The
346 @samp{f95}, @samp{f2003} and @samp{f2008} values specify strict
347 conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards,
348 respectively; errors are given for all extensions beyond the relevant
349 language standard, and warnings are given for the Fortran 77 features
350 that are permitted but obsolescent in later standards.
354 @node Preprocessing Options
355 @section Enable and customize preprocessing
357 @cindex options, preprocessor
360 Preprocessor related options. See section
361 @ref{Preprocessing and conditional compilation} for more detailed
362 information on preprocessing in @command{gfortran}.
369 @cindex preprocessor, enable
370 @cindex preprocessor, disable
371 Enable preprocessing. The preprocessor is automatically invoked if
372 the file extension is @file{.fpp}, @file{.FPP}, @file{.F}, @file{.FOR},
373 @file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
374 this option to manually enable preprocessing of any kind of Fortran file.
376 To disable preprocessing of files with any of the above listed extensions,
377 use the negative form: @option{-nocpp}.
379 The preprocessor is run in traditional mode, be aware that any
380 restrictions of the file-format, e.g. fixed-form line width,
381 apply for preprocessed output as well.
385 @cindex preprocessor, debugging
386 @cindex debugging, preprocessor
387 Instead of the normal output, generate a list of @code{'#define'}
388 directives for all the macros defined during the execution of the
389 preprocessor, including predefined macros. This gives you a way
390 of finding out what is predefined in your version of the preprocessor.
391 Assuming you have no file @file{foo.f90}, the command
393 touch foo.f90; gfortran -cpp -dM foo.f90
395 will show all the predefined macros.
399 @cindex preprocessor, debugging
400 @cindex debugging, preprocessor
401 Like @option{-dM} except in two respects: it does not include the
402 predefined macros, and it outputs both the @code{#define} directives
403 and the result of preprocessing. Both kinds of output go to the
404 standard output file.
408 @cindex preprocessor, debugging
409 @cindex debugging, preprocessor
410 Like @option{-dD}, but emit only the macro names, not their expansions.
414 @cindex preprocessor, debugging
415 @cindex debugging, preprocessor
416 Like @option{dD} except that only macros that are expanded, or whose
417 definedness is tested in preprocessor directives, are output; the
418 output is delayed until the use or test of the macro; and @code{'#undef'}
419 directives are also output for macros tested but undefined at the time.
423 @cindex preprocessor, debugging
424 @cindex debugging, preprocessor
425 Output @code{'#include'} directives in addition to the result
428 @item -fworking-directory
429 @opindex @code{fworking-directory}
430 @cindex preprocessor, working directory
431 Enable generation of linemarkers in the preprocessor output that will
432 let the compiler know the current working directory at the time of
433 preprocessing. When this option is enabled, the preprocessor will emit,
434 after the initial linemarker, a second linemarker with the current
435 working directory followed by two slashes. GCC will use this directory,
436 when it's present in the preprocessed input, as the directory emitted
437 as the current working directory in some debugging information formats.
438 This option is implicitly enabled if debugging information is enabled,
439 but this can be inhibited with the negated form
440 @option{-fno-working-directory}. If the @option{-P} flag is present
441 in the command line, this option has no effect, since no @code{#line}
442 directives are emitted whatsoever.
444 @item -imultilib @var{dir}
445 @opindex @code{imultilib @var{dir}}
446 @cindex preprocessing, include path
447 Use @var{dir} as a subdirectory of the directory containing target-specific
450 @item -iprefix @var{prefix}
451 @opindex @code{iprefix @var{prefix}}
452 @cindex preprocessing, include path
453 Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
454 options. If the @var{prefix} represents a directory, you should include
455 the final @code{'/'}.
457 @item -isysroot @var{dir}
458 @opindex @code{isysroot @var{dir}}
459 @cindex preprocessing, include path
460 This option is like the @option{--sysroot} option, but applies only to
461 header files. See the @option{--sysroot} option for more information.
463 @item -iquote @var{dir}
464 @opindex @code{iquote @var{dir}}
465 @cindex preprocessing, include path
466 Search @var{dir} only for header files requested with @code{#include "file"};
467 they are not searched for @code{#include <file>}, before all directories
468 specified by @option{-I} and before the standard system directories. If
469 @var{dir} begins with @code{=}, then the @code{=} will be replaced by the
470 sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
472 @item -isystem @var{dir}
473 @opindex @code{isystem @var{dir}}
474 @cindex preprocessing, include path
475 Search @var{dir} for header files, after all directories specified by
476 @option{-I} but before the standard system directories. Mark it as a
477 system directory, so that it gets the same special treatment as is
478 applied to the standard system directories. If @var{dir} begins with
479 @code{=}, then the @code{=} will be replaced by the sysroot prefix;
480 see @option{--sysroot} and @option{-isysroot}.
483 @opindex @code{nostdinc}
484 Do not search the standard system directories for header files. Only
485 the directories you have specified with @option{-I} options (and the
486 directory of the current file, if appropriate) are searched.
489 @opindex @code{undef}
490 Do not predefine any system-specific or GCC-specific macros.
491 The standard predefined macros remain defined.
493 @item -A@var{predicate}=@var{answer}
494 @opindex @code{A@var{predicate}=@var{answer}}
495 @cindex preprocessing, assertation
496 Make an assertion with the predicate @var{predicate} and answer @var{answer}.
497 This form is preferred to the older form -A predicate(answer), which is still
498 supported, because it does not use shell special characters.
500 @item -A-@var{predicate}=@var{answer}
501 @opindex @code{A-@var{predicate}=@var{answer}}
502 @cindex preprocessing, assertation
503 Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
507 @cindex preprocessing, keep comments
508 Do not discard comments. All comments are passed through to the output
509 file, except for comments in processed directives, which are deleted
510 along with the directive.
512 You should be prepared for side effects when using @option{-C}; it causes
513 the preprocessor to treat comments as tokens in their own right. For example,
514 comments appearing at the start of what would be a directive line have the
515 effect of turning that line into an ordinary source line, since the first
516 token on the line is no longer a @code{'#'}.
518 Warning: this currently handles C-Style comments only. The preprocessor
519 does not yet recognize Fortran-style comments.
523 @cindex preprocessing, keep comments
524 Do not discard comments, including during macro expansion. This is like
525 @option{-C}, except that comments contained within macros are also passed
526 through to the output file where the macro is expanded.
528 In addition to the side-effects of the @option{-C} option, the @option{-CC}
529 option causes all C++-style comments inside a macro to be converted to C-style
530 comments. This is to prevent later use of that macro from inadvertently
531 commenting out the remainder of the source line. The @option{-CC} option
532 is generally used to support lint comments.
534 Warning: this currently handles C- and C++-Style comments only. The
535 preprocessor does not yet recognize Fortran-style comments.
538 @opindex @code{D@var{name}}
539 @cindex preprocessing, define macros
540 Predefine name as a macro, with definition @code{1}.
542 @item -D@var{name}=@var{definition}
543 @opindex @code{D@var{name}=@var{definition}}
544 @cindex preprocessing, define macros
545 The contents of @var{definition} are tokenized and processed as if they
546 appeared during translation phase three in a @code{'#define'} directive.
547 In particular, the definition will be truncated by embedded newline
550 If you are invoking the preprocessor from a shell or shell-like program
551 you may need to use the shell's quoting syntax to protect characters such
552 as spaces that have a meaning in the shell syntax.
554 If you wish to define a function-like macro on the command line, write
555 its argument list with surrounding parentheses before the equals sign
556 (if any). Parentheses are meaningful to most shells, so you will need
557 to quote the option. With sh and csh, @code{-D'name(args...)=definition'}
560 @option{-D} and @option{-U} options are processed in the order they are
561 given on the command line. All -imacros file and -include file options
562 are processed after all -D and -U options.
566 Print the name of each header file used, in addition to other normal
567 activities. Each name is indented to show how deep in the @code{'#include'}
572 @cindex preprocessing, no linemarkers
573 Inhibit generation of linemarkers in the output from the preprocessor.
574 This might be useful when running the preprocessor on something that
575 is not C code, and will be sent to a program which might be confused
579 @opindex @code{U@var{name}}
580 @cindex preprocessing, undefine macros
581 Cancel any previous definition of @var{name}, either built in or provided
582 with a @option{-D} option.
586 @node Error and Warning Options
587 @section Options to request or suppress errors and warnings
588 @cindex options, warnings
589 @cindex options, errors
590 @cindex warnings, suppressing
591 @cindex messages, error
592 @cindex messages, warning
593 @cindex suppressing warnings
595 Errors are diagnostic messages that report that the GNU Fortran compiler
596 cannot compile the relevant piece of source code. The compiler will
597 continue to process the program in an attempt to report further errors
598 to aid in debugging, but will not produce any compiled output.
600 Warnings are diagnostic messages that report constructions which
601 are not inherently erroneous but which are risky or suggest there is
602 likely to be a bug in the program. Unless @option{-Werror} is specified,
603 they do not prevent compilation of the program.
605 You can request many specific warnings with options beginning @option{-W},
606 for example @option{-Wimplicit} to request warnings on implicit
607 declarations. Each of these specific warning options also has a
608 negative form beginning @option{-Wno-} to turn off warnings;
609 for example, @option{-Wno-implicit}. This manual lists only one of the
610 two forms, whichever is not the default.
612 These options control the amount and kinds of errors and warnings produced
616 @item -fmax-errors=@var{n}
617 @opindex @code{fmax-errors=}@var{n}
618 @cindex errors, limiting
619 Limits the maximum number of error messages to @var{n}, at which point
620 GNU Fortran bails out rather than attempting to continue processing the
621 source code. If @var{n} is 0, there is no limit on the number of error
625 @opindex @code{fsyntax-only}
626 @cindex syntax checking
627 Check the code for syntax errors, but don't actually compile it. This
628 will generate module files for each module present in the code, but no
632 @opindex @code{pedantic}
633 Issue warnings for uses of extensions to Fortran 95.
634 @option{-pedantic} also applies to C-language constructs where they
635 occur in GNU Fortran source files, such as use of @samp{\e} in a
636 character constant within a directive like @code{#include}.
638 Valid Fortran 95 programs should compile properly with or without
640 However, without this option, certain GNU extensions and traditional
641 Fortran features are supported as well.
642 With this option, many of them are rejected.
644 Some users try to use @option{-pedantic} to check programs for conformance.
645 They soon find that it does not do quite what they want---it finds some
646 nonstandard practices, but not all.
647 However, improvements to GNU Fortran in this area are welcome.
649 This should be used in conjunction with @option{-std=f95},
650 @option{-std=f2003} or @option{-std=f2008}.
652 @item -pedantic-errors
653 @opindex @code{pedantic-errors}
654 Like @option{-pedantic}, except that errors are produced rather than
660 @cindex warnings, all
661 Enables commonly used warning options pertaining to usage that
662 we recommend avoiding and that we believe are easy to avoid.
663 This currently includes @option{-Waliasing},
664 @option{-Wampersand}, @option{-Wsurprising}, @option{-Wnonstd-intrinsics},
665 @option{-Wno-tabs}, and @option{-Wline-truncation}.
668 @opindex @code{Waliasing}
670 @cindex warnings, aliasing
671 Warn about possible aliasing of dummy arguments. Specifically, it warns
672 if the same actual argument is associated with a dummy argument with
673 @code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
674 with an explicit interface.
676 The following example will trigger the warning.
680 integer, intent(in) :: a
681 integer, intent(out) :: b
690 @opindex @code{Wampersand}
691 @cindex warnings, ampersand
693 Warn about missing ampersand in continued character constants. The warning is
694 given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95},
695 @option{-std=f2003} and @option{-std=f2008}. Note: With no ampersand
696 given in a continued character constant, GNU Fortran assumes continuation
697 at the first non-comment, non-whitespace character after the ampersand
698 that initiated the continuation.
700 @item -Wcharacter-truncation
701 @opindex @code{Wcharacter-truncation}
702 @cindex warnings, character truncation
703 Warn when a character assignment will truncate the assigned string.
705 @item -Wline-truncation
706 @opindex @code{Wline-truncation}
707 @cindex warnings, line truncation
708 Warn when a source code line will be truncated.
711 @opindex @code{Wconversion}
712 @cindex warnings, conversion
714 Warn about implicit conversions between different types.
716 @item -Wimplicit-interface
717 @opindex @code{Wimplicit-interface}
718 @cindex warnings, implicit interface
719 Warn if a procedure is called without an explicit interface.
720 Note this only checks that an explicit interface is present. It does not
721 check that the declared interfaces are consistent across program units.
723 @item -Wnonstd-intrinsics
724 @opindex @code{Wnonstd-intrinsics}
725 @cindex warnings, non-standard intrinsics
726 Warn if the user tries to use an intrinsic that does not belong to the
727 standard the user has chosen via the @option{-std} option.
730 @opindex @code{Wsurprising}
731 @cindex warnings, suspicious code
732 Produce a warning when ``suspicious'' code constructs are encountered.
733 While technically legal these usually indicate that an error has been made.
735 This currently produces a warning under the following circumstances:
739 An INTEGER SELECT construct has a CASE that can never be matched as its
740 lower value is greater than its upper value.
743 A LOGICAL SELECT construct has three CASE statements.
746 A TRANSFER specifies a source that is shorter than the destination.
750 @opindex @code{Wtabs}
751 @cindex warnings, tabs
753 By default, tabs are accepted as whitespace, but tabs are not members
754 of the Fortran Character Set. For continuation lines, a tab followed
755 by a digit between 1 and 9 is supported. @option{-Wno-tabs} will cause
756 a warning to be issued if a tab is encountered. Note, @option{-Wno-tabs}
757 is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
758 @option{-std=f2008} and @option{-Wall}.
761 @opindex @code{Wunderflow}
762 @cindex warnings, underflow
764 Produce a warning when numerical constant expressions are
765 encountered, which yield an UNDERFLOW during compilation.
767 @item -Wunused-parameter
768 @opindex @code{Wunused-parameter}
769 @cindex warnings, unused parameter
770 @cindex unused parameter
771 Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
772 @command{gfortran}'s implementation of this option does not warn
773 about unused dummy arguments, but about unused @code{PARAMETER} values.
774 @option{-Wunused-parameter} is not included in @option{-Wall} but is
775 implied by @option{-Wall -Wextra}.
778 @opindex @code{Werror}
779 @cindex warnings, to errors
780 Turns all warnings into errors.
783 @xref{Error and Warning Options,,Options to Request or Suppress Errors and
784 Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
785 more options offered by the GBE shared by @command{gfortran}, @command{gcc}
786 and other GNU compilers.
788 Some of these have no effect when compiling programs written in Fortran.
790 @node Debugging Options
791 @section Options for debugging your program or GNU Fortran
792 @cindex options, debugging
793 @cindex debugging information options
795 GNU Fortran has various special options that are used for debugging
796 either your program or the GNU Fortran compiler.
799 @item -fdump-parse-tree
800 @opindex @code{fdump-parse-tree}
801 Output the internal parse tree before starting code generation. Only
802 really useful for debugging the GNU Fortran compiler itself.
804 @item -ffpe-trap=@var{list}
805 @opindex @code{ffpe-trap=}@var{list}
806 Specify a list of IEEE exceptions when a Floating Point Exception
807 (FPE) should be raised. On most systems, this will result in a SIGFPE
808 signal being sent and the program being interrupted, producing a core
809 file useful for debugging. @var{list} is a (possibly empty) comma-separated
810 list of the following IEEE exceptions: @samp{invalid} (invalid floating
811 point operation, such as @code{SQRT(-1.0)}), @samp{zero} (division by
812 zero), @samp{overflow} (overflow in a floating point operation),
813 @samp{underflow} (underflow in a floating point operation),
814 @samp{precision} (loss of precision during operation) and @samp{denormal}
815 (operation produced a denormal value).
817 Some of the routines in the Fortran runtime library, like
818 @samp{CPU_TIME}, are likely to to trigger floating point exceptions when
819 @code{ffpe-trap=precision} is used. For this reason, the use of
820 @code{ffpe-trap=precision} is not recommended.
823 @opindex @code{fbacktrace}
826 Specify that, when a runtime error is encountered or a deadly signal is
827 emitted (segmentation fault, illegal instruction, bus error or
828 floating-point exception), the Fortran runtime
829 library should output a backtrace of the error. This option
830 only has influence for compilation of the Fortran main program.
834 @opindex @code{fdump-core}
835 Request that a core-dump file is written to disk when a runtime error
836 is encountered on systems that support core dumps. This option is
837 only effective for the compilation of the Fortran main program.
840 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
841 gcc,Using the GNU Compiler Collection (GCC)}, for more information on
844 @node Directory Options
845 @section Options for directory search
846 @cindex directory, options
847 @cindex options, directory search
849 @cindex INCLUDE directive
850 @cindex directive, INCLUDE
851 These options affect how GNU Fortran searches
852 for files specified by the @code{INCLUDE} directive and where it searches
853 for previously compiled modules.
855 It also affects the search paths used by @command{cpp} when used to preprocess
860 @opindex @code{I}@var{dir}
861 @cindex directory, search paths for inclusion
862 @cindex inclusion, directory search paths for
863 @cindex search paths, for included files
864 @cindex paths, search
865 @cindex module search path
866 These affect interpretation of the @code{INCLUDE} directive
867 (as well as of the @code{#include} directive of the @command{cpp}
870 Also note that the general behavior of @option{-I} and
871 @code{INCLUDE} is pretty much the same as of @option{-I} with
872 @code{#include} in the @command{cpp} preprocessor, with regard to
873 looking for @file{header.gcc} files and other such things.
875 This path is also used to search for @file{.mod} files when previously
876 compiled modules are required by a @code{USE} statement.
878 @xref{Directory Options,,Options for Directory Search,
879 gcc,Using the GNU Compiler Collection (GCC)}, for information on the
884 @opindex @code{J}@var{dir}
885 @opindex @code{M}@var{dir}
886 @cindex paths, search
887 @cindex module search path
888 This option specifies where to put @file{.mod} files for compiled modules.
889 It is also added to the list of directories to searched by an @code{USE}
892 The default is the current directory.
894 @option{-M} is deprecated to avoid conflicts with existing GCC options.
896 @item -fintrinsic-modules-path @var{dir}
897 @opindex @code{fintrinsic-modules-path} @var{dir}
898 @cindex paths, search
899 @cindex module search path
900 This option specifies the location of pre-compiled intrinsic modules, if
901 they are not in the default location expected by the compiler.
905 @section Influencing the linking step
906 @cindex options, linking
907 @cindex linking, static
909 These options come into play when the compiler links object files into an
910 executable output file. They are meaningless if the compiler is not doing
914 @item -static-libgfortran
915 @opindex @code{static-libgfortran}
916 On systems that provide @file{libgfortran} as a shared and a static
917 library, this option forces the use of the static version. If no
918 shared version of @file{libgfortran} was built when the compiler was
919 configured, this option has no effect.
923 @node Runtime Options
924 @section Influencing runtime behavior
925 @cindex options, runtime
927 These options affect the runtime behavior of programs compiled with GNU Fortran.
929 @item -fconvert=@var{conversion}
930 @opindex @code{fconvert=}@var{conversion}
931 Specify the representation of data for unformatted files. Valid
932 values for conversion are: @samp{native}, the default; @samp{swap},
933 swap between big- and little-endian; @samp{big-endian}, use big-endian
934 representation for unformatted files; @samp{little-endian}, use little-endian
935 representation for unformatted files.
937 @emph{This option has an effect only when used in the main program.
938 The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
939 variable override the default specified by @option{-fconvert}.}
941 @item -frecord-marker=@var{length}
942 @opindex @code{frecord-marker=}@var{length}
943 Specify the length of record markers for unformatted files.
944 Valid values for @var{length} are 4 and 8. Default is 4.
945 @emph{This is different from previous versions of @command{gfortran}},
946 which specified a default record marker length of 8 on most
947 systems. If you want to read or write files compatible
948 with earlier versions of @command{gfortran}, use @option{-frecord-marker=8}.
950 @item -fmax-subrecord-length=@var{length}
951 @opindex @code{fmax-subrecord-length=}@var{length}
952 Specify the maximum length for a subrecord. The maximum permitted
953 value for length is 2147483639, which is also the default. Only
954 really useful for use by the gfortran testsuite.
957 @opindex @code{fsign-zero}
958 When writing zero values, show the negative sign if the sign bit is set.
959 @code{fno-sign-zero} does not print the negative sign of zero values for
960 compatibility with F77. Default behavior is to show the negative sign.
963 @node Code Gen Options
964 @section Options for code generation conventions
965 @cindex code generation, conventions
966 @cindex options, code generation
967 @cindex options, run-time
969 These machine-independent options control the interface conventions
970 used in code generation.
972 Most of them have both positive and negative forms; the negative form
973 of @option{-ffoo} would be @option{-fno-foo}. In the table below, only
974 one of the forms is listed---the one which is not the default. You
975 can figure out the other form by either removing @option{no-} or adding
980 @opindex @code{fno-automatic}
981 @cindex @code{SAVE} statement
982 @cindex statement, @code{SAVE}
983 Treat each program unit (except those marked as RECURSIVE) as if the
984 @code{SAVE} statement were specified for every local variable and array
985 referenced in it. Does not affect common blocks. (Some Fortran compilers
986 provide this option under the name @option{-static} or @option{-save}.)
987 The default, which is @option{-fautomatic}, uses the stack for local
988 variables smaller than the value given by @option{-fmax-stack-var-size}.
989 Use the option @option{-frecursive} to use no static memory.
993 @cindex calling convention
994 @cindex @command{f2c} calling convention
995 @cindex @command{g77} calling convention
996 @cindex libf2c calling convention
997 Generate code designed to be compatible with code generated
998 by @command{g77} and @command{f2c}.
1000 The calling conventions used by @command{g77} (originally implemented
1001 in @command{f2c}) require functions that return type
1002 default @code{REAL} to actually return the C type @code{double}, and
1003 functions that return type @code{COMPLEX} to return the values via an
1004 extra argument in the calling sequence that points to where to
1005 store the return value. Under the default GNU calling conventions, such
1006 functions simply return their results as they would in GNU
1007 C---default @code{REAL} functions return the C type @code{float}, and
1008 @code{COMPLEX} functions return the GNU C type @code{complex}.
1009 Additionally, this option implies the @option{-fsecond-underscore}
1010 option, unless @option{-fno-second-underscore} is explicitly requested.
1012 This does not affect the generation of code that interfaces with
1013 the @command{libgfortran} library.
1015 @emph{Caution:} It is not a good idea to mix Fortran code compiled with
1016 @option{-ff2c} with code compiled with the default @option{-fno-f2c}
1017 calling conventions as, calling @code{COMPLEX} or default @code{REAL}
1018 functions between program parts which were compiled with different
1019 calling conventions will break at execution time.
1021 @emph{Caution:} This will break code which passes intrinsic functions
1022 of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
1023 the library implementations use the @option{-fno-f2c} calling conventions.
1025 @item -fno-underscoring
1026 @opindex @code{fno-underscoring}
1028 @cindex symbol names, underscores
1029 @cindex transforming symbol names
1030 @cindex symbol names, transforming
1031 Do not transform names of entities specified in the Fortran
1032 source file by appending underscores to them.
1034 With @option{-funderscoring} in effect, GNU Fortran appends one
1035 underscore to external names with no underscores. This is done to ensure
1036 compatibility with code produced by many UNIX Fortran compilers.
1038 @emph{Caution}: The default behavior of GNU Fortran is
1039 incompatible with @command{f2c} and @command{g77}, please use the
1040 @option{-ff2c} option if you want object files compiled with
1041 GNU Fortran to be compatible with object code created with these
1044 Use of @option{-fno-underscoring} is not recommended unless you are
1045 experimenting with issues such as integration of GNU Fortran into
1046 existing system environments (vis-@`{a}-vis existing libraries, tools,
1049 For example, with @option{-funderscoring}, and assuming other defaults like
1050 @option{-fcase-lower} and that @code{j()} and @code{max_count()} are
1051 external functions while @code{my_var} and @code{lvar} are local variables,
1054 I = J() + MAX_COUNT (MY_VAR, LVAR)
1057 is implemented as something akin to:
1059 i = j_() + max_count__(&my_var__, &lvar);
1062 With @option{-fno-underscoring}, the same statement is implemented as:
1065 i = j() + max_count(&my_var, &lvar);
1068 Use of @option{-fno-underscoring} allows direct specification of
1069 user-defined names while debugging and when interfacing GNU Fortran
1070 code with other languages.
1072 Note that just because the names match does @emph{not} mean that the
1073 interface implemented by GNU Fortran for an external name matches the
1074 interface implemented by some other language for that same name.
1075 That is, getting code produced by GNU Fortran to link to code produced
1076 by some other compiler using this or any other method can be only a
1077 small part of the overall solution---getting the code generated by
1078 both compilers to agree on issues other than naming can require
1079 significant effort, and, unlike naming disagreements, linkers normally
1080 cannot detect disagreements in these other areas.
1082 Also, note that with @option{-fno-underscoring}, the lack of appended
1083 underscores introduces the very real possibility that a user-defined
1084 external name will conflict with a name in a system library, which
1085 could make finding unresolved-reference bugs quite difficult in some
1086 cases---they might occur at program run time, and show up only as
1087 buggy behavior at run time.
1089 In future versions of GNU Fortran we hope to improve naming and linking
1090 issues so that debugging always involves using the names as they appear
1091 in the source, even if the names as seen by the linker are mangled to
1092 prevent accidental linking between procedures with incompatible
1095 @item -fsecond-underscore
1096 @opindex @code{fsecond-underscore}
1098 @cindex symbol names, underscores
1099 @cindex transforming symbol names
1100 @cindex symbol names, transforming
1101 @cindex @command{f2c} calling convention
1102 @cindex @command{g77} calling convention
1103 @cindex libf2c calling convention
1104 By default, GNU Fortran appends an underscore to external
1105 names. If this option is used GNU Fortran appends two
1106 underscores to names with underscores and one underscore to external names
1107 with no underscores. GNU Fortran also appends two underscores to
1108 internal names with underscores to avoid naming collisions with external
1111 This option has no effect if @option{-fno-underscoring} is
1112 in effect. It is implied by the @option{-ff2c} option.
1114 Otherwise, with this option, an external name such as @code{MAX_COUNT}
1115 is implemented as a reference to the link-time external symbol
1116 @code{max_count__}, instead of @code{max_count_}. This is required
1117 for compatibility with @command{g77} and @command{f2c}, and is implied
1118 by use of the @option{-ff2c} option.
1120 @item -fbounds-check
1121 @opindex @code{fbounds-check}
1122 @cindex array, bounds checking
1123 @cindex bounds checking
1124 @cindex range checking
1125 @cindex subscript checking
1126 @cindex checking subscripts
1127 Enable generation of run-time checks for array subscripts
1128 and against the declared minimum and maximum values. It also
1129 checks array indices for assumed and deferred
1130 shape arrays against the actual allocated bounds.
1132 Some checks require that @option{-fbounds-check} is set for
1133 the compilation of the main program.
1135 In the future this may also include other forms of checking, e.g., checking
1136 substring references.
1138 @item -fmax-stack-var-size=@var{n}
1139 @opindex @code{fmax-stack-var-size}
1140 This option specifies the size in bytes of the largest array that will be put
1141 on the stack; if the size is exceeded static memory is used (except in
1142 procedures marked as RECURSIVE). Use the option @option{-frecursive} to
1143 allow for recursive procedures which do not have a RECURSIVE attribute or
1144 for parallel programs. Use @option{-fno-automatic} to never use the stack.
1146 This option currently only affects local arrays declared with constant
1147 bounds, and may not apply to all character variables.
1148 Future versions of GNU Fortran may improve this behavior.
1150 The default value for @var{n} is 32768.
1152 @item -fpack-derived
1153 @opindex @code{fpack-derived}
1154 @cindex structure packing
1155 This option tells GNU Fortran to pack derived type members as closely as
1156 possible. Code compiled with this option is likely to be incompatible
1157 with code compiled without this option, and may execute slower.
1159 @item -frepack-arrays
1160 @opindex @code{frepack-arrays}
1161 @cindex repacking arrays
1162 In some circumstances GNU Fortran may pass assumed shape array
1163 sections via a descriptor describing a noncontiguous area of memory.
1164 This option adds code to the function prologue to repack the data into
1165 a contiguous block at runtime.
1167 This should result in faster accesses to the array. However it can introduce
1168 significant overhead to the function call, especially when the passed data
1172 @opindex @code{fshort-enums}
1173 This option is provided for interoperability with C code that was
1174 compiled with the @option{-fshort-enums} option. It will make
1175 GNU Fortran choose the smallest @code{INTEGER} kind a given
1176 enumerator set will fit in, and give all its enumerators this kind.
1178 @item -fexternal-blas
1179 @opindex @code{fexternal-blas}
1180 This option will make @command{gfortran} generate calls to BLAS functions
1181 for some matrix operations like @code{MATMUL}, instead of using our own
1182 algorithms, if the size of the matrices involved is larger than a given
1183 limit (see @option{-fblas-matmul-limit}). This may be profitable if an
1184 optimized vendor BLAS library is available. The BLAS library will have
1185 to be specified at link time.
1187 @item -fblas-matmul-limit=@var{n}
1188 @opindex @code{fblas-matmul-limit}
1189 Only significant when @option{-fexternal-blas} is in effect.
1190 Matrix multiplication of matrices with size larger than (or equal to) @var{n}
1191 will be performed by calls to BLAS functions, while others will be
1192 handled by @command{gfortran} internal algorithms. If the matrices
1193 involved are not square, the size comparison is performed using the
1194 geometric mean of the dimensions of the argument and result matrices.
1196 The default value for @var{n} is 30.
1199 @opindex @code{frecursive}
1200 Allow indirect recursion by forcing all local arrays to be allocated
1201 on the stack. This flag cannot be used together with
1202 @option{-fmax-stack-var-size=} or @option{-fno-automatic}.
1204 @item -finit-local-zero
1205 @item -finit-integer=@var{n}
1206 @item -finit-real=@var{<zero|inf|-inf|nan>}
1207 @item -finit-logical=@var{<true|false>}
1208 @item -finit-character=@var{n}
1209 @opindex @code{finit-local-zero}
1210 @opindex @code{finit-integer}
1211 @opindex @code{finit-real}
1212 @opindex @code{finit-logical}
1213 @opindex @code{finit-character}
1214 The @option{-finit-local-zero} option instructs the compiler to
1215 initialize local @code{INTEGER}, @code{REAL}, and @code{COMPLEX}
1216 variables to zero, @code{LOGICAL} variables to false, and
1217 @code{CHARACTER} variables to a string of null bytes. Finer-grained
1218 initialization options are provided by the
1219 @option{-finit-integer=@var{n}},
1220 @option{-finit-real=@var{<zero|inf|-inf|nan>}} (which also initializes
1221 the real and imaginary parts of local @code{COMPLEX} variables),
1222 @option{-finit-logical=@var{<true|false>}}, and
1223 @option{-finit-character=@var{n}} (where @var{n} is an ASCII character
1224 value) options. These options do not initialize components of derived
1225 type variables, nor do they initialize variables that appear in an
1226 @code{EQUIVALENCE} statement. (This limitation may be removed in
1229 Note that the @option{-finit-real=nan} option initializes @code{REAL}
1230 and @code{COMPLEX} variables with a quiet NaN.
1233 @xref{Code Gen Options,,Options for Code Generation Conventions,
1234 gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1236 shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
1241 @node Environment Variables
1242 @section Environment variables affecting @command{gfortran}
1243 @cindex environment variable
1245 @c man begin ENVIRONMENT
1247 The @command{gfortran} compiler currently does not make use of any environment
1248 variables to control its operation above and beyond those
1249 that affect the operation of @command{gcc}.
1251 @xref{Environment Variables,,Environment Variables Affecting GCC,
1252 gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
1255 @xref{Runtime}, for environment variables that affect the
1256 run-time behavior of programs compiled with GNU Fortran.