Update concepts branch to revision 131834
[official-gcc.git] / gcc / fortran / invoke.texi
blob1494c04013ecbd20ae0e87cbd9d2c3518136d048
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.
6 @ignore
7 @c man begin COPYRIGHT
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:
21      A GNU Manual
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.
28 @c man end
29 @c Set file name and title for the man page.
30 @setfilename gfortran
31 @settitle GNU Fortran compiler.
32 @c man begin SYNOPSIS
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
43 remainder.
44 @c man end
45 @c man begin SEEALSO
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}.
50 @c man end
51 @c man begin BUGS
52 For instructions on reporting bugs, see
53 @w{@value{BUGURL}}.
54 @c man end
55 @c man begin AUTHOR
56 See the Info entry for @command{gfortran} for contributors to GCC and
57 GNU Fortran.
58 @c man end
59 @end ignore
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.
90 @c man end
92 @menu
93 * Option Summary::      Brief list of all @command{gfortran} options,
94                         without explanations.
95 * Fortran Dialect Options::  Controlling the variant of Fortran language
96                              compiled.
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
104                         and register usage.
105 * Environment Variables:: Environment variables that affect @command{gfortran}.
106 @end menu
108 @node Option Summary
109 @section Option summary
111 @c man begin OPTIONS
113 Here is a summary of all the options specific to GNU Fortran, grouped
114 by type.  Explanations are in the following sections.
116 @table @emph
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
137 and warnings}.
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}}
153 @item Link Options
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}}
171 @end table
173 @menu
174 * Fortran Dialect Options::  Controlling the variant of Fortran language
175                              compiled.
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
183                         and register usage.
184 @end menu
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:
195 @table @gcctabopt
196 @item -ffree-form
197 @item -ffixed-form
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
223 comment lines.
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.
239 @item -fdollar-ok
240 @opindex @code{fdollar-ok}
241 @cindex $
242 @cindex symbol names
243 @cindex character set
244 Allow @samp{$} as a valid character in a symbol name.
246 @item -fbackslash
247 @opindex @code{backslash}
248 @cindex 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
260 unexpanded.
262 @item -fmodule-private
263 @opindex @code{fmodule-private}
264 @cindex module entities
265 @cindex private
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.
306 @item -fcray-pointer
307 @opindex @code{fcray-pointer}
308 Enable the Cray pointer extension, which provides C-like pointer
309 functionality.
311 @item -fopenmp
312 @opindex @code{fopenmp}
313 @cindex OpenMP
314 Enable the OpenMP extensions.  This includes OpenMP @code{!$omp} directives
315 in free form
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}
331 as appropriate.
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.
336 @item -std=@var{std}
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.
352 @end table
354 @node Preprocessing Options
355 @section Enable and customize preprocessing
356 @cindex preprocessor
357 @cindex options, preprocessor
358 @cindex CPP
360 Preprocessor related options. See section 
361 @ref{Preprocessing and conditional compilation} for more detailed
362 information on preprocessing in @command{gfortran}.
364 @table @gcctabopt
365 @item -cpp
366 @item -nocpp
367 @opindex @code{cpp}
368 @opindex @code{fpp}
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.
383 @item -dM
384 @opindex @code{dM}
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
392 @smallexample
393   touch foo.f90; gfortran -cpp -dM foo.f90
394 @end smallexample
395 will show all the predefined macros.
397 @item -dD
398 @opindex @code{dD}
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.
406 @item -dN
407 @opindex @code{dN}
408 @cindex preprocessor, debugging
409 @cindex debugging, preprocessor
410 Like @option{-dD}, but emit only the macro names, not their expansions.
412 @item -dU
413 @opindex @code{dU}
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.
421 @item -dI
422 @opindex @code{dI}
423 @cindex preprocessor, debugging
424 @cindex debugging, preprocessor
425 Output @code{'#include'} directives in addition to the result
426 of preprocessing.
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
448 C++ headers.
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}.
482 @item -nostdinc
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.
488 @item -undef
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}.
505 @item -C
506 @opindex @code{C}
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.
521 @item -CC
522 @opindex @code{CC}
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.
537 @item -D@var{name}
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
548 characters.
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'}
558 works.
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.
564 @item -H
565 @opindex @code{H}
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'}
568 stack it is.
570 @item -P
571 @opindex @code{P}
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
576 by the linemarkers.
578 @item -U@var{name}
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.
583 @end table
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
613 by GNU Fortran:
615 @table @gcctabopt
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
622 messages produced.
624 @item -fsyntax-only
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
629 other output file.
631 @item -pedantic
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
639 this option.
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
655 warnings.
657 @item -Wall
658 @opindex @code{Wall}
659 @cindex all warnings
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}.
667 @item -Waliasing
668 @opindex @code{Waliasing}
669 @cindex aliasing
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.
677 @smallexample
678   interface
679     subroutine bar(a,b)
680       integer, intent(in) :: a
681       integer, intent(out) :: b
682     end subroutine
683   end interface
684   integer :: a
686   call bar(a,a)
687 @end smallexample
689 @item -Wampersand
690 @opindex @code{Wampersand}
691 @cindex warnings, ampersand
692 @cindex &
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.
710 @item -Wconversion
711 @opindex @code{Wconversion}
712 @cindex warnings, conversion
713 @cindex 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.
729 @item -Wsurprising
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:
737 @itemize @bullet
738 @item
739 An INTEGER SELECT construct has a CASE that can never be matched as its
740 lower value is greater than its upper value.
742 @item
743 A LOGICAL SELECT construct has three CASE statements.
745 @item
746 A TRANSFER specifies a source that is shorter than the destination.
747 @end itemize
749 @item -Wtabs
750 @opindex @code{Wtabs}
751 @cindex warnings, tabs
752 @cindex tabulators
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}.
760 @item -Wunderflow
761 @opindex @code{Wunderflow}
762 @cindex warnings, underflow
763 @cindex 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}.
777 @item -Werror
778 @opindex @code{Werror}
779 @cindex warnings, to errors
780 Turns all warnings into errors.
781 @end table
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.
798 @table @gcctabopt
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.
822 @item -fbacktrace
823 @opindex @code{fbacktrace}
824 @cindex backtrace
825 @cindex trace
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.
832 @item -fdump-core
833 @cindex core, dump
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.
838 @end table
840 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
841 gcc,Using the GNU Compiler Collection (GCC)}, for more information on
842 debugging options.
844 @node Directory Options
845 @section Options for directory search
846 @cindex directory, options
847 @cindex options, directory search
848 @cindex search path
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
856 Fortran source.
858 @table @gcctabopt
859 @item -I@var{dir}
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}
868 preprocessor).
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
880 @option{-I} option.
882 @item -J@var{dir}
883 @item -M@var{dir}
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}
890 statement.
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.
902 @end table
904 @node Link Options
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 
911 a link step.
913 @table @gcctabopt
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.
920 @end table
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.
928 @table @gcctabopt
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.
956 @item -fsign-zero
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.
961 @end table
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
978 @table @gcctabopt
979 @item -fno-automatic
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. 
991 @item -ff2c
992 @opindex ff2c
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}
1027 @cindex underscore
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
1042 tools.
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,
1047 and so on).
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,
1052 a statement like
1053 @smallexample
1054 I = J() + MAX_COUNT (MY_VAR, LVAR)
1055 @end smallexample
1056 @noindent
1057 is implemented as something akin to:
1058 @smallexample
1059 i = j_() + max_count__(&my_var__, &lvar);
1060 @end smallexample
1062 With @option{-fno-underscoring}, the same statement is implemented as:
1064 @smallexample
1065 i = j() + max_count(&my_var, &lvar);
1066 @end smallexample
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
1093 interfaces.
1095 @item -fsecond-underscore
1096 @opindex @code{fsecond-underscore}
1097 @cindex 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
1109 names.
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
1169 is noncontiguous.
1171 @item -fshort-enums
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.
1198 @item -frecursive
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
1227 future releases).
1229 Note that the @option{-finit-real=nan} option initializes @code{REAL}
1230 and @code{COMPLEX} variables with a quiet NaN.
1231 @end table
1233 @xref{Code Gen Options,,Options for Code Generation Conventions,
1234 gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1235 offered by the GBE
1236 shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
1239 @c man end
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
1253 variables.
1255 @xref{Runtime}, for environment variables that affect the
1256 run-time behavior of programs compiled with GNU Fortran.
1257 @c man end