intrinsic.texi: Improvements to index entries; change @findex entries to @cindex...
[official-gcc.git] / gcc / fortran / invoke.texi
blob05886c2e03f00da349543202b0c642634302a9ec
1 @c Copyright (C) 2004, 2005, 2006
2 @c Free Software Foundation, Inc.
3 @c This is part of the GNU Fortran manual.   
4 @c For copying conditions, see the file gfortran.texi.
6 @ignore
7 @c man begin COPYRIGHT
8 Copyright @copyright{} 2004, 2005, 2006
9 Free Software Foundation, Inc.
11 Permission is granted to copy, distribute and/or modify this document
12 under the terms of the GNU Free Documentation License, Version 1.2 or
13 any later version published by the Free Software Foundation; with the
14 Invariant Sections being ``GNU General Public License'' and ``Funding
15 Free Software'', the Front-Cover texts being (a) (see below), and with
16 the Back-Cover Texts being (b) (see below).  A copy of the license is
17 included in the gfdl(7) man page.
19 (a) The FSF's Front-Cover Text is:
21      A GNU Manual
23 (b) The FSF's Back-Cover Text is:
25      You have freedom to copy and modify this GNU Manual, like GNU
26      software.  Copies published by the Free Software Foundation raise
27      funds for GNU development.
28 @c man end
29 @c Set file name and title for the man page.
30 @setfilename gfortran
31 @settitle GNU Fortran compiler.
32 @c man begin SYNOPSIS
33 gfortran [@option{-c}|@option{-S}|@option{-E}]
34          [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
35          [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
36          [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
37          [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
38          [@option{-f}@var{option}@dots{}]
39          [@option{-m}@var{machine-option}@dots{}]
40          [@option{-o} @var{outfile}] @var{infile}@dots{}
42 Only the most useful options are listed here; see below for the
43 remainder.
44 @c man end
45 @c man begin SEEALSO
46 gpl(7), gfdl(7), fsf-funding(7),
47 cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
48 and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
49 @file{ld}, @file{binutils} and @file{gdb}.
50 @c man end
51 @c man begin BUGS
52 For instructions on reporting bugs, see
53 @w{@uref{http://gcc.gnu.org/bugs.html}}.
54 @c man end
55 @c man begin AUTHOR
56 See the Info entry for @command{gfortran} for contributors to GCC and
57 GNU Fortran.
58 @c man end
59 @end ignore
61 @node Invoking GNU Fortran
62 @chapter GNU Fortran Command Options
63 @cindex GNU Fortran command options
64 @cindex command options
65 @cindex options, @command{gfortran} command
67 @c man begin DESCRIPTION
69 The @command{gfortran} command supports all the options supported by the
70 @command{gcc} command.  Only options specific to GNU Fortran are documented here.
72 @xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
73 Collection (GCC)}, for information
74 on the non-Fortran-specific aspects of the @command{gcc} command (and,
75 therefore, the @command{gfortran} command).
77 @cindex options, negative forms
78 @cindex negative forms of options
79 All GCC and GNU Fortran options
80 are accepted both by @command{gfortran} and by @command{gcc}
81 (as well as any other drivers built at the same time,
82 such as @command{g++}),
83 since adding GNU Fortran to the GCC distribution
84 enables acceptance of GNU Fortran options
85 by all of the relevant drivers.
87 In some cases, options have positive and negative forms;
88 the negative form of @option{-ffoo} would be @option{-fno-foo}.
89 This manual documents only one of these two forms, whichever
90 one is not the default.
91 @c man end
93 @menu
94 * Option Summary::      Brief list of all @command{gfortran} options,
95                         without explanations.
96 * Fortran Dialect Options::  Controlling the variant of Fortran language
97                              compiled.
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 * Runtime Options::     Influencing runtime behavior
102 * Code Gen Options::    Specifying conventions for function calls, data layout
103                         and register usage.
104 * Environment Variables:: Env vars that affect @command{gfortran}.
105 @end menu
107 @node Option Summary
108 @section Option Summary
110 @c man begin OPTIONS
112 Here is a summary of all the options specific to GNU Fortran, grouped
113 by type.  Explanations are in the following sections.
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  -frange-check }
126 @item Error and Warning Options
127 @xref{Error and Warning Options,,Options to Request or Suppress Errors
128 and Warnings}.
129 @gccoptlist{-fmax-errors=@var{n} @gol
130 -fsyntax-only  -pedantic  -pedantic-errors @gol
131 -w  -Wall  -Waliasing  -Wampersand  -Wconversion  -Wimplicit-interface @gol
132 -Wtabs -Wnonstd-intrinsics -Wsurprising -Wunderflow @gol
133 -Wline-truncation -W}
135 @item Debugging Options
136 @xref{Debugging Options,,Options for Debugging Your Program or GCC}.
137 @gccoptlist{-fdump-parse-tree  -ffpe-trap=@var{list}}
139 @item Directory Options
140 @xref{Directory Options,,Options for Directory Search}.
141 @gccoptlist{-I@var{dir}  -M@var{dir}}
143 @item Runtime Options
144 @xref{Runtime Options,,Options for influencing runtime behavior}.
145 @gccoptlist{-fconvert=@var{conversion} -frecord-marker=@var{length}}
147 @item Code Generation Options
148 @xref{Code Gen Options,,Options for Code Generation Conventions}.
149 @gccoptlist{-fno-automatic  -ff2c  -fno-underscoring
150 -fsecond-underscore @gol
151 -fbounds-check  -fmax-stack-var-size=@var{n} @gol
152 -fpack-derived  -frepack-arrays  -fshort-enums  -fexternal-blas @gol
153 -fblas-matmul-limit=@var{n}}
154 @end table
156 @menu
157 * Fortran Dialect Options::  Controlling the variant of Fortran language
158                              compiled.
159 * Error and Warning Options::     How picky should the compiler be?
160 * Debugging Options::   Symbol tables, measurements, and debugging dumps.
161 * Directory Options::   Where to find module files
162 * Runtime Options::     Influencing runtime behavior
163 * Code Gen Options::    Specifying conventions for function calls, data layout
164                         and register usage.
165 @end menu
167 @node Fortran Dialect Options
168 @section Options Controlling Fortran Dialect
169 @cindex dialect options
170 @cindex language, dialect options
171 @cindex options, dialect
173 The following options control the details of the Fortran dialect
174 accepted by the compiler:
176 @table @gcctabopt
177 @item -ffree-form
178 @item -ffixed-form
179 @cindex @code{-ffree-form} option
180 @cindex option, @code{-ffree-form}
181 @cindex @code{-fno-fixed-form} option
182 @cindex option, @code{-fno-fixed-form}
183 @cindex source file format
184 @cindex free form
185 @cindex fixed form
186 @cindex Source Form
187 @cindex Fortran 90, features
188 Specify the layout used by the source file.  The free form layout
189 was introduced in Fortran 90.  Fixed form was traditionally used in
190 older Fortran programs.  When neither option is specified, the source
191 form is determined by the file extension.
193 @item -fall-intrinsics
194 @cindex @code{-fall-intrinsics} option
195 @cindex option, @code{-fall-intrinsics}
196 Accept all of the intrinsic procedures provided in libgfortran 
197 without regard to the setting of @option{-std}.  In particular, 
198 this option can be quite useful with @option{-std=f95}.  Additionally,
199 @command{gfortran} will ignore @option{-Wnonstd-intrinsics}.
201 @item -fd-lines-as-code
202 @item -fd-lines-as-comment
203 @cindex @code{-fd-lines-as-code}, option
204 @cindex option, @code{-fd-lines-as-code}
205 @cindex @code{-fd-lines-as-comments}, option
206 @cindex option, @code{-fd-lines-as-comments}
207 Enable special treatment for lines beginning with @code{d} or @code{D}
208 in fixed form sources.  If the @option{-fd-lines-as-code} option is
209 given they are treated as if the first column contained a blank.  If the
210 @option{-fd-lines-as-comments} option is given, they are treated as
211 comment lines.
213 @item -fdefault-double-8
214 @cindex @code{-fdefault-double-8}, option
215 @cindex option, @code{-fdefault-double-8}
216 Set the @code{DOUBLE PRECISION} type to an 8 byte wide type.
218 @item -fdefault-integer-8
219 @cindex @code{-fdefault-integer-8}, option
220 @cindex option, @code{-fdefault-integer-8}
221 Set the default integer and logical types to an 8 byte wide type.
222 Do nothing if this is already the default.
224 @item -fdefault-real-8
225 @cindex @code{-fdefault-real-8}, option
226 @cindex option, @code{-fdefault-real-8}
227 Set the default real type to an 8 byte wide type.
228 Do nothing if this is already the default.
230 @item -fdollar-ok
231 @cindex @code{-fdollar-ok} option
232 @cindex option, @code{-fdollar-ok}
233 @cindex dollar sign
234 @cindex symbol names
235 @cindex character set
236 Allow @samp{$} as a valid character in a symbol name.
238 @item -fno-backslash
239 @cindex @code{-fno-backslash} option
240 @cindex option, @code{-fno-backslash}
241 @cindex backslash
242 @cindex escape characters
243 Change the interpretation of backslashes in string literals from
244 ``C-style'' escape characters to a single backslash character.
246 @item -ffixed-line-length-@var{n}
247 @cindex @code{-ffixed-line-length-}@var{n} option
248 @cindex option, @code{-ffixed-line-length-}@var{n}
249 @cindex source file format
250 @cindex lines, length
251 @cindex length of source lines
252 @cindex fixed form
253 @cindex limits, lengths of source lines
254 Set column after which characters are ignored in typical fixed-form
255 lines in the source file, and through which spaces are assumed (as
256 if padded to that length) after the ends of short fixed-form lines.
258 @cindex card image
259 @cindex extended-source option
260 Popular values for @var{n} include 72 (the
261 standard and the default), 80 (card image), and 132 (corresponding
262 to ``extended-source'' options in some popular compilers).
263 @var{n} may also be @samp{none}, meaning that the entire line is meaningful
264 and that continued character constants never have implicit spaces appended
265 to them to fill out the line.
266 @option{-ffixed-line-length-0} means the same thing as
267 @option{-ffixed-line-length-none}.
269 @item -ffree-line-length-@var{n}
270 @cindex @code{-ffree-line-length-}@var{n} option
271 @cindex option, @code{-ffree-line-length-}@var{n}
272 @cindex source file format
273 @cindex lines, length
274 @cindex length of source lines
275 @cindex free form
276 @cindex limits, lengths of source lines
277 Set column after which characters are ignored in typical free-form
278 lines in the source file. The default value is 132.
279 @var{n} may be @samp{none}, meaning that the entire line is meaningful.
280 @option{-ffree-line-length-0} means the same thing as
281 @option{-ffree-line-length-none}.
283 @item -fmax-identifier-length=@var{n}
284 @cindex @code{-fmax-identifier-length=}@var{n} option
285 @cindex option @option{-fmax-identifier-length=}@var{n}
286 Specify the maximum allowed identifier length. Typical values are
287 31 (Fortran 95) and 63 (Fortran 2003).
289 @item -fimplicit-none
290 @cindex @code{-fimplicit-none} option
291 @cindex option, @code{-fimplicit-none}
292 Specify that no implicit typing is allowed, unless overridden by explicit
293 @code{IMPLICIT} statements.  This is the equivalent of adding
294 @code{implicit none} to the start of every procedure.
296 @item -fcray-pointer
297 @cindex @code{-fcray-pointer} option
298 @cindex option, @code{-fcray-pointer}
299 Enable the Cray pointer extension, which provides C-like pointer
300 functionality.
302 @item -fopenmp
303 @cindex @code{-fopenmp} option
304 @cindex option, @code{-fopenmp}
305 Enable the OpenMP extensions.  This includes OpenMP @code{!$omp} directives
306 in free form
307 and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
308 @code{!$} conditional compilation sentinels in free form
309 and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form, 
310 and when linking arranges for the OpenMP runtime library to be linked
313 @item -frange-check
314 @cindex @code{-frange-check} option
315 @cindex option, @code{-frange-check}
316 Enable range checking on results of simplification of constant
317 expressions during compilation.  For example, by default, GNU Fortran
318 will give an overflow error at compile time when simplifying @code{a =
319 EXP(1000)}. With @option{-fno-range-check}, no error will be given and
320 the variable @code{a} will be assigned the value @code{+Infinity}.
321 Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
322 on most systems, but with @option{-fno-range-check} the value will
323 ``wrap around'' and @code{i} will be initialized to @math{-1} instead.
325 @item -std=@var{std}
326 @cindex @code{-std=}@var{std} option
327 @cindex option, @code{-std=}@var{std}
328 Conform to the specified standard.  The default value for @var{std} is
329 @samp{gnu}; a superset of the Fortran 95 standard which includes all
330 of the GNU extensions recommended for use in new code.  The @samp{legacy}
331 value also includes obsolete extensions that may be required for old 
332 non-standard programs.  Strict conformance to the Fortran 95 and Fortran 2003
333 standards is specified by @samp{f95} and @samp{f2003}, respectively.
335 @end table
337 @node Error and Warning Options
338 @section Options to Request or Suppress Errors and Warnings
339 @cindex options, warnings
340 @cindex options, errors
341 @cindex warnings, suppressing
342 @cindex messages, error
343 @cindex messages, warning
344 @cindex suppressing warnings
346 Errors are diagnostic messages that report that the GNU Fortran compiler
347 cannot compile the relevant piece of source code.  The compiler will
348 continue to process the program in an attempt to report further errors
349 to aid in debugging, but will not produce any compiled output.  
351 Warnings are diagnostic messages that report constructions which
352 are not inherently erroneous but which are risky or suggest there is
353 likely to be a bug in the program.  Unless @option{-Werror} is specified,
354 they do not prevent compilation of the program.
356 You can request many specific warnings with options beginning @option{-W},
357 for example @option{-Wimplicit} to request warnings on implicit
358 declarations.  Each of these specific warning options also has a
359 negative form beginning @option{-Wno-} to turn off warnings;
360 for example, @option{-Wno-implicit}.  This manual lists only one of the
361 two forms, whichever is not the default.
363 These options control the amount and kinds of errors and warnings produced
364 by GNU Fortran:
366 @table @gcctabopt
367 @item -fmax-errors-@var{n}
368 @cindex @code{-fmax-errors-}@var{n} option
369 @cindex option, @code{-fmax-errors-}@var{n}
370 @cindex errors, limiting
371 Limits the maximum number of error messages to @var{n}, at which point
372 GNU Fortran bails out rather than attempting to continue processing the
373 source code.  If @var{n} is 0, there is no limit on the number of error
374 messages produced.
376 @item -fsyntax-only
377 @cindex @code{-fsyntax-only} option
378 @cindex option, @code{-fsyntax-only}
379 @cindex syntax checking
380 Check the code for syntax errors, but don't do anything beyond that.
382 @item -pedantic
383 @cindex @code{-pedantic} option
384 @cindex option, @code{-pedantic}
385 Issue warnings for uses of extensions to Fortran 95.
386 @option{-pedantic} also applies to C-language constructs where they
387 occur in GNU Fortran source files, such as use of @samp{\e} in a
388 character constant within a directive like @code{#include}.
390 Valid Fortran 95 programs should compile properly with or without
391 this option.
392 However, without this option, certain GNU extensions and traditional
393 Fortran features are supported as well.
394 With this option, many of them are rejected.
396 Some users try to use @option{-pedantic} to check programs for conformance.
397 They soon find that it does not do quite what they want---it finds some
398 nonstandard practices, but not all.
399 However, improvements to GNU Fortran in this area are welcome.
401 This should be used in conjunction with @option{-std=f95} or
402 @option{-std=f2003}.
404 @item -pedantic-errors
405 @cindex @code{-pedantic-errors} option
406 @cindex option, @code{-pedantic-errors}
407 Like @option{-pedantic}, except that errors are produced rather than
408 warnings.
410 @item -w
411 @cindex @code{-w} option
412 @cindex option, @code{-w}
413 Inhibit all warning messages.
415 @item -Wall
416 @cindex @code{-Wall} option
417 @cindex option, @code{-Wall}
418 @cindex all warnings
419 @cindex warnings, all
420 Enables commonly used warning options pertaining to usage that
421 we recommend avoiding and that we believe are easy to avoid.
422 This currently includes @option{-Waliasing},
423 @option{-Wampersand}, @option{-Wsurprising}, @option{-Wnonstd-intrinsic},
424 @option{-Wno-tabs}, and @option{-Wline-truncation}.
426 @item -Waliasing
427 @cindex @code{-Waliasing} option
428 @cindex option, @code{-Waliasing}
429 @cindex aliasing
430 Warn about possible aliasing of dummy arguments. Specifically, it warns
431 if the same actual argument is associated with a dummy argument with
432 @code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
433 with an explicit interface.
435 The following example will trigger the warning.
436 @smallexample
437   interface
438     subroutine bar(a,b)
439       integer, intent(in) :: a
440       integer, intent(out) :: b
441     end subroutine
442   end interface
443   integer :: a
445   call bar(a,a)
446 @end smallexample
448 @item -Wampersand
449 @cindex @code{-Wampersand} option
450 @cindex option, @code{-Wampersand}
451 @cindex ampersand
452 Warn about missing ampersand in continued character constants. The warning is
453 given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95}, and
454 @option{-std=f2003}. Note: With no ampersand given in a continued character
455 constant, GNU Fortran assumes continuation at the first non-comment,
456 non-whitespace character after the ampersand that initiated the continuation.
458 @item -Wconversion
459 @cindex @code{-Wconversion} option
460 @cindex option, @code{-Wconversion}
461 @cindex conversion
462 Warn about implicit conversions between different types.
464 @item -Wimplicit-interface
465 @cindex @code{-Wimplicit-interface} option
466 @cindex option, @code{-Wimplicit-interface}
467 Warn if a procedure is called without an explicit interface.
468 Note this only checks that an explicit interface is present.  It does not
469 check that the declared interfaces are consistent across program units.
471 @item -Wnonstd-intrinsic
472 @cindex @code{-Wnonstd-intrinsic} option
473 @cindex option, @code{-Wnonstd-intrinsic}
474 Warn if the user tries to use an intrinsic that does not belong to the 
475 standard the user has chosen via the -std option.
477 @item -Wsurprising
478 @cindex @code{-Wsurprising} option
479 @cindex option, @code{-Wsurprising}
480 @cindex Suspicious code
481 Produce a warning when ``suspicious'' code constructs are encountered.
482 While technically legal these usually indicate that an error has been made.
484 This currently produces a warning under the following circumstances:
486 @itemize @bullet
487 @item
488 An INTEGER SELECT construct has a CASE that can never be matched as its
489 lower value is greater than its upper value.
491 @item
492 A LOGICAL SELECT construct has three CASE statements.
493 @end itemize
495 @item -Wtabs
496 @cindex @code{-Wtabs} option
497 @cindex option, @code{-Wtabs}
498 @cindex Tabs
499 By default, tabs are accepted as whitespace, but tabs are not members
500 of the Fortran Character Set.  @option{-Wno-tabs} will cause a warning
501 to be issued if a tab is encountered. Note, @option{-Wno-tabs} is active
502 for @option{-pedantic}, @option{-std=f95}, and @option{-Wall}.
504 @item -Wunderflow
505 @cindex @code{-Wunderflow} option
506 @cindex option, @code{-Wunderflow}
507 @cindex UNDERFLOW
508 Produce a warning when numerical constant expressions are
509 encountered, which yield an UNDERFLOW during compilation.
511 @item -Werror
512 @cindex @code{-Werror} option
513 @cindex option, @code{-Werror}
514 Turns all warnings into errors.
516 @item -W
517 @cindex @code{-W} option
518 @cindex option, @code{-W}
519 @cindex extra warnings
520 @cindex warnings, extra
521 Turns on ``extra warnings'' and, if optimization is specified
522 via @option{-O}, the @option{-Wuninitialized} option.
523 (This might change in future versions of GNU Fortran.)
524 @end table
526 @xref{Error and Warning Options,,Options to Request or Suppress Errors and
527 Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
528 more options offered by the GBE shared by @command{gfortran}, @command{gcc}
529 and other GNU compilers.
531 Some of these have no effect when compiling programs written in Fortran.
533 @node Debugging Options
534 @section Options for Debugging Your Program or GNU Fortran
535 @cindex options, debugging
536 @cindex debugging information options
538 GNU Fortran has various special options that are used for debugging
539 either your program or the GNU Fortran compiler.
541 @table @gcctabopt
542 @item -fdump-parse-tree
543 @cindex @code{-fdump-parse-tree} option
544 @cindex option, @code{-fdump-parse-tree}
545 Output the internal parse tree before starting code generation.  Only
546 really useful for debugging the GNU Fortran compiler itself.
548 @item -ffpe-trap=@var{list}
549 @cindex @code{-ffpe-trap=}@var{list} option
550 @cindex option, @code{-ffpe-trap=}@var{list}
551 Specify a list of IEEE exceptions when a Floating Point Exception
552 (FPE) should be raised.  On most systems, this will result in a SIGFPE
553 signal being sent and the program being interrupted, producing a core
554 file useful for debugging.  @var{list} is a (possibly empty) comma-separated
555 list of the following IEEE exceptions: @samp{invalid} (invalid floating
556 point operation, such as @code{SQRT(-1.0)}), @samp{zero} (division by
557 zero), @samp{overflow} (overflow in a floating point operation),
558 @samp{underflow} (underflow in a floating point operation),
559 @samp{precision} (loss of precision during operation) and @samp{denormal}
560 (operation produced a denormal value).
561 @end table
563 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
564 gcc,Using the GNU Compiler Collection (GCC)}, for more information on
565 debugging options.
567 @node Directory Options
568 @section Options for Directory Search
569 @cindex directory, options
570 @cindex options, directory search
571 @cindex search path
572 @cindex INCLUDE directive
573 @cindex directive, INCLUDE
574 These options affect how GNU Fortran searches
575 for files specified by the @code{INCLUDE} directive and where it searches
576 for previously compiled modules.
578 It also affects the search paths used by @command{cpp} when used to preprocess
579 Fortran source.
581 @table @gcctabopt
582 @item -I@var{dir}
583 @cindex @code{-I}@var{dir} option
584 @cindex option, @code{-I}@var{dir}
585 @cindex directory, search paths for inclusion
586 @cindex inclusion, directory search paths for
587 @cindex search paths, for included files
588 @cindex paths, search
589 @cindex module search path
590 These affect interpretation of the @code{INCLUDE} directive
591 (as well as of the @code{#include} directive of the @command{cpp}
592 preprocessor).
594 Also note that the general behavior of @option{-I} and
595 @code{INCLUDE} is pretty much the same as of @option{-I} with
596 @code{#include} in the @command{cpp} preprocessor, with regard to
597 looking for @file{header.gcc} files and other such things.
599 This path is also used to search for @file{.mod} files when previously
600 compiled modules are required by a @code{USE} statement.
602 @xref{Directory Options,,Options for Directory Search,
603 gcc,Using the GNU Compiler Collection (GCC)}, for information on the
604 @option{-I} option.
606 @item -M@var{dir}
607 @item -J@var{dir}
608 @cindex @code{-M}@var{dir} option
609 @cindex option, -@code{-M}@var{dir}
610 @cindex @code{-J}@var{dir} option
611 @cindex option, -@code{-J}@var{dir}
612 This option specifies where to put @file{.mod} files for compiled modules.
613 It is also added to the list of directories to searched by an @code{USE}
614 statement.
616 The default is the current directory.
618 @option{-J} is an alias for @option{-M} to avoid conflicts with existing
619 GCC options.
620 @end table
622 @node Runtime Options
623 @section Influencing runtime behavior
624 @cindex runtime, options
626 These options affect the runtime behavior of programs compiled with GNU Fortran.
627 @table @gcctabopt
628 @item -fconvert=@var{conversion}
629 @cindex @code{-fconvert=}@var{conversion} option
630 @cindex option, @code{-fconvert=}@var{conversion}
631 Specify the representation of data for unformatted files.  Valid
632 values for conversion are: @samp{native}, the default; @samp{swap},
633 swap between big- and little-endian; @samp{big-endian}, use big-endian
634 representation for unformatted files; @samp{little-endian}, use little-endian
635 representation for unformatted files.
637 @emph{This option has an effect only when used in the main program.
638 The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
639 variable override the default specified by @option{-fconvert}.}
641 @item -frecord-marker=@var{length}
642 @cindex @code{-frecord-marker=}@var{length} option
643 @cindex option, @code{-frecord-marker=}@var{length}
644 Specify the length of record markers for unformatted files.
645 Valid values for @var{length} are 4 and 8.  Default is 4.
646 @emph{This is different from previous versions of gfortran},
647 which specified a default record marker length of 8 on most
648 systems.  If you want to read or write files compatible
649 with earlier versions of gfortran, use @option{-frecord-marker=8}.
651 @item -fmax-subrecord-length=@var{length}
652 @cindex @code{-fmax-subrecord-length=}@var{length} option
653 @cindex option, @code{-fmax-subrecord-length=}@var{length}
654 Specify the maximum length for a subrecord.  The maximum permitted
655 value for length is 2147483639, which is also the default.  Only
656 really useful for use by the gfortran testsuite.
657 @end table
659 @node Code Gen Options
660 @section Options for Code Generation Conventions
661 @cindex code generation, conventions
662 @cindex options, code generation
663 @cindex run-time, options
665 These machine-independent options control the interface conventions
666 used in code generation.
668 Most of them have both positive and negative forms; the negative form
669 of @option{-ffoo} would be @option{-fno-foo}.  In the table below, only
670 one of the forms is listed---the one which is not the default.  You
671 can figure out the other form by either removing @option{no-} or adding
674 @table @gcctabopt
675 @item -fno-automatic
676 @cindex @code{-fno-automatic} option
677 @cindex option, @code{-fno-automatic}
678 @cindex SAVE statement
679 @cindex statements, SAVE
680 Treat each program unit as if the @code{SAVE} statement was specified for
681 every local variable and array referenced in it. Does not affect common
682 blocks. (Some Fortran compilers provide this option under the name
683 @option{-static}.)
685 @item -ff2c
686 @cindex @code{-ff2c} option
687 @cindex option, @code{-ff2c}
688 @cindex calling convention
689 @cindex @command{f2c} calling convention
690 @cindex @command{g77} calling convention
691 @cindex libf2c calling convention
692 Generate code designed to be compatible with code generated
693 by @command{g77} and @command{f2c}.
695 The calling conventions used by @command{g77} (originally implemented
696 in @command{f2c}) require functions that return type
697 default @code{REAL} to actually return the C type @code{double}, and
698 functions that return type @code{COMPLEX} to return the values via an
699 extra argument in the calling sequence that points to where to
700 store the return value.  Under the default GNU calling conventions, such
701 functions simply return their results as they would in GNU
702 C---default @code{REAL} functions return the C type @code{float}, and
703 @code{COMPLEX} functions return the GNU C type @code{complex}.
704 Additionally, this option implies the @option{-fsecond-underscore}
705 option, unless @option{-fno-second-underscore} is explicitly requested.
707 This does not affect the generation of code that interfaces with
708 the @command{libgfortran} library.
710 @emph{Caution:} It is not a good idea to mix Fortran code compiled with
711 @option{-ff2c} with code compiled with the default @option{-fno-f2c}
712 calling conventions as, calling @code{COMPLEX} or default @code{REAL}
713 functions between program parts which were compiled with different
714 calling conventions will break at execution time.
716 @emph{Caution:} This will break code which passes intrinsic functions
717 of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
718 the library implementations use the @option{-fno-f2c} calling conventions.
720 @item -fno-underscoring
721 @cindex @code{-fno-underscoring option}
722 @cindex option, @code{-fno-underscoring}
723 @cindex underscore
724 @cindex symbol names, underscores
725 @cindex transforming symbol names
726 @cindex symbol names, transforming
727 Do not transform names of entities specified in the Fortran
728 source file by appending underscores to them.
730 With @option{-funderscoring} in effect, GNU Fortran appends one
731 underscore to external names with no underscores.  This is done to ensure
732 compatibility with code produced by many UNIX Fortran compilers.
734 @emph{Caution}: The default behavior of GNU Fortran is
735 incompatible with @command{f2c} and @command{g77}, please use the
736 @option{-ff2c} option if you want object files compiled with
737 GNU Fortran to be compatible with object code created with these
738 tools.
740 Use of @option{-fno-underscoring} is not recommended unless you are
741 experimenting with issues such as integration of GNU Fortran into
742 existing system environments (vis-a-vis existing libraries, tools, and
743 so on).
745 For example, with @option{-funderscoring}, and assuming other defaults like
746 @option{-fcase-lower} and that @code{j()} and @code{max_count()} are
747 external functions while @code{my_var} and @code{lvar} are local variables,
748 a statement like
749 @smallexample
750 I = J() + MAX_COUNT (MY_VAR, LVAR)
751 @end smallexample
752 @noindent
753 is implemented as something akin to:
754 @smallexample
755 i = j_() + max_count__(&my_var__, &lvar);
756 @end smallexample
758 With @option{-fno-underscoring}, the same statement is implemented as:
760 @smallexample
761 i = j() + max_count(&my_var, &lvar);
762 @end smallexample
764 Use of @option{-fno-underscoring} allows direct specification of
765 user-defined names while debugging and when interfacing GNU Fortran
766 code with other languages.
768 Note that just because the names match does @emph{not} mean that the
769 interface implemented by GNU Fortran for an external name matches the
770 interface implemented by some other language for that same name.
771 That is, getting code produced by GNU Fortran to link to code produced
772 by some other compiler using this or any other method can be only a
773 small part of the overall solution---getting the code generated by
774 both compilers to agree on issues other than naming can require
775 significant effort, and, unlike naming disagreements, linkers normally
776 cannot detect disagreements in these other areas.
778 Also, note that with @option{-fno-underscoring}, the lack of appended
779 underscores introduces the very real possibility that a user-defined
780 external name will conflict with a name in a system library, which
781 could make finding unresolved-reference bugs quite difficult in some
782 cases---they might occur at program run time, and show up only as
783 buggy behavior at run time.
785 In future versions of GNU Fortran we hope to improve naming and linking
786 issues so that debugging always involves using the names as they appear
787 in the source, even if the names as seen by the linker are mangled to
788 prevent accidental linking between procedures with incompatible
789 interfaces.
791 @item -fsecond-underscore
792 @cindex @code{-fsecond-underscore option}
793 @cindex option, @code{-fsecond-underscore}
794 @cindex underscore
795 @cindex symbol names, underscores
796 @cindex transforming symbol names
797 @cindex symbol names, transforming
798 @cindex @command{f2c} calling convention
799 @cindex @command{g77} calling convention
800 @cindex libf2c calling convention
801 By default, GNU Fortran appends an underscore to external
802 names.  If this option is used GNU Fortran appends two
803 underscores to names with underscores and one underscore to external names
804 with no underscores.  GNU Fortran also appends two underscores to
805 internal names with underscores to avoid naming collisions with external
806 names.
808 This option has no effect if @option{-fno-underscoring} is
809 in effect.  It is implied by the @option{-ff2c} option.
811 Otherwise, with this option, an external name such as @code{MAX_COUNT}
812 is implemented as a reference to the link-time external symbol
813 @code{max_count__}, instead of @code{max_count_}.  This is required
814 for compatibility with @command{g77} and @command{f2c}, and is implied
815 by use of the @option{-ff2c} option.
817 @item -fbounds-check
818 @cindex @code{-fbounds-check} option
819 @cindex option, @code{-fbounds-check}
820 @cindex bounds checking
821 @cindex range checking
822 @cindex array bounds checking
823 @cindex subscript checking
824 @cindex checking subscripts
825 Enable generation of run-time checks for array subscripts
826 and against the declared minimum and maximum values.  It also
827 checks array indices for assumed and deferred
828 shape arrays against the actual allocated bounds.
830 In the future this may also include other forms of checking, eg. checking
831 substring references.
833 @item -fmax-stack-var-size=@var{n}
834 @cindex @code{-fmax-stack-var-size} option
835 @cindex option, @code{-fmax-stack-var-size}
836 This option specifies the size in bytes of the largest array that will be put
837 on the stack.
839 This option currently only affects local arrays declared with constant
840 bounds, and may not apply to all character variables.
841 Future versions of GNU Fortran may improve this behavior.
843 The default value for @var{n} is 32768.
845 @item -fpack-derived
846 @cindex @code{-fpack-derived} option
847 @cindex option, @code{-fpack-derived}
848 @cindex Structure packing
849 This option tells GNU Fortran to pack derived type members as closely as
850 possible.  Code compiled with this option is likely to be incompatible
851 with code compiled without this option, and may execute slower.
853 @item -frepack-arrays
854 @cindex @code{-frepack-arrays} option
855 @cindex option, @code{-frepack-arrays}
856 @cindex Repacking arrays
857 In some circumstances GNU Fortran may pass assumed shape array
858 sections via a descriptor describing a noncontiguous area of memory.
859 This option adds code to the function prologue to repack the data into
860 a contiguous block at runtime.
862 This should result in faster accesses to the array.  However it can introduce
863 significant overhead to the function call, especially  when the passed data
864 is noncontiguous.
866 @item -fshort-enums
867 @cindex @code{-fshort-enums} option
868 @cindex option, @code{-fshort-enums}
869 This option is provided for interoperability with C code that was
870 compiled with the @option{-fshort-enums} option.  It will make
871 GNU Fortran choose the smallest @code{INTEGER} kind a given
872 enumerator set will fit in, and give all its enumerators this kind.
874 @item -fexternal-blas
875 @cindex @code{-fexternal-blas} option
876 @cindex option, @code{-fexternal-blas}
877 This option will make gfortran generate calls to BLAS functions for some
878 matrix operations like @code{MATMUL}, instead of using our own
879 algorithms, if the size of the matrices involved is larger than a given
880 limit (see @option{-fblas-matmul-limit}).  This may be profitable if an
881 optimized vendor BLAS library is available.  The BLAS library will have
882 to be specified at link time.
884 @item -fblas-matmul-limit=@var{n}
885 @cindex @code{-fblas-matmul-limit} option
886 @cindex option, @code{-fblas-matmul-limit}
887 Only significant when @option{-fexternal-blas} is in effect.
888 Matrix multiplication of matrices with size larger than (or equal to) @var{n}
889 will be performed by calls to BLAS functions, while others will be
890 handled by @command{gfortran} internal algorithms. If the matrices
891 involved are not square, the size comparison is performed using the
892 geometric mean of the dimensions of the argument and result matrices.
894 The default value for @var{n} is 30.
896 @end table
898 @xref{Code Gen Options,,Options for Code Generation Conventions,
899 gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
900 offered by the GBE
901 shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
904 @c man end
906 @node Environment Variables
907 @section Environment Variables Affecting @command{gfortran}
908 @cindex environment variables
910 @c man begin ENVIRONMENT
912 The @command{gfortran} compiler currently does not make use of any environment
913 variables to control its operation above and beyond those
914 that affect the operation of @command{gcc}.
916 @xref{Environment Variables,,Environment Variables Affecting GCC,
917 gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
918 variables.
920 @xref{Runtime}, for environment variables that affect the
921 run-time behavior of programs compiled with GNU Fortran.
922 @c man end