OSDN Git Service

gcc:
[pf3gnuchains/gcc-fork.git] / gcc / fortran / invoke.texi
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.
5
6 @ignore
7 @c man begin COPYRIGHT
8 Copyright @copyright{} 2004, 2005, 2006, 2007
9 Free Software Foundation, Inc.
10
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.
18  
19 (a) The FSF's Front-Cover Text is:
20
21      A GNU Manual
22
23 (b) The FSF's Back-Cover Text is:
24
25      You have freedom to copy and modify this GNU Manual, like GNU
26      software.  Copies published by the Free Software Foundation raise
27      funds for GNU development.
28 @c man end
29 @c Set file name and title for the man page.
30 @setfilename gfortran
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{}
41
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
60
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
66
67 @c man begin DESCRIPTION
68
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.
71
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).
76
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.
85
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
91
92 @menu
93 * Option Summary::      Brief list of all @command{gfortran} options,
94                         without explanations.
95 * Fortran Dialect Options::  Controlling the variant of Fortran language
96                              compiled.
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
107
108 @node Option Summary
109 @section Option summary
110
111 @c man begin OPTIONS
112
113 Here is a summary of all the options specific to GNU Fortran, grouped
114 by type.  Explanations are in the following sections.
115
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}
126
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}
134
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}
143
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}
148
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}}
152
153 @item Link Options
154 @xref{Link Options,,Options for influencing the linking step}.
155 @gccoptlist{-static-libgfortran}
156
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}
161
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
172
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
185
186 @node Fortran Dialect Options
187 @section Options controlling Fortran dialect
188 @cindex dialect options
189 @cindex language, dialect options
190 @cindex options, dialect
191
192 The following options control the details of the Fortran dialect
193 accepted by the compiler:
194
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.
207
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}.
214
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.
224
225 @item -fdefault-double-8
226 @opindex @code{fdefault-double-8}
227 Set the @code{DOUBLE PRECISION} type to an 8 byte wide type.
228
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.
233
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.
238
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.
245
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.
261
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}.
269
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.
276
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}.
285
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}.
294
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).
299
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.
305
306 @item -fcray-pointer
307 @opindex @code{fcray-pointer}
308 Enable the Cray pointer extension, which provides C-like pointer
309 functionality.
310
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}.
321
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.
335
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.
351
352 @end table
353
354 @node Preprocessing Options
355 @section Enable and customize preprocessing
356 @cindex preprocessor
357 @cindex options, preprocessor
358 @cindex CPP
359
360 Preprocessor related options. See section 
361 @ref{Preprocessing and conditional compilation} for more detailed
362 information on preprocessing in @command{gfortran}.
363
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.
375
376 To disable preprocessing of files with any of the above listed extensions,
377 use the negative form: @option{-nocpp}.
378
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.
382
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.
396
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.
405
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.
411
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.
420
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.
427
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.
443
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.
449
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{'/'}.
456
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.
462
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}.
471
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}.
481
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.
487
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.
492
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.
499
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}.
504
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.
511
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{'#'}.
517
518 Warning: this currently handles C-Style comments only. The preprocessor
519 does not yet recognize Fortran-style comments.
520
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.
527
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.
533
534 Warning: this currently handles C- and C++-Style comments only. The
535 preprocessor does not yet recognize Fortran-style comments.
536
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}.
541
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.
549
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.
553
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.
559
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.
563
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.
569
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.
577
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
584
585
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
594
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.  
599
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.
604
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.
611
612 These options control the amount and kinds of errors and warnings produced
613 by GNU Fortran:
614
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.
623
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.
630
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}.
637
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.
643
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.
648
649 This should be used in conjunction with @option{-std=f95},
650 @option{-std=f2003} or @option{-std=f2008}.
651
652 @item -pedantic-errors
653 @opindex @code{pedantic-errors}
654 Like @option{-pedantic}, except that errors are produced rather than
655 warnings.
656
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}.
666
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.
675
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
685
686   call bar(a,a)
687 @end smallexample
688
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.
699
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.
704
705 @item -Wline-truncation
706 @opindex @code{Wline-truncation}
707 @cindex warnings, line truncation
708 Warn when a source code line will be truncated.
709
710 @item -Wconversion
711 @opindex @code{Wconversion}
712 @cindex warnings, conversion
713 @cindex conversion
714 Warn about implicit conversions between different types.
715
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.
722
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.
728
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.
734
735 This currently produces a warning under the following circumstances:
736
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.
741
742 @item
743 A LOGICAL SELECT construct has three CASE statements.
744
745 @item
746 A TRANSFER specifies a source that is shorter than the destination.
747 @end itemize
748
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}.
759
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.
766
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}.
776
777 @item -Werror
778 @opindex @code{Werror}
779 @cindex warnings, to errors
780 Turns all warnings into errors.
781 @end table
782
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.
787
788 Some of these have no effect when compiling programs written in Fortran.
789
790 @node Debugging Options
791 @section Options for debugging your program or GNU Fortran
792 @cindex options, debugging
793 @cindex debugging information options
794
795 GNU Fortran has various special options that are used for debugging
796 either your program or the GNU Fortran compiler.
797
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.
803
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).
816
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.
821
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.
831
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
839
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.
843
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.
854
855 It also affects the search paths used by @command{cpp} when used to preprocess
856 Fortran source.
857
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).
869
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.
874
875 This path is also used to search for @file{.mod} files when previously
876 compiled modules are required by a @code{USE} statement.
877
878 @xref{Directory Options,,Options for Directory Search,
879 gcc,Using the GNU Compiler Collection (GCC)}, for information on the
880 @option{-I} option.
881
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.
891
892 The default is the current directory.
893
894 @option{-M} is deprecated to avoid conflicts with existing GCC options.
895
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
903
904 @node Link Options
905 @section Influencing the linking step
906 @cindex options, linking
907 @cindex linking, static
908
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.
912
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
921
922
923 @node Runtime Options
924 @section Influencing runtime behavior
925 @cindex options, runtime
926
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.
936
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}.}
940
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}.
949
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.
955
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
962
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
968
969 These machine-independent options control the interface conventions
970 used in code generation.
971
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
976 it.
977
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. 
990
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}.
999
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.
1011
1012 This does not affect the generation of code that interfaces with
1013 the @command{libgfortran} library.
1014
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.
1020
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.
1024
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.
1033
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.
1037
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.
1043
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).
1048
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
1061
1062 With @option{-fno-underscoring}, the same statement is implemented as:
1063
1064 @smallexample
1065 i = j() + max_count(&my_var, &lvar);
1066 @end smallexample
1067
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.
1071
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.
1081
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.
1088
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.
1094
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.
1110
1111 This option has no effect if @option{-fno-underscoring} is
1112 in effect.  It is implied by the @option{-ff2c} option.
1113
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.
1119
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.
1131
1132 Some checks require that @option{-fbounds-check} is set for
1133 the compilation of the main program.
1134
1135 In the future this may also include other forms of checking, e.g., checking
1136 substring references.
1137
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.
1145
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.
1149
1150 The default value for @var{n} is 32768.
1151
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.
1158
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.
1166
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.
1170
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.
1177
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.
1186
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.
1195
1196 The default value for @var{n} is 30.
1197
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}.
1203
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).
1228
1229 Note that the @option{-finit-real=nan} option initializes @code{REAL}
1230 and @code{COMPLEX} variables with a quiet NaN.
1231 @end table
1232
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.
1237
1238
1239 @c man end
1240
1241 @node Environment Variables
1242 @section Environment variables affecting @command{gfortran}
1243 @cindex environment variable
1244
1245 @c man begin ENVIRONMENT
1246
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}.
1250
1251 @xref{Environment Variables,,Environment Variables Affecting GCC,
1252 gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
1253 variables.
1254
1255 @xref{Runtime}, for environment variables that affect the
1256 run-time behavior of programs compiled with GNU Fortran.
1257 @c man end