OSDN Git Service

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