OSDN Git Service

* gfortran.h (GFC_STD_LEGACY): New "standard" macro. Reindent.
[pf3gnuchains/gcc-fork.git] / gcc / fortran / invoke.texi
1 @c Copyright (C) 2004, 2005
2 @c Free Software Foundation, Inc.
3 @c This is part of the GFORTRAN manual.   
4 @c For copying conditions, see the file gfortran.texi.
5
6 @ignore
7 @c man begin COPYRIGHT
8 Copyright @copyright{} 2004, 2005
9 Free Software Foundation, Inc.
10
11 Permission is granted to copy, distribute and/or modify this document
12 under the terms of the GNU Free Documentation License, Version 1.2 or
13 any later version published by the Free Software Foundation; with the
14 Invariant Sections being ``GNU General Public License'' and ``Funding
15 Free Software'', the Front-Cover texts being (a) (see below), and with
16 the Back-Cover Texts being (b) (see below).  A copy of the license is
17 included in the gfdl(7) man page.
18  
19 (a) The FSF's Front-Cover Text is:
20
21      A GNU Manual
22
23 (b) The FSF's Back-Cover Text is:
24
25      You have freedom to copy and modify this GNU Manual, like GNU
26      software.  Copies published by the Free Software Foundation raise
27      funds for GNU development.
28 @c man end
29 @c Set file name and title for the man page.
30 @setfilename gfortran
31 @settitle GNU Fortran 95 compiler.
32 @c man begin SYNOPSIS
33 gfortran [@option{-c}|@option{-S}|@option{-E}]
34          [@option{-g}] [@option{-pg}] [@option{-O}@var{level}]
35          [@option{-W}@var{warn}@dots{}] [@option{-pedantic}]
36          [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}]
37          [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
38          [@option{-f}@var{option}@dots{}]
39          [@option{-m}@var{machine-option}@dots{}]
40          [@option{-o} @var{outfile}] @var{infile}@dots{}
41
42 Only the most useful options are listed here; see below for the
43 remainder.
44 @c man end
45 @c man begin SEEALSO
46 gpl(7), gfdl(7), fsf-funding(7),
47 cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1)
48 and the Info entries for @file{gcc}, @file{cpp}, @file{gfortran}, @file{as},
49 @file{ld}, @file{binutils} and @file{gdb}.
50 @c man end
51 @c man begin BUGS
52 For instructions on reporting bugs, see
53 @w{@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 GFORTRAN@.
58 @c man end
59 @end ignore
60
61 @node Invoking GFORTRAN
62 @chapter GNU Fortran 95 Command Options
63 @cindex GNU Fortran 95 command options
64 @cindex command options
65 @cindex options, GNU Fortran 95 command
66
67 @c man begin DESCRIPTION
68
69 The @command{gfortran} command supports all the options supported by the
70 @command{gcc} command.  Only options specific to gfortran are documented here.
71
72 @xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
73 Collection (GCC)}, for information
74 on the non-Fortran-specific aspects of the @command{gcc} command (and,
75 therefore, the @command{gfortran} command).
76
77 @cindex options, negative forms
78 @cindex negative forms of options
79 All @command{gcc} and @command{gfortran} 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 @command{gfortran} to the @command{gcc} distribution
84 enables acceptance of @command{gfortran} options
85 by all of the relevant drivers.
86
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
92
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 * 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 * Code Gen Options::    Specifying conventions for function calls, data layout
102                         and register usage.
103 * Environment Variables:: Env vars that affect GNU Fortran.
104 @end menu
105
106 @node Option Summary
107 @section Option Summary
108
109 @c man begin OPTIONS
110
111 Here is a summary of all the options specific to GNU Fortran, grouped
112 by type.  Explanations are in the following sections.
113
114 @table @emph
115 @item Fortran Language Options
116 @xref{Fortran Dialect Options,,Options Controlling Fortran Dialect}.
117 @gccoptlist{
118 -ffree-form  -fno-fixed-form @gol
119 -fdollar-ok  -fimplicit-none  -fmax-identifier-length @gol
120 -std=@var{std}
121 -ffixed-line-length-@var{n}  -ffixed-line-length-none @gol
122 -fdefault-double-8  -fdefault-integer-8  -fdefault-real-8 }
123
124 @item Warning Options
125 @xref{Warning Options,,Options to Request or Suppress Warnings}.
126 @gccoptlist{
127 -fsyntax-only  -pedantic  -pedantic-errors @gol
128 -w  -Wall  -Waliasing  -Wconversion @gol
129 -Wimplicit-interface  -Wnonstd-intrinsics  -Wsurprising  -Wunderflow @gol
130 -Wunused-labels -Wline-truncation @gol
131 -Werror  -W}
132
133 @item Debugging Options
134 @xref{Debugging Options,,Options for Debugging Your Program or GCC}.
135 @gccoptlist{
136 -fdump-parse-tree}
137
138 @item Directory Options
139 @xref{Directory Options,,Options for Directory Search}.
140 @gccoptlist{
141 -I@var{dir}  -M@var{dir}}
142
143 @item Code Generation Options
144 @xref{Code Gen Options,,Options for Code Generation Conventions}.
145 @gccoptlist{
146 -ff2c -fno-underscoring  -fsecond-underscore @gol
147 -fbounds-check  -fmax-stack-var-size=@var{n} @gol
148 -fpackderived  -frepack-arrays}
149 @end table
150
151 @menu
152 * Fortran Dialect Options::  Controlling the variant of Fortran language
153                              compiled.
154 * Warning Options::     How picky should the compiler be?
155 * Debugging Options::   Symbol tables, measurements, and debugging dumps.
156 * Directory Options::   Where to find module files
157 * Code Gen Options::    Specifying conventions for function calls, data layout
158                         and register usage.
159 @end menu
160
161 @node Fortran Dialect Options
162 @section Options Controlling Fortran Dialect
163 @cindex dialect options
164 @cindex language, dialect options
165 @cindex options, dialect
166
167 The following options control the dialect of Fortran
168 that the compiler accepts:
169
170 @table @gcctabopt
171 @cindex -ffree-form option
172 @cindex options, -ffree-form
173 @cindex -fno-fixed-form option
174 @cindex options, -fno-fixed-form
175 @cindex source file format
176 @cindex free form
177 @cindex fixed form
178 @cindex Source Form
179 @cindex Fortran 90, features
180 @item -ffree-form
181 @item -ffixed-form
182 Specify the layout used by the the source file. The free form layout
183 was introduced in Fortran 90.  Fixed form was traditionally used in
184 older Fortran programs.
185
186 @cindex option, -fdefault-double-8
187 @cindex -fdefault-double-8, option
188 @item -fdefault-double-8
189 Set the "DOUBLE PRECISION" type to an 8 byte wide.
190
191 @cindex option, -fdefault-integer-8
192 @cindex -fdefault-integer-8, option
193 @item -fdefault-integer-8
194 Set the default integer and logical types to an 8 byte wide type.
195 Do nothing if this is already the default.
196
197 @cindex option, -fdefault-real-8
198 @cindex -fdefault-real-8, option
199 @item -fdefault-real-8
200 Set the default real type to an 8 byte wide type.
201 Do nothing if this is already the default.
202
203 @cindex -fdollar-ok option
204 @cindex options, -fdollar-ok
205 @item -fdollar-ok
206 @cindex dollar sign
207 @cindex symbol names
208 @cindex character set
209 Allow @samp{$} as a valid character in a symbol name.
210
211 @cindex -ffixed-line-length-@var{n} option
212 @cindex options, -ffixed-line-length-@var{n}
213 @item -ffixed-line-length-@var{n}
214 @cindex source file format
215 @cindex lines, length
216 @cindex length of source lines
217 @cindex fixed form
218 @cindex limits, lengths of source lines
219 Set column after which characters are ignored in typical fixed-form
220 lines in the source file, and through which spaces are assumed (as
221 if padded to that length) after the ends of short fixed-form lines.
222
223 @cindex card image
224 @cindex extended-source option
225 Popular values for @var{n} include 72 (the
226 standard and the default), 80 (card image), and 132 (corresponds
227 to ``extended-source'' options in some popular compilers).
228 @var{n} may be @samp{none}, meaning that the entire line is meaningful
229 and that continued character constants never have implicit spaces appended
230 to them to fill out the line.
231 @option{-ffixed-line-length-0} means the same thing as
232 @option{-ffixed-line-length-none}.
233
234 @cindex -fmax-identifier-length=@var{n} option
235 @cindex option -fmax-identifier-length=@var{n}
236 @item -fmax-identifier-length=@var{n}
237 Specify the maximum allowed identifier length. Typical values are
238 31 (Fortran 95) and 63 (Fortran 200x).
239
240 @cindex -fimplicit-none option
241 @cindex options, -fimplicit-none
242 @item -fimplicit-none
243 Specify that no implicit typing is allowed, unless overridden by explicit
244 @samp{IMPLICIT} statements.  This is the equivalent of adding
245 @samp{implicit none} to the start of every procedure.
246
247 @cindex -std=@var{std} option
248 @cindex option, -std=@var{std}
249 @item -std=@var{std}
250 Conform to the specified standard.  Allowed values for @var{std} are
251 @samp{gnu}, @samp{f95}, @samp{f2003} and @samp{legacy}.
252
253 @end table
254
255 @node Warning Options
256 @section Options to Request or Suppress Warnings
257 @cindex options, warnings
258 @cindex warnings, suppressing
259 @cindex messages, warning
260 @cindex suppressing warnings
261
262 Warnings are diagnostic messages that report constructions which
263 are not inherently erroneous but which are risky or suggest there
264 might have been an error.
265
266 You can request many specific warnings with options beginning @option{-W},
267 for example @option{-Wimplicit} to request warnings on implicit
268 declarations.  Each of these specific warning options also has a
269 negative form beginning @option{-Wno-} to turn off warnings;
270 for example, @option{-Wno-implicit}.  This manual lists only one of the
271 two forms, whichever is not the default.
272
273 These options control the amount and kinds of warnings produced by GNU
274 Fortran:
275
276 @table @gcctabopt
277 @cindex syntax checking
278 @cindex -fsyntax-only option
279 @cindex options, -fsyntax-only
280 @item -fsyntax-only
281 Check the code for syntax errors, but don't do anything beyond that.
282
283 @cindex -pedantic option
284 @cindex options, -pedantic
285 @item -pedantic
286 Issue warnings for uses of extensions to FORTRAN 95.
287 @option{-pedantic} also applies to C-language constructs where they
288 occur in GNU Fortran source files, such as use of @samp{\e} in a
289 character constant within a directive like @samp{#include}.
290
291 Valid FORTRAN 95 programs should compile properly with or without
292 this option.
293 However, without this option, certain GNU extensions and traditional
294 Fortran features are supported as well.
295 With this option, many of them are rejected.
296
297 Some users try to use @option{-pedantic} to check programs for conformance.
298 They soon find that it does not do quite what they want---it finds some
299 nonstandard practices, but not all.
300 However, improvements to @command{gfortran} in this area are welcome.
301
302 This should be used in conjunction with -std=@var{std}.
303
304 @cindex -pedantic-errors option
305 @cindex options, -pedantic-errors
306 @item -pedantic-errors
307 Like @option{-pedantic}, except that errors are produced rather than
308 warnings.
309
310 @cindex -w option
311 @cindex options, -w
312 @item -w
313 Inhibit all warning messages.
314
315
316 @cindex -Wall option
317 @cindex options, -Wall
318 @item -Wall
319 @cindex all warnings
320 @cindex warnings, all
321 Enables commonly used warning options that which pertain to usage that
322 we recommend avoiding and that we believe is easy to avoid.
323 This currently includes @option{-Wunused-labels}, @option{-Waliasing},
324 @option{-Wsurprising}, @option{-Wnonstd-intrinsic} and
325 @option{-Wline-truncation}.
326
327
328 @cindex -Waliasing option
329 @cindex options, -Waliasing
330 @item -Waliasing
331 @cindex aliasing
332 Warn about possible aliasing of dummy arguments. Specifically, it warns
333 if the same actual argument is associated with a dummy argument with
334 @code{intent(in)} and a dummy argument with @code{intent(out)} in a call
335 with an explicit interface.
336
337 The following example will trigger the warning.
338 @smallexample
339   interface
340     subroutine bar(a,b)
341       integer, intent(in) :: a
342       integer, intent(out) :: b
343     end subroutine
344   end interface
345   integer :: a
346
347   call bar(a,a)
348 @end smallexample
349
350
351 @cindex -Wconversion option
352 @cindex options, -Wconversion
353 @item -Wconversion
354 @cindex conversion
355 Warn about implicit conversions between different types.
356
357
358 @cindex -Wimplicit-interface option
359 @cindex options, -Wimplicit-interface
360 @item -Wimplicit-interface
361 Warn about when procedure are called without an explicit interface.
362 Note this only checks that an explicit interface is present.  It does not
363 check that the declared interfaces are consistent across program units.
364
365
366 @cindex -Wnonstd-intrinsic option
367 @cindex options, -Wnonstd-intrinsic
368 @item -Wnonstd-intrinsic
369 Warn if the user tries to use an intrinsic that does not belong to the 
370 standard the user has chosen via the -std option.
371
372
373 @cindex -Wsurprising
374 @cindex options, -Wsurprising
375 @item -Wsurprising
376 @cindex Suspicious
377 Produce a warning when ``suspicious'' code constructs are encountered.
378 While technically legal these usually indicate that an error has been made.
379
380 This currently produces a warning under the following circumstances:
381
382 @itemize @bullet
383 @item
384 An INTEGER SELECT construct has a CASE that can never be matched as its
385 lower value is greater than its upper value.
386
387 @item
388 A LOGICAL SELECT construct has three CASE statements.
389 @end itemize
390
391 @cindex -Wunderflow
392 @cindex options, -Wunderflow
393 @item -Wunderflow
394 @cindex UNDERFLOW
395 Produce a warning when numerical constant expressions are
396 encountered, which yield an UNDERFLOW during compilation.
397
398
399 @cindex -Wunused-labels option
400 @cindex options, -Wunused-labels
401 @item -Wunused-labels
402 @cindex unused labels
403 @cindex labels, unused
404 Warn whenever a label is defined but never referenced.
405
406
407 @cindex -Werror
408 @cindex options, -Werror
409 @item -Werror
410 Turns all warnings into errors.
411
412
413 @cindex -W option
414 @cindex options, -W
415 @item -W
416 @cindex extra warnings
417 @cindex warnings, extra
418 Turns on ``extra warnings'' and, if optimization is specified
419 via @option{-O}, the @option{-Wuninitialized} option.
420 (This might change in future versions of @command{gfortran}
421 @end table
422
423 @xref{Warning Options,,Options to Request or Suppress Warnings,
424 gcc,Using the GNU Compiler Collection (GCC)}, for information on more
425 options offered by the GBE shared by @command{gfortran}, @command{gcc} and
426 other GNU compilers.
427
428 Some of these have no effect when compiling programs written in Fortran.
429
430 @node Debugging Options
431 @section Options for Debugging Your Program or GNU Fortran
432 @cindex options, debugging
433 @cindex debugging information options
434
435 GNU Fortran has various special options that are used for debugging
436 either your program or @command{gfortran}
437
438 @table @gcctabopt
439 @cindex -fdump-parse-tree option
440 @cindex option, -fdump-parse-tree
441 @item -fdump-parse-tree
442 Output the internal parse tree before starting code generation.  Only
443 really useful for debugging gfortran itself.
444 @end table
445
446 @xref{Debugging Options,,Options for Debugging Your Program or GCC,
447 gcc,Using the GNU Compiler Collection (GCC)}, for more information on
448 debugging options.
449
450 @node Directory Options
451 @section Options for Directory Search
452 @cindex directory, options
453 @cindex options, directory search
454 @cindex search path
455
456 @cindex INCLUDE directive
457 @cindex directive, INCLUDE
458 There options affect how affect how @command{gfortran} searches
459 for files specified via the @code{INCLUDE} directive, and where it searches
460 for previously compiled modules.
461
462 It also affects the search paths used by @command{cpp} when used to preprocess
463 Fortran source.
464
465 @table @gcctabopt
466 @cindex -Idir option
467 @cindex options, -Idir
468 @item -I@var{dir}
469 @cindex directory, search paths for inclusion
470 @cindex inclusion, directory search paths for
471 @cindex search paths, for included files
472 @cindex paths, search
473 @cindex module search path
474 These affect interpretation of the @code{INCLUDE} directive
475 (as well as of the @code{#include} directive of the @command{cpp}
476 preprocessor).
477
478 Also note that the general behavior of @option{-I} and
479 @code{INCLUDE} is pretty much the same as of @option{-I} with
480 @code{#include} in the @command{cpp} preprocessor, with regard to
481 looking for @file{header.gcc} files and other such things.
482
483 This path is also used to search for @samp{.mod} files when previously
484 compiled modules are required by a @code{USE} statement.
485
486 @xref{Directory Options,,Options for Directory Search,
487 gcc,Using the GNU Compiler Collection (GCC)}, for information on the
488 @option{-I} option.
489
490 @cindex -Mdir option
491 @cindex option, -Mdir
492 @item -M@var{dir}
493 @item -J@var{dir}
494 This option specifies where to put @samp{.mod} files for compiled modules.
495 It is also added to the list of directories to searched by an @code{USE}
496 statement.
497
498 The default is the current directory.
499
500 @option{-J} is an alias for @option{-M} to avoid conflicts with existing
501 GCC options.
502 @end table
503
504 @node Code Gen Options
505 @section Options for Code Generation Conventions
506 @cindex code generation, conventions
507 @cindex options, code generation
508 @cindex run-time, options
509
510 These machine-independent options control the interface conventions
511 used in code generation.
512
513 Most of them have both positive and negative forms; the negative form
514 of @option{-ffoo} would be @option{-fno-foo}.  In the table below, only
515 one of the forms is listed---the one which is not the default.  You
516 can figure out the other form by either removing @option{no-} or adding
517 it.
518
519
520 @table @gcctabopt
521 @cindex @option{-ff2c} option
522 @cindex options, @option{-ff2c}
523 @item -ff2c
524 @cindex calling convention
525 @cindex @command{f2c} calling convention
526 @cindex @command{g77} calling convention
527 @cindex libf2c calling convention
528 Generate code designed to be compatible with code generated
529 by @command{g77} and @command{f2c}.
530
531 The calling conventions used by @command{g77} (originally implemented
532 in @command{f2c}) require functions that return type
533 default @code{REAL} to actually return the C type @code{double}, and
534 functions that return type @code{COMPLEX} to return the values via an
535 extra argument in the calling sequence that points to where to
536 store the return value.  Under the default GNU calling conventions, such
537 functions simply return their results as they would in GNU
538 C -- default @code{REAL} functions return the C type @code{float}, and
539 @code{COMPLEX} functions return the GNU C type @code{complex}.
540 Additionally, this option implies the @option{-fsecond-underscore}
541 option, unless @option{-fno-second-underscore} is explicitly requested.
542
543 This does not affect the generation of code that interfaces with
544 the @command{libgfortran} library.
545
546 @emph{Caution:} It is not a good idea to mix Fortran code compiled
547 with @code{-ff2c} with code compiled with the default @code{-fno-f2c}
548 calling conventions as, calling @code{COMPLEX} or default @code{REAL}
549 functions between program parts which were compiled with different
550 calling conventions will break at execution time.
551
552 @emph{Caution:} This will break code which passes intrinsic functions
553 of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
554 the library implementations use the @command{-fno-f2c} calling conventions.
555
556 @cindex @option{-fno-underscoring option}
557 @cindex options, @option{-fno-underscoring}
558 @item -fno-underscoring
559 @cindex underscore
560 @cindex symbol names, underscores
561 @cindex transforming symbol names
562 @cindex symbol names, transforming
563 Do not transform names of entities specified in the Fortran
564 source file by appending underscores to them.
565
566 With @option{-funderscoring} in effect, @command{gfortran} appends one
567 underscore to external names with no underscores.
568
569 This is done to ensure compatibility with code produced by many
570 UNIX Fortran compilers.
571
572 @emph{Caution}: The default behavior of @command{gfortran} is
573 incompatible with @command{f2c} and @command{g77}, please use the
574 @option{-ff2c} and @option{-fsecond-underscore} options if you want
575 object files compiled with @option{gfortran} to be compatible with
576 object code created with these tools.
577
578 Use of @option{-fno-underscoring} is not recommended unless you are
579 experimenting with issues such as integration of (GNU) Fortran into
580 existing system environments (vis-a-vis existing libraries, tools, and
581 so on).
582
583 For example, with @option{-funderscoring}, and assuming other defaults like
584 @option{-fcase-lower} and that @samp{j()} and @samp{max_count()} are
585 external functions while @samp{my_var} and @samp{lvar} are local variables,
586 a statement like
587
588 @smallexample
589 I = J() + MAX_COUNT (MY_VAR, LVAR)
590 @end smallexample
591
592 @noindent
593 is implemented as something akin to:
594
595 @smallexample
596 i = j_() + max_count__(&my_var__, &lvar);
597 @end smallexample
598
599 With @option{-fno-underscoring}, the same statement is implemented as:
600
601 @smallexample
602 i = j() + max_count(&my_var, &lvar);
603 @end smallexample
604
605 Use of @option{-fno-underscoring} allows direct specification of
606 user-defined names while debugging and when interfacing @command{gfortran}
607 code with other languages.
608
609 Note that just because the names match does @emph{not} mean that the
610 interface implemented by @command{gfortran} for an external name matches the
611 interface implemented by some other language for that same name.
612 That is, getting code produced by @command{gfortran} to link to code produced
613 by some other compiler using this or any other method can be only a
614 small part of the overall solution---getting the code generated by
615 both compilers to agree on issues other than naming can require
616 significant effort, and, unlike naming disagreements, linkers normally
617 cannot detect disagreements in these other areas.
618
619 Also, note that with @option{-fno-underscoring}, the lack of appended
620 underscores introduces the very real possibility that a user-defined
621 external name will conflict with a name in a system library, which
622 could make finding unresolved-reference bugs quite difficult in some
623 cases---they might occur at program run time, and show up only as
624 buggy behavior at run time.
625
626 In future versions of @command{gfortran} we hope to improve naming and linking
627 issues so that debugging always involves using the names as they appear
628 in the source, even if the names as seen by the linker are mangled to
629 prevent accidental linking between procedures with incompatible
630 interfaces.
631
632 @cindex @option{-fsecond-underscore option}
633 @cindex options, @option{-fsecond-underscore}
634 @item -fsecond-underscore
635 @cindex underscore
636 @cindex symbol names, underscores
637 @cindex transforming symbol names
638 @cindex symbol names, transforming
639 @cindex @command{f2c} calling convention
640 @cindex @command{g77} calling convention
641 @cindex libf2c calling convention
642 By default, @command{gfortran} appends an underscore to external
643 names.  If this option is used @command{gfortran} appends two
644 underscores to names with underscores and one underscore to external names
645 with no underscores.  (@command{gfortran} also appends two underscores to
646 internal names with underscores to avoid naming collisions with external
647 names.
648
649 This option has no effect if @option{-fno-underscoring} is
650 in effect.  It is implied by the @option{-ff2c} option.
651
652 Otherwise, with this option, an external name such as @samp{MAX_COUNT}
653 is implemented as a reference to the link-time external symbol
654 @samp{max_count__}, instead of @samp{max_count_}.  This is required
655 for compatibility with @command{g77} and @command{f2c}, and is implied
656 by use of the @option{-ff2c} option.
657
658
659 @cindex -fbounds-check option
660 @cindex -ffortran-bounds-check option
661 @item -fbounds-check
662 @cindex bounds checking
663 @cindex range checking
664 @cindex array bounds checking
665 @cindex subscript checking
666 @cindex checking subscripts
667 Enable generation of run-time checks for array subscripts
668 and against the declared minimum and maximum values.  It also
669 checks array indices for assumed and deferred
670 shape arrays against the actual allocated bounds.
671
672 In the future this may also include other forms of checking, eg. checking
673 substring references.
674
675
676 @cindex -fmax-stack-var-size option
677 @item -fmax-stack-var-size=@var{n}
678 This option specifies the size in bytes of the largest array that will be put
679 on the stack.
680
681 This option currently only affects local arrays declared with constant
682 bounds, and may not apply to all character variables.
683 Future versions of @command{gfortran} may improve this behavior.
684
685 The default value for @var{n} is 32768.
686
687 @cindex -fpackderived
688 @item -fpackderived
689 @cindex Structure packing
690 This option tells gfortran to pack derived type members as closely as
691 possible.  Code compiled with this option is likely to be incompatible
692 with code compiled without this option, and may execute slower.
693
694 @cindex -frepack-arrays option
695 @item -frepack-arrays
696 @cindex Repacking arrays
697 In some circumstances @command{gfortran} may pass assumed shape array
698 sections via a descriptor describing a discontiguous area of memory.
699 This option adds code to the function prologue to repack the data into
700 a contiguous block at runtime.
701
702 This should result in faster accesses to the array.  However it can introduce
703 significant overhead to the function call, especially  when the passed data
704 is discontiguous.
705 @end table
706
707 @xref{Code Gen Options,,Options for Code Generation Conventions,
708 gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
709 offered by the GBE
710 shared by @command{gfortran} @command{gcc} and other GNU compilers.
711
712
713 @c man end
714
715 @node Environment Variables
716 @section Environment Variables Affecting GNU Fortran
717 @cindex environment variables
718
719 @c man begin ENVIRONMENT
720
721 GNU Fortran 95 currently does not make use of any environment
722 variables to control its operation above and beyond those
723 that affect the operation of @command{gcc}.
724
725 @xref{Environment Variables,,Environment Variables Affecting GCC,
726 gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
727 variables.
728
729 @c man end