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, 2008
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 ``Funding Free Software'', the Front-Cover
15 Texts being (a) (see below), and with the Back-Cover Texts being (b)
16 (see below). A copy of the license is included in the gfdl(7) man page.
18 (a) The FSF's Front-Cover Text is:
22 (b) The FSF's Back-Cover Text is:
24 You have freedom to copy and modify this GNU Manual, like GNU
25 software. Copies published by the Free Software Foundation raise
26 funds for GNU development.
28 @c Set file name and title for the man page.
30 @settitle GNU Fortran compiler.
32 gfortran [@option{-c}|@option{-S}|@option{-E}]
33 [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
34 [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
35 [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
36 [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
37 [@option{-f}@var{option}@dots{}]
38 [@option{-m}@var{machine-option}@dots{}]
39 [@option{-o} @var{outfile}] @var{infile}@dots{}
41 Only the most useful options are listed here; see below for the
45 gpl(7), gfdl(7), fsf-funding(7),
46 cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
47 and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
48 @file{ld}, @file{binutils} and @file{gdb}.
51 For instructions on reporting bugs, see
55 See the Info entry for @command{gfortran} for contributors to GCC and
60 @node Invoking GNU Fortran
61 @chapter GNU Fortran Command Options
62 @cindex GNU Fortran command options
63 @cindex command options
64 @cindex options, @command{gfortran} command
66 @c man begin DESCRIPTION
68 The @command{gfortran} command supports all the options supported by the
69 @command{gcc} command. Only options specific to GNU Fortran are documented here.
71 @xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
72 Collection (GCC)}, for information
73 on the non-Fortran-specific aspects of the @command{gcc} command (and,
74 therefore, the @command{gfortran} command).
76 @cindex options, negative forms
77 All GCC and GNU Fortran options
78 are accepted both by @command{gfortran} and by @command{gcc}
79 (as well as any other drivers built at the same time,
80 such as @command{g++}),
81 since adding GNU Fortran to the GCC distribution
82 enables acceptance of GNU Fortran options
83 by all of the relevant drivers.
85 In some cases, options have positive and negative forms;
86 the negative form of @option{-ffoo} would be @option{-fno-foo}.
87 This manual documents only one of these two forms, whichever
88 one is not the default.
92 * Option Summary:: Brief list of all @command{gfortran} options,
94 * Fortran Dialect Options:: Controlling the variant of Fortran language
96 * Preprocessing Options:: Enable and customize preprocessing.
97 * Error and Warning Options:: How picky should the compiler be?
98 * Debugging Options:: Symbol tables, measurements, and debugging dumps.
99 * Directory Options:: Where to find module files
100 * Link Options :: Influencing the linking step
101 * Runtime Options:: Influencing runtime behavior
102 * Code Gen Options:: Specifying conventions for function calls, data layout
104 * Environment Variables:: Environment variables that affect @command{gfortran}.
108 @section Option summary
112 Here is a summary of all the options specific to GNU Fortran, grouped
113 by type. Explanations are in the following sections.
116 @item Fortran Language Options
117 @xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
118 @gccoptlist{-fall-intrinsics -ffree-form -fno-fixed-form @gol
119 -fdollar-ok -fimplicit-none -fmax-identifier-length @gol
120 -std=@var{std} -fd-lines-as-code -fd-lines-as-comments @gol
121 -ffixed-line-length-@var{n} -ffixed-line-length-none @gol
122 -ffree-line-length-@var{n} -ffree-line-length-none @gol
123 -fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 @gol
124 -fcray-pointer -fopenmp -fno-range-check -fbackslash -fmodule-private}
126 @item Preprocessing Options
127 @xref{Preprocessing Options,,Enable and customize preprocessing}.
128 @gccoptlist{-cpp -dD -dI -dM -dN -dU -fworking-directory @gol
129 -imultilib @var{dir} -iprefix @var{file} -isysroot @var{dir} @gol
130 -iquote -isystem @var{dir} -nocpp -nostdinc -undef @gol
131 -A@var{question}=@var{answer} -A-@var{question}@r{[}=@var{answer}@r{]} @gol
132 -C -CC -D@var{macro}@r{[}=@var{defn}@r{]} -U@var{macro} -H -P}
134 @item Error and Warning Options
135 @xref{Error and Warning Options,,Options to request or suppress errors
137 @gccoptlist{-fmax-errors=@var{n} @gol
138 -fsyntax-only -pedantic -pedantic-errors @gol
139 -Wall -Waliasing -Wampersand -Warray-bounds -Wcharacter-truncation @gol
140 -Wconversion -Wimplicit-interface -Wline-truncation -Wintrinsics-std @gol
141 -Wsurprising -Wno-tabs -Wunderflow -Wunused-parameter -Wintrinsics-shadow}
143 @item Debugging Options
144 @xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
145 @gccoptlist{-fdump-parse-tree -ffpe-trap=@var{list} @gol
146 -fdump-core -fbacktrace}
148 @item Directory Options
149 @xref{Directory Options,,Options for directory search}.
150 @gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} -fintrinsic-modules-path @var{dir}}
153 @xref{Link Options,,Options for influencing the linking step}.
154 @gccoptlist{-static-libgfortran}
156 @item Runtime Options
157 @xref{Runtime Options,,Options for influencing runtime behavior}.
158 @gccoptlist{-fconvert=@var{conversion} -fno-range-check
159 -frecord-marker=@var{length} @gol -fmax-subrecord-length=@var{length}
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 -fcheck-array-temporaries -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{-Wintrinsics-std} and will never try
214 to link to an @code{EXTERNAL} version if the intrinsic is not included in the
217 @item -fd-lines-as-code
218 @item -fd-lines-as-comments
219 @opindex @code{fd-lines-as-code}
220 @opindex @code{fd-lines-as-comments}
221 Enable special treatment for lines beginning with @code{d} or @code{D}
222 in fixed form sources. If the @option{-fd-lines-as-code} option is
223 given they are treated as if the first column contained a blank. If the
224 @option{-fd-lines-as-comments} option is given, they are treated as
227 @item -fdefault-double-8
228 @opindex @code{fdefault-double-8}
229 Set the @code{DOUBLE PRECISION} type to an 8 byte wide type.
231 @item -fdefault-integer-8
232 @opindex @code{fdefault-integer-8}
233 Set the default integer and logical types to an 8 byte wide type.
234 Do nothing if this is already the default.
236 @item -fdefault-real-8
237 @opindex @code{fdefault-real-8}
238 Set the default real type to an 8 byte wide type.
239 Do nothing if this is already the default.
242 @opindex @code{fdollar-ok}
245 @cindex character set
246 Allow @samp{$} as a valid character in a symbol name.
249 @opindex @code{backslash}
251 @cindex escape characters
252 Change the interpretation of backslashes in string literals from a single
253 backslash character to ``C-style'' escape characters. The following
254 combinations are expanded @code{\a}, @code{\b}, @code{\f}, @code{\n},
255 @code{\r}, @code{\t}, @code{\v}, @code{\\}, and @code{\0} to the ASCII
256 characters alert, backspace, form feed, newline, carriage return,
257 horizontal tab, vertical tab, backslash, and NUL, respectively.
258 Additionally, @code{\x}@var{nn}, @code{\u}@var{nnnn} and
259 @code{\U}@var{nnnnnnnn} (where each @var{n} is a hexadecimal digit) are
260 translated into the Unicode characters corresponding to the specified code
261 points. All other combinations of a character preceded by \ are
264 @item -fmodule-private
265 @opindex @code{fmodule-private}
266 @cindex module entities
268 Set the default accessibility of module entities to @code{PRIVATE}.
269 Use-associated entities will not be accessible unless they are explicitly
270 declared as @code{PUBLIC}.
272 @item -ffixed-line-length-@var{n}
273 @opindex @code{ffixed-line-length-}@var{n}
274 @cindex file format, fixed
275 Set column after which characters are ignored in typical fixed-form
276 lines in the source file, and through which spaces are assumed (as
277 if padded to that length) after the ends of short fixed-form lines.
279 Popular values for @var{n} include 72 (the
280 standard and the default), 80 (card image), and 132 (corresponding
281 to ``extended-source'' options in some popular compilers).
282 @var{n} may also be @samp{none}, meaning that the entire line is meaningful
283 and that continued character constants never have implicit spaces appended
284 to them to fill out the line.
285 @option{-ffixed-line-length-0} means the same thing as
286 @option{-ffixed-line-length-none}.
288 @item -ffree-line-length-@var{n}
289 @opindex @code{ffree-line-length-}@var{n}
290 @cindex file format, free
291 Set column after which characters are ignored in typical free-form
292 lines in the source file. The default value is 132.
293 @var{n} may be @samp{none}, meaning that the entire line is meaningful.
294 @option{-ffree-line-length-0} means the same thing as
295 @option{-ffree-line-length-none}.
297 @item -fmax-identifier-length=@var{n}
298 @opindex @code{fmax-identifier-length=}@var{n}
299 Specify the maximum allowed identifier length. Typical values are
300 31 (Fortran 95) and 63 (Fortran 2003 and Fortran 2008).
302 @item -fimplicit-none
303 @opindex @code{fimplicit-none}
304 Specify that no implicit typing is allowed, unless overridden by explicit
305 @code{IMPLICIT} statements. This is the equivalent of adding
306 @code{implicit none} to the start of every procedure.
309 @opindex @code{fcray-pointer}
310 Enable the Cray pointer extension, which provides C-like pointer
314 @opindex @code{fopenmp}
316 Enable the OpenMP extensions. This includes OpenMP @code{!$omp} directives
318 and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
319 @code{!$} conditional compilation sentinels in free form
320 and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form,
321 and when linking arranges for the OpenMP runtime library to be linked
322 in. The option @option{-fopenmp} implies @option{-frecursive}.
324 @item -fno-range-check
325 @opindex @code{frange-check}
326 Disable range checking on results of simplification of constant
327 expressions during compilation. For example, GNU Fortran will give
328 an error at compile time when simplifying @code{a = 1. / 0}.
329 With this option, no error will be given and @code{a} will be assigned
330 the value @code{+Infinity}. If an expression evaluates to a value
331 outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}],
332 then the expression will be replaced by @code{-Inf} or @code{+Inf}
334 Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
335 on most systems, but with @option{-fno-range-check} the value will
336 ``wrap around'' and @code{i} will be initialized to @math{-1} instead.
339 @opindex @code{std=}@var{std} option
340 Specify the standard to which the program is expected to conform, which
341 may be one of @samp{f95}, @samp{f2003}, @samp{f2008}, @samp{gnu}, or
342 @samp{legacy}. The default value for @var{std} is @samp{gnu}, which
343 specifies a superset of the Fortran 95 standard that includes all of the
344 extensions supported by GNU Fortran, although warnings will be given for
345 obsolete extensions not recommended for use in new code. The
346 @samp{legacy} value is equivalent but without the warnings for obsolete
347 extensions, and may be useful for old non-standard programs. The
348 @samp{f95}, @samp{f2003} and @samp{f2008} values specify strict
349 conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards,
350 respectively; errors are given for all extensions beyond the relevant
351 language standard, and warnings are given for the Fortran 77 features
352 that are permitted but obsolescent in later standards.
356 @node Preprocessing Options
357 @section Enable and customize preprocessing
359 @cindex options, preprocessor
362 Preprocessor related options. See section
363 @ref{Preprocessing and conditional compilation} for more detailed
364 information on preprocessing in @command{gfortran}.
371 @cindex preprocessor, enable
372 @cindex preprocessor, disable
373 Enable preprocessing. The preprocessor is automatically invoked if
374 the file extension is @file{.fpp}, @file{.FPP}, @file{.F}, @file{.FOR},
375 @file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
376 this option to manually enable preprocessing of any kind of Fortran file.
378 To disable preprocessing of files with any of the above listed extensions,
379 use the negative form: @option{-nocpp}.
381 The preprocessor is run in traditional mode, be aware that any
382 restrictions of the file-format, e.g. fixed-form line width,
383 apply for preprocessed output as well.
387 @cindex preprocessor, debugging
388 @cindex debugging, preprocessor
389 Instead of the normal output, generate a list of @code{'#define'}
390 directives for all the macros defined during the execution of the
391 preprocessor, including predefined macros. This gives you a way
392 of finding out what is predefined in your version of the preprocessor.
393 Assuming you have no file @file{foo.f90}, the command
395 touch foo.f90; gfortran -cpp -dM foo.f90
397 will show all the predefined macros.
401 @cindex preprocessor, debugging
402 @cindex debugging, preprocessor
403 Like @option{-dM} except in two respects: it does not include the
404 predefined macros, and it outputs both the @code{#define} directives
405 and the result of preprocessing. Both kinds of output go to the
406 standard output file.
410 @cindex preprocessor, debugging
411 @cindex debugging, preprocessor
412 Like @option{-dD}, but emit only the macro names, not their expansions.
416 @cindex preprocessor, debugging
417 @cindex debugging, preprocessor
418 Like @option{dD} except that only macros that are expanded, or whose
419 definedness is tested in preprocessor directives, are output; the
420 output is delayed until the use or test of the macro; and @code{'#undef'}
421 directives are also output for macros tested but undefined at the time.
425 @cindex preprocessor, debugging
426 @cindex debugging, preprocessor
427 Output @code{'#include'} directives in addition to the result
430 @item -fworking-directory
431 @opindex @code{fworking-directory}
432 @cindex preprocessor, working directory
433 Enable generation of linemarkers in the preprocessor output that will
434 let the compiler know the current working directory at the time of
435 preprocessing. When this option is enabled, the preprocessor will emit,
436 after the initial linemarker, a second linemarker with the current
437 working directory followed by two slashes. GCC will use this directory,
438 when it's present in the preprocessed input, as the directory emitted
439 as the current working directory in some debugging information formats.
440 This option is implicitly enabled if debugging information is enabled,
441 but this can be inhibited with the negated form
442 @option{-fno-working-directory}. If the @option{-P} flag is present
443 in the command line, this option has no effect, since no @code{#line}
444 directives are emitted whatsoever.
446 @item -imultilib @var{dir}
447 @opindex @code{imultilib @var{dir}}
448 @cindex preprocessing, include path
449 Use @var{dir} as a subdirectory of the directory containing target-specific
452 @item -iprefix @var{prefix}
453 @opindex @code{iprefix @var{prefix}}
454 @cindex preprocessing, include path
455 Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
456 options. If the @var{prefix} represents a directory, you should include
457 the final @code{'/'}.
459 @item -isysroot @var{dir}
460 @opindex @code{isysroot @var{dir}}
461 @cindex preprocessing, include path
462 This option is like the @option{--sysroot} option, but applies only to
463 header files. See the @option{--sysroot} option for more information.
465 @item -iquote @var{dir}
466 @opindex @code{iquote @var{dir}}
467 @cindex preprocessing, include path
468 Search @var{dir} only for header files requested with @code{#include "file"};
469 they are not searched for @code{#include <file>}, before all directories
470 specified by @option{-I} and before the standard system directories. If
471 @var{dir} begins with @code{=}, then the @code{=} will be replaced by the
472 sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
474 @item -isystem @var{dir}
475 @opindex @code{isystem @var{dir}}
476 @cindex preprocessing, include path
477 Search @var{dir} for header files, after all directories specified by
478 @option{-I} but before the standard system directories. Mark it as a
479 system directory, so that it gets the same special treatment as is
480 applied to the standard system directories. If @var{dir} begins with
481 @code{=}, then the @code{=} will be replaced by the sysroot prefix;
482 see @option{--sysroot} and @option{-isysroot}.
485 @opindex @code{nostdinc}
486 Do not search the standard system directories for header files. Only
487 the directories you have specified with @option{-I} options (and the
488 directory of the current file, if appropriate) are searched.
491 @opindex @code{undef}
492 Do not predefine any system-specific or GCC-specific macros.
493 The standard predefined macros remain defined.
495 @item -A@var{predicate}=@var{answer}
496 @opindex @code{A@var{predicate}=@var{answer}}
497 @cindex preprocessing, assertation
498 Make an assertion with the predicate @var{predicate} and answer @var{answer}.
499 This form is preferred to the older form -A predicate(answer), which is still
500 supported, because it does not use shell special characters.
502 @item -A-@var{predicate}=@var{answer}
503 @opindex @code{A-@var{predicate}=@var{answer}}
504 @cindex preprocessing, assertation
505 Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
509 @cindex preprocessing, keep comments
510 Do not discard comments. All comments are passed through to the output
511 file, except for comments in processed directives, which are deleted
512 along with the directive.
514 You should be prepared for side effects when using @option{-C}; it causes
515 the preprocessor to treat comments as tokens in their own right. For example,
516 comments appearing at the start of what would be a directive line have the
517 effect of turning that line into an ordinary source line, since the first
518 token on the line is no longer a @code{'#'}.
520 Warning: this currently handles C-Style comments only. The preprocessor
521 does not yet recognize Fortran-style comments.
525 @cindex preprocessing, keep comments
526 Do not discard comments, including during macro expansion. This is like
527 @option{-C}, except that comments contained within macros are also passed
528 through to the output file where the macro is expanded.
530 In addition to the side-effects of the @option{-C} option, the @option{-CC}
531 option causes all C++-style comments inside a macro to be converted to C-style
532 comments. This is to prevent later use of that macro from inadvertently
533 commenting out the remainder of the source line. The @option{-CC} option
534 is generally used to support lint comments.
536 Warning: this currently handles C- and C++-Style comments only. The
537 preprocessor does not yet recognize Fortran-style comments.
540 @opindex @code{D@var{name}}
541 @cindex preprocessing, define macros
542 Predefine name as a macro, with definition @code{1}.
544 @item -D@var{name}=@var{definition}
545 @opindex @code{D@var{name}=@var{definition}}
546 @cindex preprocessing, define macros
547 The contents of @var{definition} are tokenized and processed as if they
548 appeared during translation phase three in a @code{'#define'} directive.
549 In particular, the definition will be truncated by embedded newline
552 If you are invoking the preprocessor from a shell or shell-like program
553 you may need to use the shell's quoting syntax to protect characters such
554 as spaces that have a meaning in the shell syntax.
556 If you wish to define a function-like macro on the command line, write
557 its argument list with surrounding parentheses before the equals sign
558 (if any). Parentheses are meaningful to most shells, so you will need
559 to quote the option. With sh and csh, @code{-D'name(args...)=definition'}
562 @option{-D} and @option{-U} options are processed in the order they are
563 given on the command line. All -imacros file and -include file options
564 are processed after all -D and -U options.
568 Print the name of each header file used, in addition to other normal
569 activities. Each name is indented to show how deep in the @code{'#include'}
574 @cindex preprocessing, no linemarkers
575 Inhibit generation of linemarkers in the output from the preprocessor.
576 This might be useful when running the preprocessor on something that
577 is not C code, and will be sent to a program which might be confused
581 @opindex @code{U@var{name}}
582 @cindex preprocessing, undefine macros
583 Cancel any previous definition of @var{name}, either built in or provided
584 with a @option{-D} option.
588 @node Error and Warning Options
589 @section Options to request or suppress errors and warnings
590 @cindex options, warnings
591 @cindex options, errors
592 @cindex warnings, suppressing
593 @cindex messages, error
594 @cindex messages, warning
595 @cindex suppressing warnings
597 Errors are diagnostic messages that report that the GNU Fortran compiler
598 cannot compile the relevant piece of source code. The compiler will
599 continue to process the program in an attempt to report further errors
600 to aid in debugging, but will not produce any compiled output.
602 Warnings are diagnostic messages that report constructions which
603 are not inherently erroneous but which are risky or suggest there is
604 likely to be a bug in the program. Unless @option{-Werror} is specified,
605 they do not prevent compilation of the program.
607 You can request many specific warnings with options beginning @option{-W},
608 for example @option{-Wimplicit} to request warnings on implicit
609 declarations. Each of these specific warning options also has a
610 negative form beginning @option{-Wno-} to turn off warnings;
611 for example, @option{-Wno-implicit}. This manual lists only one of the
612 two forms, whichever is not the default.
614 These options control the amount and kinds of errors and warnings produced
618 @item -fmax-errors=@var{n}
619 @opindex @code{fmax-errors=}@var{n}
620 @cindex errors, limiting
621 Limits the maximum number of error messages to @var{n}, at which point
622 GNU Fortran bails out rather than attempting to continue processing the
623 source code. If @var{n} is 0, there is no limit on the number of error
627 @opindex @code{fsyntax-only}
628 @cindex syntax checking
629 Check the code for syntax errors, but don't actually compile it. This
630 will generate module files for each module present in the code, but no
634 @opindex @code{pedantic}
635 Issue warnings for uses of extensions to Fortran 95.
636 @option{-pedantic} also applies to C-language constructs where they
637 occur in GNU Fortran source files, such as use of @samp{\e} in a
638 character constant within a directive like @code{#include}.
640 Valid Fortran 95 programs should compile properly with or without
642 However, without this option, certain GNU extensions and traditional
643 Fortran features are supported as well.
644 With this option, many of them are rejected.
646 Some users try to use @option{-pedantic} to check programs for conformance.
647 They soon find that it does not do quite what they want---it finds some
648 nonstandard practices, but not all.
649 However, improvements to GNU Fortran in this area are welcome.
651 This should be used in conjunction with @option{-std=f95},
652 @option{-std=f2003} or @option{-std=f2008}.
654 @item -pedantic-errors
655 @opindex @code{pedantic-errors}
656 Like @option{-pedantic}, except that errors are produced rather than
662 @cindex warnings, all
663 Enables commonly used warning options pertaining to usage that
664 we recommend avoiding and that we believe are easy to avoid.
665 This currently includes @option{-Waliasing},
666 @option{-Wampersand}, @option{-Wsurprising}, @option{-Wintrinsics-std},
667 @option{-Wno-tabs}, @option{-Wintrinsic-shadow} and @option{-Wline-truncation}.
670 @opindex @code{Waliasing}
672 @cindex warnings, aliasing
673 Warn about possible aliasing of dummy arguments. Specifically, it warns
674 if the same actual argument is associated with a dummy argument with
675 @code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
676 with an explicit interface.
678 The following example will trigger the warning.
682 integer, intent(in) :: a
683 integer, intent(out) :: b
692 @opindex @code{Wampersand}
693 @cindex warnings, ampersand
695 Warn about missing ampersand in continued character constants. The warning is
696 given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95},
697 @option{-std=f2003} and @option{-std=f2008}. Note: With no ampersand
698 given in a continued character constant, GNU Fortran assumes continuation
699 at the first non-comment, non-whitespace character after the ampersand
700 that initiated the continuation.
702 @item -Warray-temporaries
703 @opindex @code{Warray-temporaries}
704 @cindex warnings, array temporaries
705 Warn about array temporaries generated by the compiler. The information
706 generated by this warning is sometimes useful in optimization, in order to
707 avoid such temporaries.
709 @item -Wcharacter-truncation
710 @opindex @code{Wcharacter-truncation}
711 @cindex warnings, character truncation
712 Warn when a character assignment will truncate the assigned string.
714 @item -Wline-truncation
715 @opindex @code{Wline-truncation}
716 @cindex warnings, line truncation
717 Warn when a source code line will be truncated.
720 @opindex @code{Wconversion}
721 @cindex warnings, conversion
723 Warn about implicit conversions between different types.
725 @item -Wimplicit-interface
726 @opindex @code{Wimplicit-interface}
727 @cindex warnings, implicit interface
728 Warn if a procedure is called without an explicit interface.
729 Note this only checks that an explicit interface is present. It does not
730 check that the declared interfaces are consistent across program units.
732 @item -Wintrinsics-std
733 @opindex @code{Wintrinsics-std}
734 @cindex warnings, non-standard intrinsics
735 @cindex warnings, intrinsics of other standards
736 Warn if @command{gfortran} finds a procedure named like an intrinsic not
737 available in the currently selected standard (with @option{-std}) and treats
738 it as @code{EXTERNAL} procedure because of this. @option{-fall-intrinsics} can
739 be used to never trigger this behaviour and always link to the intrinsic
740 regardless of the selected standard.
743 @opindex @code{Wsurprising}
744 @cindex warnings, suspicious code
745 Produce a warning when ``suspicious'' code constructs are encountered.
746 While technically legal these usually indicate that an error has been made.
748 This currently produces a warning under the following circumstances:
752 An INTEGER SELECT construct has a CASE that can never be matched as its
753 lower value is greater than its upper value.
756 A LOGICAL SELECT construct has three CASE statements.
759 A TRANSFER specifies a source that is shorter than the destination.
763 @opindex @code{Wtabs}
764 @cindex warnings, tabs
766 By default, tabs are accepted as whitespace, but tabs are not members
767 of the Fortran Character Set. For continuation lines, a tab followed
768 by a digit between 1 and 9 is supported. @option{-Wno-tabs} will cause
769 a warning to be issued if a tab is encountered. Note, @option{-Wno-tabs}
770 is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
771 @option{-std=f2008} and @option{-Wall}.
774 @opindex @code{Wunderflow}
775 @cindex warnings, underflow
777 Produce a warning when numerical constant expressions are
778 encountered, which yield an UNDERFLOW during compilation.
780 @item -Wintrinsic-shadow
781 @opindex @code{Wintrinsic-shadow}
782 @cindex warnings, intrinsic
784 Warn if a user-defined procedure or module procedure has the same name as an
785 intrinsic; in this case, an explicit interface or @code{EXTERNAL} or
786 @code{INTRINSIC} declaration might be needed to get calls later resolved to
787 the desired intrinsic/procedure.
789 @item -Wunused-parameter
790 @opindex @code{Wunused-parameter}
791 @cindex warnings, unused parameter
792 @cindex unused parameter
793 Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
794 @command{gfortran}'s implementation of this option does not warn
795 about unused dummy arguments, but about unused @code{PARAMETER} values.
796 @option{-Wunused-parameter} is not included in @option{-Wall} but is
797 implied by @option{-Wall -Wextra}.
800 @opindex @code{Werror}
801 @cindex warnings, to errors
802 Turns all warnings into errors.
805 @xref{Error and Warning Options,,Options to Request or Suppress Errors and
806 Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
807 more options offered by the GBE shared by @command{gfortran}, @command{gcc}
808 and other GNU compilers.
810 Some of these have no effect when compiling programs written in Fortran.
812 @node Debugging Options
813 @section Options for debugging your program or GNU Fortran
814 @cindex options, debugging
815 @cindex debugging information options
817 GNU Fortran has various special options that are used for debugging
818 either your program or the GNU Fortran compiler.
821 @item -fdump-parse-tree
822 @opindex @code{fdump-parse-tree}
823 Output the internal parse tree before starting code generation. Only
824 really useful for debugging the GNU Fortran compiler itself.
826 @item -ffpe-trap=@var{list}
827 @opindex @code{ffpe-trap=}@var{list}
828 Specify a list of IEEE exceptions when a Floating Point Exception
829 (FPE) should be raised. On most systems, this will result in a SIGFPE
830 signal being sent and the program being interrupted, producing a core
831 file useful for debugging. @var{list} is a (possibly empty) comma-separated
832 list of the following IEEE exceptions: @samp{invalid} (invalid floating
833 point operation, such as @code{SQRT(-1.0)}), @samp{zero} (division by
834 zero), @samp{overflow} (overflow in a floating point operation),
835 @samp{underflow} (underflow in a floating point operation),
836 @samp{precision} (loss of precision during operation) and @samp{denormal}
837 (operation produced a denormal value).
839 Some of the routines in the Fortran runtime library, like
840 @samp{CPU_TIME}, are likely to to trigger floating point exceptions when
841 @code{ffpe-trap=precision} is used. For this reason, the use of
842 @code{ffpe-trap=precision} is not recommended.
845 @opindex @code{fbacktrace}
848 Specify that, when a runtime error is encountered or a deadly signal is
849 emitted (segmentation fault, illegal instruction, bus error or
850 floating-point exception), the Fortran runtime
851 library should output a backtrace of the error. This option
852 only has influence for compilation of the Fortran main program.
856 @opindex @code{fdump-core}
857 Request that a core-dump file is written to disk when a runtime error
858 is encountered on systems that support core dumps. This option is
859 only effective for the compilation of the Fortran main program.
862 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
863 gcc,Using the GNU Compiler Collection (GCC)}, for more information on
866 @node Directory Options
867 @section Options for directory search
868 @cindex directory, options
869 @cindex options, directory search
871 @cindex INCLUDE directive
872 @cindex directive, INCLUDE
873 These options affect how GNU Fortran searches
874 for files specified by the @code{INCLUDE} directive and where it searches
875 for previously compiled modules.
877 It also affects the search paths used by @command{cpp} when used to preprocess
882 @opindex @code{I}@var{dir}
883 @cindex directory, search paths for inclusion
884 @cindex inclusion, directory search paths for
885 @cindex search paths, for included files
886 @cindex paths, search
887 @cindex module search path
888 These affect interpretation of the @code{INCLUDE} directive
889 (as well as of the @code{#include} directive of the @command{cpp}
892 Also note that the general behavior of @option{-I} and
893 @code{INCLUDE} is pretty much the same as of @option{-I} with
894 @code{#include} in the @command{cpp} preprocessor, with regard to
895 looking for @file{header.gcc} files and other such things.
897 This path is also used to search for @file{.mod} files when previously
898 compiled modules are required by a @code{USE} statement.
900 @xref{Directory Options,,Options for Directory Search,
901 gcc,Using the GNU Compiler Collection (GCC)}, for information on the
906 @opindex @code{J}@var{dir}
907 @opindex @code{M}@var{dir}
908 @cindex paths, search
909 @cindex module search path
910 This option specifies where to put @file{.mod} files for compiled modules.
911 It is also added to the list of directories to searched by an @code{USE}
914 The default is the current directory.
916 @option{-M} is deprecated to avoid conflicts with existing GCC options.
918 @item -fintrinsic-modules-path @var{dir}
919 @opindex @code{fintrinsic-modules-path} @var{dir}
920 @cindex paths, search
921 @cindex module search path
922 This option specifies the location of pre-compiled intrinsic modules, if
923 they are not in the default location expected by the compiler.
927 @section Influencing the linking step
928 @cindex options, linking
929 @cindex linking, static
931 These options come into play when the compiler links object files into an
932 executable output file. They are meaningless if the compiler is not doing
936 @item -static-libgfortran
937 @opindex @code{static-libgfortran}
938 On systems that provide @file{libgfortran} as a shared and a static
939 library, this option forces the use of the static version. If no
940 shared version of @file{libgfortran} was built when the compiler was
941 configured, this option has no effect.
945 @node Runtime Options
946 @section Influencing runtime behavior
947 @cindex options, runtime
949 These options affect the runtime behavior of programs compiled with GNU Fortran.
951 @item -fconvert=@var{conversion}
952 @opindex @code{fconvert=}@var{conversion}
953 Specify the representation of data for unformatted files. Valid
954 values for conversion are: @samp{native}, the default; @samp{swap},
955 swap between big- and little-endian; @samp{big-endian}, use big-endian
956 representation for unformatted files; @samp{little-endian}, use little-endian
957 representation for unformatted files.
959 @emph{This option has an effect only when used in the main program.
960 The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
961 variable override the default specified by @option{-fconvert}.}
964 @item -fno-range-check
965 @opindex @code{-fno-range-check}
966 Disable range checking of input values during integer @code{READ} operations.
967 For example, GNU Fortran will give an error if an input value is
968 outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}]. In other words,
969 with @code{INTEGER (kind=4) :: i} , attempting to read @math{-2147483648} will
970 give an error unless @option{-fno-range-check} is given.
973 @item -frecord-marker=@var{length}
974 @opindex @code{frecord-marker=}@var{length}
975 Specify the length of record markers for unformatted files.
976 Valid values for @var{length} are 4 and 8. Default is 4.
977 @emph{This is different from previous versions of @command{gfortran}},
978 which specified a default record marker length of 8 on most
979 systems. If you want to read or write files compatible
980 with earlier versions of @command{gfortran}, use @option{-frecord-marker=8}.
982 @item -fmax-subrecord-length=@var{length}
983 @opindex @code{fmax-subrecord-length=}@var{length}
984 Specify the maximum length for a subrecord. The maximum permitted
985 value for length is 2147483639, which is also the default. Only
986 really useful for use by the gfortran testsuite.
989 @opindex @code{fsign-zero}
990 When writing zero values, show the negative sign if the sign bit is set.
991 @code{fno-sign-zero} does not print the negative sign of zero values for
992 compatibility with F77. Default behavior is to show the negative sign.
995 @node Code Gen Options
996 @section Options for code generation conventions
997 @cindex code generation, conventions
998 @cindex options, code generation
999 @cindex options, run-time
1001 These machine-independent options control the interface conventions
1002 used in code generation.
1004 Most of them have both positive and negative forms; the negative form
1005 of @option{-ffoo} would be @option{-fno-foo}. In the table below, only
1006 one of the forms is listed---the one which is not the default. You
1007 can figure out the other form by either removing @option{no-} or adding
1011 @item -fno-automatic
1012 @opindex @code{fno-automatic}
1013 @cindex @code{SAVE} statement
1014 @cindex statement, @code{SAVE}
1015 Treat each program unit (except those marked as RECURSIVE) as if the
1016 @code{SAVE} statement were specified for every local variable and array
1017 referenced in it. Does not affect common blocks. (Some Fortran compilers
1018 provide this option under the name @option{-static} or @option{-save}.)
1019 The default, which is @option{-fautomatic}, uses the stack for local
1020 variables smaller than the value given by @option{-fmax-stack-var-size}.
1021 Use the option @option{-frecursive} to use no static memory.
1025 @cindex calling convention
1026 @cindex @command{f2c} calling convention
1027 @cindex @command{g77} calling convention
1028 @cindex libf2c calling convention
1029 Generate code designed to be compatible with code generated
1030 by @command{g77} and @command{f2c}.
1032 The calling conventions used by @command{g77} (originally implemented
1033 in @command{f2c}) require functions that return type
1034 default @code{REAL} to actually return the C type @code{double}, and
1035 functions that return type @code{COMPLEX} to return the values via an
1036 extra argument in the calling sequence that points to where to
1037 store the return value. Under the default GNU calling conventions, such
1038 functions simply return their results as they would in GNU
1039 C---default @code{REAL} functions return the C type @code{float}, and
1040 @code{COMPLEX} functions return the GNU C type @code{complex}.
1041 Additionally, this option implies the @option{-fsecond-underscore}
1042 option, unless @option{-fno-second-underscore} is explicitly requested.
1044 This does not affect the generation of code that interfaces with
1045 the @command{libgfortran} library.
1047 @emph{Caution:} It is not a good idea to mix Fortran code compiled with
1048 @option{-ff2c} with code compiled with the default @option{-fno-f2c}
1049 calling conventions as, calling @code{COMPLEX} or default @code{REAL}
1050 functions between program parts which were compiled with different
1051 calling conventions will break at execution time.
1053 @emph{Caution:} This will break code which passes intrinsic functions
1054 of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
1055 the library implementations use the @option{-fno-f2c} calling conventions.
1057 @item -fno-underscoring
1058 @opindex @code{fno-underscoring}
1060 @cindex symbol names, underscores
1061 @cindex transforming symbol names
1062 @cindex symbol names, transforming
1063 Do not transform names of entities specified in the Fortran
1064 source file by appending underscores to them.
1066 With @option{-funderscoring} in effect, GNU Fortran appends one
1067 underscore to external names with no underscores. This is done to ensure
1068 compatibility with code produced by many UNIX Fortran compilers.
1070 @emph{Caution}: The default behavior of GNU Fortran is
1071 incompatible with @command{f2c} and @command{g77}, please use the
1072 @option{-ff2c} option if you want object files compiled with
1073 GNU Fortran to be compatible with object code created with these
1076 Use of @option{-fno-underscoring} is not recommended unless you are
1077 experimenting with issues such as integration of GNU Fortran into
1078 existing system environments (vis-@`{a}-vis existing libraries, tools,
1081 For example, with @option{-funderscoring}, and assuming other defaults like
1082 @option{-fcase-lower} and that @code{j()} and @code{max_count()} are
1083 external functions while @code{my_var} and @code{lvar} are local variables,
1086 I = J() + MAX_COUNT (MY_VAR, LVAR)
1089 is implemented as something akin to:
1091 i = j_() + max_count__(&my_var__, &lvar);
1094 With @option{-fno-underscoring}, the same statement is implemented as:
1097 i = j() + max_count(&my_var, &lvar);
1100 Use of @option{-fno-underscoring} allows direct specification of
1101 user-defined names while debugging and when interfacing GNU Fortran
1102 code with other languages.
1104 Note that just because the names match does @emph{not} mean that the
1105 interface implemented by GNU Fortran for an external name matches the
1106 interface implemented by some other language for that same name.
1107 That is, getting code produced by GNU Fortran to link to code produced
1108 by some other compiler using this or any other method can be only a
1109 small part of the overall solution---getting the code generated by
1110 both compilers to agree on issues other than naming can require
1111 significant effort, and, unlike naming disagreements, linkers normally
1112 cannot detect disagreements in these other areas.
1114 Also, note that with @option{-fno-underscoring}, the lack of appended
1115 underscores introduces the very real possibility that a user-defined
1116 external name will conflict with a name in a system library, which
1117 could make finding unresolved-reference bugs quite difficult in some
1118 cases---they might occur at program run time, and show up only as
1119 buggy behavior at run time.
1121 In future versions of GNU Fortran we hope to improve naming and linking
1122 issues so that debugging always involves using the names as they appear
1123 in the source, even if the names as seen by the linker are mangled to
1124 prevent accidental linking between procedures with incompatible
1127 @item -fsecond-underscore
1128 @opindex @code{fsecond-underscore}
1130 @cindex symbol names, underscores
1131 @cindex transforming symbol names
1132 @cindex symbol names, transforming
1133 @cindex @command{f2c} calling convention
1134 @cindex @command{g77} calling convention
1135 @cindex libf2c calling convention
1136 By default, GNU Fortran appends an underscore to external
1137 names. If this option is used GNU Fortran appends two
1138 underscores to names with underscores and one underscore to external names
1139 with no underscores. GNU Fortran also appends two underscores to
1140 internal names with underscores to avoid naming collisions with external
1143 This option has no effect if @option{-fno-underscoring} is
1144 in effect. It is implied by the @option{-ff2c} option.
1146 Otherwise, with this option, an external name such as @code{MAX_COUNT}
1147 is implemented as a reference to the link-time external symbol
1148 @code{max_count__}, instead of @code{max_count_}. This is required
1149 for compatibility with @command{g77} and @command{f2c}, and is implied
1150 by use of the @option{-ff2c} option.
1152 @item -fbounds-check
1153 @opindex @code{fbounds-check}
1154 @cindex array, bounds checking
1155 @cindex bounds checking
1156 @cindex range checking
1157 @cindex subscript checking
1158 @cindex checking subscripts
1159 Enable generation of run-time checks for array subscripts
1160 and against the declared minimum and maximum values. It also
1161 checks array indices for assumed and deferred
1162 shape arrays against the actual allocated bounds.
1164 Some checks require that @option{-fbounds-check} is set for
1165 the compilation of the main program.
1167 In the future this may also include other forms of checking, e.g., checking
1168 substring references.
1171 @item fcheck-array-temporaries
1172 @opindex @code{fcheck-array-temporaries}
1173 @cindex checking array temporaries
1174 Warns at run time when for passing an actual argument a temporary array
1175 had to be generated. The information generated by this warning is
1176 sometimes useful in optimization, in order to avoid such temporaries.
1178 Note: The warning is only printed once per location.
1181 @item -fmax-stack-var-size=@var{n}
1182 @opindex @code{fmax-stack-var-size}
1183 This option specifies the size in bytes of the largest array that will be put
1184 on the stack; if the size is exceeded static memory is used (except in
1185 procedures marked as RECURSIVE). Use the option @option{-frecursive} to
1186 allow for recursive procedures which do not have a RECURSIVE attribute or
1187 for parallel programs. Use @option{-fno-automatic} to never use the stack.
1189 This option currently only affects local arrays declared with constant
1190 bounds, and may not apply to all character variables.
1191 Future versions of GNU Fortran may improve this behavior.
1193 The default value for @var{n} is 32768.
1195 @item -fpack-derived
1196 @opindex @code{fpack-derived}
1197 @cindex structure packing
1198 This option tells GNU Fortran to pack derived type members as closely as
1199 possible. Code compiled with this option is likely to be incompatible
1200 with code compiled without this option, and may execute slower.
1202 @item -frepack-arrays
1203 @opindex @code{frepack-arrays}
1204 @cindex repacking arrays
1205 In some circumstances GNU Fortran may pass assumed shape array
1206 sections via a descriptor describing a noncontiguous area of memory.
1207 This option adds code to the function prologue to repack the data into
1208 a contiguous block at runtime.
1210 This should result in faster accesses to the array. However it can introduce
1211 significant overhead to the function call, especially when the passed data
1215 @opindex @code{fshort-enums}
1216 This option is provided for interoperability with C code that was
1217 compiled with the @option{-fshort-enums} option. It will make
1218 GNU Fortran choose the smallest @code{INTEGER} kind a given
1219 enumerator set will fit in, and give all its enumerators this kind.
1221 @item -fexternal-blas
1222 @opindex @code{fexternal-blas}
1223 This option will make @command{gfortran} generate calls to BLAS functions
1224 for some matrix operations like @code{MATMUL}, instead of using our own
1225 algorithms, if the size of the matrices involved is larger than a given
1226 limit (see @option{-fblas-matmul-limit}). This may be profitable if an
1227 optimized vendor BLAS library is available. The BLAS library will have
1228 to be specified at link time.
1230 @item -fblas-matmul-limit=@var{n}
1231 @opindex @code{fblas-matmul-limit}
1232 Only significant when @option{-fexternal-blas} is in effect.
1233 Matrix multiplication of matrices with size larger than (or equal to) @var{n}
1234 will be performed by calls to BLAS functions, while others will be
1235 handled by @command{gfortran} internal algorithms. If the matrices
1236 involved are not square, the size comparison is performed using the
1237 geometric mean of the dimensions of the argument and result matrices.
1239 The default value for @var{n} is 30.
1242 @opindex @code{frecursive}
1243 Allow indirect recursion by forcing all local arrays to be allocated
1244 on the stack. This flag cannot be used together with
1245 @option{-fmax-stack-var-size=} or @option{-fno-automatic}.
1247 @item -finit-local-zero
1248 @item -finit-integer=@var{n}
1249 @item -finit-real=@var{<zero|inf|-inf|nan>}
1250 @item -finit-logical=@var{<true|false>}
1251 @item -finit-character=@var{n}
1252 @opindex @code{finit-local-zero}
1253 @opindex @code{finit-integer}
1254 @opindex @code{finit-real}
1255 @opindex @code{finit-logical}
1256 @opindex @code{finit-character}
1257 The @option{-finit-local-zero} option instructs the compiler to
1258 initialize local @code{INTEGER}, @code{REAL}, and @code{COMPLEX}
1259 variables to zero, @code{LOGICAL} variables to false, and
1260 @code{CHARACTER} variables to a string of null bytes. Finer-grained
1261 initialization options are provided by the
1262 @option{-finit-integer=@var{n}},
1263 @option{-finit-real=@var{<zero|inf|-inf|nan>}} (which also initializes
1264 the real and imaginary parts of local @code{COMPLEX} variables),
1265 @option{-finit-logical=@var{<true|false>}}, and
1266 @option{-finit-character=@var{n}} (where @var{n} is an ASCII character
1267 value) options. These options do not initialize components of derived
1268 type variables, nor do they initialize variables that appear in an
1269 @code{EQUIVALENCE} statement. (This limitation may be removed in
1272 Note that the @option{-finit-real=nan} option initializes @code{REAL}
1273 and @code{COMPLEX} variables with a quiet NaN.
1276 @xref{Code Gen Options,,Options for Code Generation Conventions,
1277 gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1279 shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
1284 @node Environment Variables
1285 @section Environment variables affecting @command{gfortran}
1286 @cindex environment variable
1288 @c man begin ENVIRONMENT
1290 The @command{gfortran} compiler currently does not make use of any environment
1291 variables to control its operation above and beyond those
1292 that affect the operation of @command{gcc}.
1294 @xref{Environment Variables,,Environment Variables Affecting GCC,
1295 gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
1298 @xref{Runtime}, for environment variables that affect the
1299 run-time behavior of programs compiled with GNU Fortran.