OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [fortran/] [invoke.texi] - Blame information for rev 801

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 712 jeremybenn
@c Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
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, 2009, 2010, 2011
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.3 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
70
here.
71
 
72
@xref{Invoking GCC,,GCC Command Options,gcc,Using the GNU Compiler
73
Collection (GCC)}, for information
74
on the non-Fortran-specific aspects of the @command{gcc} command (and,
75
therefore, the @command{gfortran} command).
76
 
77
@cindex options, negative forms
78
All GCC and GNU Fortran options
79
are accepted both by @command{gfortran} and by @command{gcc}
80
(as well as any other drivers built at the same time,
81
such as @command{g++}),
82
since adding GNU Fortran to the GCC distribution
83
enables acceptance of GNU Fortran options
84
by all of the relevant drivers.
85
 
86
In some cases, options have positive and negative forms;
87
the negative form of @option{-ffoo} would be @option{-fno-foo}.
88
This manual documents only one of these two forms, whichever
89
one is not the default.
90
@c man end
91
 
92
@menu
93
* Option Summary::      Brief list of all @command{gfortran} options,
94
                        without explanations.
95
* Fortran Dialect Options::  Controlling the variant of Fortran language
96
                             compiled.
97
* Preprocessing Options::  Enable and customize preprocessing.
98
* Error and Warning Options::     How picky should the compiler be?
99
* Debugging Options::   Symbol tables, measurements, and debugging dumps.
100
* Directory Options::   Where to find module files
101
* Link Options ::       Influencing the linking step
102
* Runtime Options::     Influencing runtime behavior
103
* Code Gen Options::    Specifying conventions for function calls, data layout
104
                        and register usage.
105
* Environment Variables:: Environment variables that affect @command{gfortran}.
106
@end menu
107
 
108
@node Option Summary
109
@section Option summary
110
 
111
@c man begin OPTIONS
112
 
113
Here is a summary of all the options specific to GNU Fortran, grouped
114
by type.  Explanations are in the following sections.
115
 
116
@table @emph
117
@item Fortran Language Options
118
@xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
119
@gccoptlist{-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code @gol
120
-fd-lines-as-comments -fdefault-double-8 -fdefault-integer-8 @gol
121
-fdefault-real-8 -fdollar-ok -ffixed-line-length-@var{n} @gol
122
-ffixed-line-length-none -ffree-form -ffree-line-length-@var{n} @gol
123
-ffree-line-length-none -fimplicit-none -finteger-4-integer-8 @gol
124
-fmax-identifier-length -fmodule-private -fno-fixed-form -fno-range-check @gol
125
-fopenmp -freal-4-real-10 -freal-4-real-16 -freal-4-real-8 @gol
126
-freal-8-real-10 -freal-8-real-16 -freal-8-real-4 -std=@var{std}
127
}
128
 
129
@item Preprocessing Options
130
@xref{Preprocessing Options,,Enable and customize preprocessing}.
131
@gccoptlist{-A-@var{question}@r{[}=@var{answer}@r{]}
132
-A@var{question}=@var{answer} -C -CC -D@var{macro}@r{[}=@var{defn}@r{]}
133
-H -P @gol
134
-U@var{macro} -cpp -dD -dI -dM -dN -dU -fworking-directory
135
-imultilib @var{dir} @gol
136
-iprefix @var{file} -iquote -isysroot @var{dir} -isystem @var{dir} -nocpp
137
-nostdinc @gol
138
-undef
139
}
140
 
141
@item Error and Warning Options
142
@xref{Error and Warning Options,,Options to request or suppress errors
143
and warnings}.
144
@gccoptlist{-Waliasing -Wall -Wampersand -Warray-bounds
145
-Wcharacter-truncation @gol
146
-Wconversion -Wfunction-elimination -Wimplicit-interface @gol
147
-Wimplicit-procedure -Wintrinsic-shadow -Wintrinsics-std @gol
148
-Wline-truncation -Wno-align-commons -Wno-tabs -Wreal-q-constant @gol
149
-Wsurprising -Wunderflow -Wunused-parameter -fmax-errors=@var{n}
150
-fsyntax-only @gol
151
-pedantic -pedantic-errors
152
}
153
 
154
@item Debugging Options
155
@xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
156
@gccoptlist{-fbacktrace -fdump-fortran-optimized -fdump-fortran-original @gol
157
-fdump-parse-tree -ffpe-trap=@var{list}
158
}
159
 
160
@item Directory Options
161
@xref{Directory Options,,Options for directory search}.
162
@gccoptlist{-I@var{dir}  -J@var{dir} -fintrinsic-modules-path @var{dir}}
163
 
164
@item Link Options
165
@xref{Link Options,,Options for influencing the linking step}.
166
@gccoptlist{-static-libgfortran}
167
 
168
@item Runtime Options
169
@xref{Runtime Options,,Options for influencing runtime behavior}.
170
@gccoptlist{-fconvert=@var{conversion} -fmax-subrecord-length=@var{length}
171
-fno-range-check @gol
172
-frecord-marker=@var{length} -fsign-zero
173
}
174
 
175
@item Code Generation Options
176
@xref{Code Gen Options,,Options for code generation conventions}.
177
@gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol
178
-fbounds-check -fcheck-array-temporaries @gol
179
-fcheck=@var{<all|array-temps|bounds|do|mem|pointer|recursion>} @gol
180
-fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c
181
-ffrontend-optimize @gol
182
-finit-character=@var{n} -finit-integer=@var{n} -finit-local-zero @gol
183
-finit-logical=@var{<true|false>}
184
-finit-real=@var{<zero|inf|-inf|nan|snan>} @gol
185
-fmax-array-constructor=@var{n} -fmax-stack-var-size=@var{n}
186
-fno-align-commons @gol
187
-fno-automatic -fno-protect-parens -fno-underscoring -fno-whole-file @gol
188
-fsecond-underscore -fpack-derived -frealloc-lhs -frecursive @gol
189
-frepack-arrays -fshort-enums -fstack-arrays
190
}
191
@end table
192
 
193
@node Fortran Dialect Options
194
@section Options controlling Fortran dialect
195
@cindex dialect options
196
@cindex language, dialect options
197
@cindex options, dialect
198
 
199
The following options control the details of the Fortran dialect
200
accepted by the compiler:
201
 
202
@table @gcctabopt
203
@item -ffree-form
204
@itemx -ffixed-form
205
@opindex @code{ffree-form}
206
@opindex @code{fno-fixed-form}
207
@cindex options, Fortran dialect
208
@cindex file format, free
209
@cindex file format, fixed
210
Specify the layout used by the source file.  The free form layout
211
was introduced in Fortran 90.  Fixed form was traditionally used in
212
older Fortran programs.  When neither option is specified, the source
213
form is determined by the file extension.
214
 
215
@item -fall-intrinsics
216
@opindex @code{fall-intrinsics}
217
This option causes all intrinsic procedures (including the GNU-specific
218
extensions) to be accepted.  This can be useful with @option{-std=f95} to
219
force standard-compliance but get access to the full range of intrinsics
220
available with @command{gfortran}.  As a consequence, @option{-Wintrinsics-std}
221
will be ignored and no user-defined procedure with the same name as any
222
intrinsic will be called except when it is explicitly declared @code{EXTERNAL}.
223
 
224
@item -fd-lines-as-code
225
@itemx -fd-lines-as-comments
226
@opindex @code{fd-lines-as-code}
227
@opindex @code{fd-lines-as-comments}
228
Enable special treatment for lines beginning with @code{d} or @code{D}
229
in fixed form sources.  If the @option{-fd-lines-as-code} option is
230
given they are treated as if the first column contained a blank.  If the
231
@option{-fd-lines-as-comments} option is given, they are treated as
232
comment lines.
233
 
234
@item -fdefault-double-8
235
@opindex @code{fdefault-double-8}
236
Set the @code{DOUBLE PRECISION} type to an 8 byte wide type.  If
237
@option{-fdefault-real-8} is given, @code{DOUBLE PRECISION} would
238
instead be promoted to 16 bytes if possible, and @option{-fdefault-double-8}
239
can be used to prevent this.  The kind of real constants like @code{1.d0} will
240
not be changed by @option{-fdefault-real-8} though, so also
241
@option{-fdefault-double-8} does not affect it.
242
 
243
@item -fdefault-integer-8
244
@opindex @code{fdefault-integer-8}
245
Set the default integer and logical types to an 8 byte wide type.
246
Do nothing if this is already the default.  This option also affects
247
the kind of integer constants like @code{42}.
248
 
249
@item -fdefault-real-8
250
@opindex @code{fdefault-real-8}
251
Set the default real type to an 8 byte wide type.
252
Do nothing if this is already the default.  This option also affects
253
the kind of non-double real constants like @code{1.0}, and does promote
254
the default width of @code{DOUBLE PRECISION} to 16 bytes if possible, unless
255
@code{-fdefault-double-8} is given, too.
256
 
257
@item -fdollar-ok
258
@opindex @code{fdollar-ok}
259
@cindex @code{$}
260
@cindex symbol names
261
@cindex character set
262
Allow @samp{$} as a valid non-first character in a symbol name. Symbols
263
that start with @samp{$} are rejected since it is unclear which rules to
264
apply to implicit typing as different vendors implement different rules.
265
Using @samp{$} in @code{IMPLICIT} statements is also rejected.
266
 
267
@item -fbackslash
268
@opindex @code{backslash}
269
@cindex backslash
270
@cindex escape characters
271
Change the interpretation of backslashes in string literals from a single
272
backslash character to ``C-style'' escape characters. The following
273
combinations are expanded @code{\a}, @code{\b}, @code{\f}, @code{\n},
274
@code{\r}, @code{\t}, @code{\v}, @code{\\}, and @code{\0} to the ASCII
275
characters alert, backspace, form feed, newline, carriage return,
276
horizontal tab, vertical tab, backslash, and NUL, respectively.
277
Additionally, @code{\x}@var{nn}, @code{\u}@var{nnnn} and
278
@code{\U}@var{nnnnnnnn} (where each @var{n} is a hexadecimal digit) are
279
translated into the Unicode characters corresponding to the specified code
280
points. All other combinations of a character preceded by \ are
281
unexpanded.
282
 
283
@item -fmodule-private
284
@opindex @code{fmodule-private}
285
@cindex module entities
286
@cindex private
287
Set the default accessibility of module entities to @code{PRIVATE}.
288
Use-associated entities will not be accessible unless they are explicitly
289
declared as @code{PUBLIC}.
290
 
291
@item -ffixed-line-length-@var{n}
292
@opindex @code{ffixed-line-length-}@var{n}
293
@cindex file format, fixed
294
Set column after which characters are ignored in typical fixed-form
295
lines in the source file, and through which spaces are assumed (as
296
if padded to that length) after the ends of short fixed-form lines.
297
 
298
Popular values for @var{n} include 72 (the
299
standard and the default), 80 (card image), and 132 (corresponding
300
to ``extended-source'' options in some popular compilers).
301
@var{n} may also be @samp{none}, meaning that the entire line is meaningful
302
and that continued character constants never have implicit spaces appended
303
to them to fill out the line.
304
@option{-ffixed-line-length-0} means the same thing as
305
@option{-ffixed-line-length-none}.
306
 
307
@item -ffree-line-length-@var{n}
308
@opindex @code{ffree-line-length-}@var{n}
309
@cindex file format, free
310
Set column after which characters are ignored in typical free-form
311
lines in the source file. The default value is 132.
312
@var{n} may be @samp{none}, meaning that the entire line is meaningful.
313
@option{-ffree-line-length-0} means the same thing as
314
@option{-ffree-line-length-none}.
315
 
316
@item -fmax-identifier-length=@var{n}
317
@opindex @code{fmax-identifier-length=}@var{n}
318
Specify the maximum allowed identifier length. Typical values are
319
31 (Fortran 95) and 63 (Fortran 2003 and Fortran 2008).
320
 
321
@item -fimplicit-none
322
@opindex @code{fimplicit-none}
323
Specify that no implicit typing is allowed, unless overridden by explicit
324
@code{IMPLICIT} statements.  This is the equivalent of adding
325
@code{implicit none} to the start of every procedure.
326
 
327
@item -finteger-4-integer-8
328
@opindex @code{finteger-4-integer-8}
329
Promote all @code{INTEGER(KIND=4)} entities to an @code{INTEGER(KIND=8)}
330
entities.  If @code{KIND=8} is unavailable, then an error will be issued.
331
This option should be used with care and may not be suitable for your codes.
332
Areas of possible concern include calls to external procedures,
333
alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
334
BOZ literal constant conversion, and I/O.  Inspection of the intermediate
335
representation of the translated Fortran code, produced by
336
@option{-fdump-tree-original}, is suggested.
337
 
338
@item -fcray-pointer
339
@opindex @code{fcray-pointer}
340
Enable the Cray pointer extension, which provides C-like pointer
341
functionality.
342
 
343
@item -fopenmp
344
@opindex @code{fopenmp}
345
@cindex OpenMP
346
Enable the OpenMP extensions.  This includes OpenMP @code{!$omp} directives
347
in free form
348
and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
349
@code{!$} conditional compilation sentinels in free form
350
and @code{c$}, @code{*$} and @code{!$} sentinels in fixed form,
351
and when linking arranges for the OpenMP runtime library to be linked
352
in.  The option @option{-fopenmp} implies @option{-frecursive}.
353
 
354
@item -fno-range-check
355
@opindex @code{frange-check}
356
Disable range checking on results of simplification of constant
357
expressions during compilation.  For example, GNU Fortran will give
358
an error at compile time when simplifying @code{a = 1. / 0}.
359
With this option, no error will be given and @code{a} will be assigned
360
the value @code{+Infinity}.  If an expression evaluates to a value
361
outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}],
362
then the expression will be replaced by @code{-Inf} or @code{+Inf}
363
as appropriate.
364
Similarly, @code{DATA i/Z'FFFFFFFF'/} will result in an integer overflow
365
on most systems, but with @option{-fno-range-check} the value will
366
``wrap around'' and @code{i} will be initialized to @math{-1} instead.
367
 
368
@item  -freal-4-real-8
369
@itemx -freal-4-real-10
370
@itemx -freal-8-real-4
371
@itemx -freal-8-real-10
372
@itemx -freal-8-real-16
373
@opindex @code{freal-4-real-8}
374
@opindex @code{freal-4-real-10}
375
@opindex @code{freal-4-real-16}
376
@opindex @code{freal-8-real-4}
377
@opindex @code{freal-8-real-10}
378
@opindex @code{freal-8-real-16}
379
@cindex options, real kind type promotion
380
Promote all @code{REAL(KIND=M)} entities to @code{REAL(KIND=N)} entities.
381
If @code{REAL(KIND=N)} is unavailable, then an error will be issued.
382
All other real kind types are unaffected by this option.
383
These options should be used with care and may not be suitable for your
384
codes.  Areas of possible concern include calls to external procedures,
385
alignment in @code{EQUIVALENCE} and/or @code{COMMON}, generic interfaces,
386
BOZ literal constant conversion, and I/O.  Inspection of the intermediate
387
representation of the translated Fortran code, produced by
388
@option{-fdump-tree-original}, is suggested.
389
 
390
@item -std=@var{std}
391
@opindex @code{std=}@var{std} option
392
Specify the standard to which the program is expected to conform, which
393
may be one of @samp{f95}, @samp{f2003}, @samp{f2008}, @samp{gnu}, or
394
@samp{legacy}.  The default value for @var{std} is @samp{gnu}, which
395
specifies a superset of the Fortran 95 standard that includes all of the
396
extensions supported by GNU Fortran, although warnings will be given for
397
obsolete extensions not recommended for use in new code.  The
398
@samp{legacy} value is equivalent but without the warnings for obsolete
399
extensions, and may be useful for old non-standard programs.  The
400
@samp{f95}, @samp{f2003} and @samp{f2008} values specify strict
401
conformance to the Fortran 95, Fortran 2003 and Fortran 2008 standards,
402
respectively; errors are given for all extensions beyond the relevant
403
language standard, and warnings are given for the Fortran 77 features
404
that are permitted but obsolescent in later standards. @samp{-std=f2008ts}
405
allows the Fortran 2008 standard including the additions of the
406
Technical Specification (TS) 29113 on Further Interoperability of Fortran
407
with C.
408
 
409
@end table
410
 
411
@node Preprocessing Options
412
@section Enable and customize preprocessing
413
@cindex preprocessor
414
@cindex options, preprocessor
415
@cindex CPP
416
 
417
Preprocessor related options. See section
418
@ref{Preprocessing and conditional compilation} for more detailed
419
information on preprocessing in @command{gfortran}.
420
 
421
@table @gcctabopt
422
@item -cpp
423
@itemx -nocpp
424
@opindex @code{cpp}
425
@opindex @code{fpp}
426
@cindex preprocessor, enable
427
@cindex preprocessor, disable
428
Enable preprocessing. The preprocessor is automatically invoked if
429
the file extension is @file{.fpp}, @file{.FPP},  @file{.F}, @file{.FOR},
430
@file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
431
this option to manually enable preprocessing of any kind of Fortran file.
432
 
433
To disable preprocessing of files with any of the above listed extensions,
434
use the negative form: @option{-nocpp}.
435
 
436
The preprocessor is run in traditional mode. Any restrictions of the
437
file-format, especially the limits on line length, apply for
438
preprocessed output as well, so it might be advisable to use the
439
@option{-ffree-line-length-none} or @option{-ffixed-line-length-none}
440
options.
441
 
442
@item -dM
443
@opindex @code{dM}
444
@cindex preprocessor, debugging
445
@cindex debugging, preprocessor
446
Instead of the normal output, generate a list of @code{'#define'}
447
directives for all the macros defined during the execution of the
448
preprocessor, including predefined macros. This gives you a way
449
of finding out what is predefined in your version of the preprocessor.
450
Assuming you have no file @file{foo.f90}, the command
451
@smallexample
452
  touch foo.f90; gfortran -cpp -E -dM foo.f90
453
@end smallexample
454
will show all the predefined macros.
455
 
456
@item -dD
457
@opindex @code{dD}
458
@cindex preprocessor, debugging
459
@cindex debugging, preprocessor
460
Like @option{-dM} except in two respects: it does not include the
461
predefined macros, and it outputs both the @code{#define} directives
462
and the result of preprocessing. Both kinds of output go to the
463
standard output file.
464
 
465
@item -dN
466
@opindex @code{dN}
467
@cindex preprocessor, debugging
468
@cindex debugging, preprocessor
469
Like @option{-dD}, but emit only the macro names, not their expansions.
470
 
471
@item -dU
472
@opindex @code{dU}
473
@cindex preprocessor, debugging
474
@cindex debugging, preprocessor
475
Like @option{dD} except that only macros that are expanded, or whose
476
definedness is tested in preprocessor directives, are output; the
477
output is delayed until the use or test of the macro; and @code{'#undef'}
478
directives are also output for macros tested but undefined at the time.
479
 
480
@item -dI
481
@opindex @code{dI}
482
@cindex preprocessor, debugging
483
@cindex debugging, preprocessor
484
Output @code{'#include'} directives in addition to the result
485
of preprocessing.
486
 
487
@item -fworking-directory
488
@opindex @code{fworking-directory}
489
@cindex preprocessor, working directory
490
Enable generation of linemarkers in the preprocessor output that will
491
let the compiler know the current working directory at the time of
492
preprocessing. When this option is enabled, the preprocessor will emit,
493
after the initial linemarker, a second linemarker with the current
494
working directory followed by two slashes. GCC will use this directory,
495
when it is present in the preprocessed input, as the directory emitted
496
as the current working directory in some debugging information formats.
497
This option is implicitly enabled if debugging information is enabled,
498
but this can be inhibited with the negated form
499
@option{-fno-working-directory}. If the @option{-P} flag is present
500
in the command line, this option has no effect, since no @code{#line}
501
directives are emitted whatsoever.
502
 
503
@item -idirafter @var{dir}
504
@opindex @code{idirafter @var{dir}}
505
@cindex preprocessing, include path
506
Search @var{dir} for include files, but do it after all directories
507
specified with @option{-I} and the standard system directories have
508
been exhausted. @var{dir} is treated as a system include directory.
509
If dir begins with @code{=}, then the @code{=} will be replaced by
510
the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
511
 
512
@item -imultilib @var{dir}
513
@opindex @code{imultilib @var{dir}}
514
@cindex preprocessing, include path
515
Use @var{dir} as a subdirectory of the directory containing target-specific
516
C++ headers.
517
 
518
@item -iprefix @var{prefix}
519
@opindex @code{iprefix @var{prefix}}
520
@cindex preprocessing, include path
521
Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
522
options. If the @var{prefix} represents a directory, you should include
523
the final @code{'/'}.
524
 
525
@item -isysroot @var{dir}
526
@opindex @code{isysroot @var{dir}}
527
@cindex preprocessing, include path
528
This option is like the @option{--sysroot} option, but applies only to
529
header files. See the @option{--sysroot} option for more information.
530
 
531
@item -iquote @var{dir}
532
@opindex @code{iquote @var{dir}}
533
@cindex preprocessing, include path
534
Search @var{dir} only for header files requested with @code{#include "file"};
535
they are not searched for @code{#include <file>}, before all directories
536
specified by @option{-I} and before the standard system directories. If
537
@var{dir} begins with @code{=}, then the @code{=} will be replaced by the
538
sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
539
 
540
@item -isystem @var{dir}
541
@opindex @code{isystem @var{dir}}
542
@cindex preprocessing, include path
543
Search @var{dir} for header files, after all directories specified by
544
@option{-I} but before the standard system directories. Mark it as a
545
system directory, so that it gets the same special treatment as is
546
applied to the standard system directories. If @var{dir} begins with
547
@code{=}, then the @code{=} will be replaced by the sysroot prefix;
548
see @option{--sysroot} and @option{-isysroot}.
549
 
550
@item -nostdinc
551
@opindex @code{nostdinc}
552
Do not search the standard system directories for header files. Only
553
the directories you have specified with @option{-I} options (and the
554
directory of the current file, if appropriate) are searched.
555
 
556
@item -undef
557
@opindex @code{undef}
558
Do not predefine any system-specific or GCC-specific macros.
559
The standard predefined macros remain defined.
560
 
561
@item -A@var{predicate}=@var{answer}
562
@opindex @code{A@var{predicate}=@var{answer}}
563
@cindex preprocessing, assertion
564
Make an assertion with the predicate @var{predicate} and answer @var{answer}.
565
This form is preferred to the older form -A predicate(answer), which is still
566
supported, because it does not use shell special characters.
567
 
568
@item -A-@var{predicate}=@var{answer}
569
@opindex @code{A-@var{predicate}=@var{answer}}
570
@cindex preprocessing, assertion
571
Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
572
 
573
@item -C
574
@opindex @code{C}
575
@cindex preprocessing, keep comments
576
Do not discard comments. All comments are passed through to the output
577
file, except for comments in processed directives, which are deleted
578
along with the directive.
579
 
580
You should be prepared for side effects when using @option{-C}; it causes
581
the preprocessor to treat comments as tokens in their own right. For example,
582
comments appearing at the start of what would be a directive line have the
583
effect of turning that line into an ordinary source line, since the first
584
token on the line is no longer a @code{'#'}.
585
 
586
Warning: this currently handles C-Style comments only. The preprocessor
587
does not yet recognize Fortran-style comments.
588
 
589
@item -CC
590
@opindex @code{CC}
591
@cindex preprocessing, keep comments
592
Do not discard comments, including during macro expansion. This is like
593
@option{-C}, except that comments contained within macros are also passed
594
through to the output file where the macro is expanded.
595
 
596
In addition to the side-effects of the @option{-C} option, the @option{-CC}
597
option causes all C++-style comments inside a macro to be converted to C-style
598
comments. This is to prevent later use of that macro from inadvertently
599
commenting out the remainder of the source line. The @option{-CC} option
600
is generally used to support lint comments.
601
 
602
Warning: this currently handles C- and C++-Style comments only. The
603
preprocessor does not yet recognize Fortran-style comments.
604
 
605
@item -D@var{name}
606
@opindex @code{D@var{name}}
607
@cindex preprocessing, define macros
608
Predefine name as a macro, with definition @code{1}.
609
 
610
@item -D@var{name}=@var{definition}
611
@opindex @code{D@var{name}=@var{definition}}
612
@cindex preprocessing, define macros
613
The contents of @var{definition} are tokenized and processed as if they
614
appeared during translation phase three in a @code{'#define'} directive.
615
In particular, the definition will be truncated by embedded newline
616
characters.
617
 
618
If you are invoking the preprocessor from a shell or shell-like program
619
you may need to use the shell's quoting syntax to protect characters such
620
as spaces that have a meaning in the shell syntax.
621
 
622
If you wish to define a function-like macro on the command line, write
623
its argument list with surrounding parentheses before the equals sign
624
(if any). Parentheses are meaningful to most shells, so you will need
625
to quote the option. With sh and csh, @code{-D'name(args...)=definition'}
626
works.
627
 
628
@option{-D} and @option{-U} options are processed in the order they are
629
given on the command line. All -imacros file and -include file options
630
are processed after all -D and -U options.
631
 
632
@item -H
633
@opindex @code{H}
634
Print the name of each header file used, in addition to other normal
635
activities. Each name is indented to show how deep in the @code{'#include'}
636
stack it is.
637
 
638
@item -P
639
@opindex @code{P}
640
@cindex preprocessing, no linemarkers
641
Inhibit generation of linemarkers in the output from the preprocessor.
642
This might be useful when running the preprocessor on something that
643
is not C code, and will be sent to a program which might be confused
644
by the linemarkers.
645
 
646
@item -U@var{name}
647
@opindex @code{U@var{name}}
648
@cindex preprocessing, undefine macros
649
Cancel any previous definition of @var{name}, either built in or provided
650
with a @option{-D} option.
651
@end table
652
 
653
 
654
@node Error and Warning Options
655
@section Options to request or suppress errors and warnings
656
@cindex options, warnings
657
@cindex options, errors
658
@cindex warnings, suppressing
659
@cindex messages, error
660
@cindex messages, warning
661
@cindex suppressing warnings
662
 
663
Errors are diagnostic messages that report that the GNU Fortran compiler
664
cannot compile the relevant piece of source code.  The compiler will
665
continue to process the program in an attempt to report further errors
666
to aid in debugging, but will not produce any compiled output.
667
 
668
Warnings are diagnostic messages that report constructions which
669
are not inherently erroneous but which are risky or suggest there is
670
likely to be a bug in the program.  Unless @option{-Werror} is specified,
671
they do not prevent compilation of the program.
672
 
673
You can request many specific warnings with options beginning @option{-W},
674
for example @option{-Wimplicit} to request warnings on implicit
675
declarations.  Each of these specific warning options also has a
676
negative form beginning @option{-Wno-} to turn off warnings;
677
for example, @option{-Wno-implicit}.  This manual lists only one of the
678
two forms, whichever is not the default.
679
 
680
These options control the amount and kinds of errors and warnings produced
681
by GNU Fortran:
682
 
683
@table @gcctabopt
684
@item -fmax-errors=@var{n}
685
@opindex @code{fmax-errors=}@var{n}
686
@cindex errors, limiting
687
Limits the maximum number of error messages to @var{n}, at which point
688
GNU Fortran bails out rather than attempting to continue processing the
689
source code.  If @var{n} is 0, there is no limit on the number of error
690
messages produced.
691
 
692
@item -fsyntax-only
693
@opindex @code{fsyntax-only}
694
@cindex syntax checking
695
Check the code for syntax errors, but do not actually compile it.  This
696
will generate module files for each module present in the code, but no
697
other output file.
698
 
699
@item -pedantic
700
@opindex @code{pedantic}
701
Issue warnings for uses of extensions to Fortran 95.
702
@option{-pedantic} also applies to C-language constructs where they
703
occur in GNU Fortran source files, such as use of @samp{\e} in a
704
character constant within a directive like @code{#include}.
705
 
706
Valid Fortran 95 programs should compile properly with or without
707
this option.
708
However, without this option, certain GNU extensions and traditional
709
Fortran features are supported as well.
710
With this option, many of them are rejected.
711
 
712
Some users try to use @option{-pedantic} to check programs for conformance.
713
They soon find that it does not do quite what they want---it finds some
714
nonstandard practices, but not all.
715
However, improvements to GNU Fortran in this area are welcome.
716
 
717
This should be used in conjunction with @option{-std=f95},
718
@option{-std=f2003} or @option{-std=f2008}.
719
 
720
@item -pedantic-errors
721
@opindex @code{pedantic-errors}
722
Like @option{-pedantic}, except that errors are produced rather than
723
warnings.
724
 
725
@item -Wall
726
@opindex @code{Wall}
727
@cindex all warnings
728
@cindex warnings, all
729
Enables commonly used warning options pertaining to usage that
730
we recommend avoiding and that we believe are easy to avoid.
731
This currently includes @option{-Waliasing}, @option{-Wampersand},
732
@option{-Wconversion}, @option{-Wsurprising}, @option{-Wintrinsics-std},
733
@option{-Wno-tabs}, @option{-Wintrinsic-shadow}, @option{-Wline-truncation},
734
@option{-Wreal-q-constant} and @option{-Wunused}.
735
 
736
@item -Waliasing
737
@opindex @code{Waliasing}
738
@cindex aliasing
739
@cindex warnings, aliasing
740
Warn about possible aliasing of dummy arguments. Specifically, it warns
741
if the same actual argument is associated with a dummy argument with
742
@code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
743
with an explicit interface.
744
 
745
The following example will trigger the warning.
746
@smallexample
747
  interface
748
    subroutine bar(a,b)
749
      integer, intent(in) :: a
750
      integer, intent(out) :: b
751
    end subroutine
752
  end interface
753
  integer :: a
754
 
755
  call bar(a,a)
756
@end smallexample
757
 
758
@item -Wampersand
759
@opindex @code{Wampersand}
760
@cindex warnings, ampersand
761
@cindex @code{&}
762
Warn about missing ampersand in continued character constants. The warning is
763
given with @option{-Wampersand}, @option{-pedantic}, @option{-std=f95},
764
@option{-std=f2003} and @option{-std=f2008}. Note: With no ampersand
765
given in a continued character constant, GNU Fortran assumes continuation
766
at the first non-comment, non-whitespace character after the ampersand
767
that initiated the continuation.
768
 
769
@item -Warray-temporaries
770
@opindex @code{Warray-temporaries}
771
@cindex warnings, array temporaries
772
Warn about array temporaries generated by the compiler.  The information
773
generated by this warning is sometimes useful in optimization, in order to
774
avoid such temporaries.
775
 
776
@item -Wcharacter-truncation
777
@opindex @code{Wcharacter-truncation}
778
@cindex warnings, character truncation
779
Warn when a character assignment will truncate the assigned string.
780
 
781
@item -Wline-truncation
782
@opindex @code{Wline-truncation}
783
@cindex warnings, line truncation
784
Warn when a source code line will be truncated.
785
 
786
@item -Wconversion
787
@opindex @code{Wconversion}
788
@cindex warnings, conversion
789
@cindex conversion
790
Warn about implicit conversions that are likely to change the value of
791
the expression after conversion. Implied by @option{-Wall}.
792
 
793
@item -Wconversion-extra
794
@opindex @code{Wconversion-extra}
795
@cindex warnings, conversion
796
@cindex conversion
797
Warn about implicit conversions between different types and kinds.
798
 
799
@item -Wimplicit-interface
800
@opindex @code{Wimplicit-interface}
801
@cindex warnings, implicit interface
802
Warn if a procedure is called without an explicit interface.
803
Note this only checks that an explicit interface is present.  It does not
804
check that the declared interfaces are consistent across program units.
805
 
806
@item -Wimplicit-procedure
807
@opindex @code{Wimplicit-procedure}
808
@cindex warnings, implicit procedure
809
Warn if a procedure is called that has neither an explicit interface
810
nor has been declared as @code{EXTERNAL}.
811
 
812
@item -Wintrinsics-std
813
@opindex @code{Wintrinsics-std}
814
@cindex warnings, non-standard intrinsics
815
@cindex warnings, intrinsics of other standards
816
Warn if @command{gfortran} finds a procedure named like an intrinsic not
817
available in the currently selected standard (with @option{-std}) and treats
818
it as @code{EXTERNAL} procedure because of this.  @option{-fall-intrinsics} can
819
be used to never trigger this behavior and always link to the intrinsic
820
regardless of the selected standard.
821
 
822
@item -Wreal-q-constant
823
@opindex @code{Wreal-q-constant}
824
@cindex warnings, @code{q} exponent-letter
825
Produce a warning if a real-literal-constant contains a @code{q}
826
exponent-letter.
827
 
828
@item -Wsurprising
829
@opindex @code{Wsurprising}
830
@cindex warnings, suspicious code
831
Produce a warning when ``suspicious'' code constructs are encountered.
832
While technically legal these usually indicate that an error has been made.
833
 
834
This currently produces a warning under the following circumstances:
835
 
836
@itemize @bullet
837
@item
838
An INTEGER SELECT construct has a CASE that can never be matched as its
839
lower value is greater than its upper value.
840
 
841
@item
842
A LOGICAL SELECT construct has three CASE statements.
843
 
844
@item
845
A TRANSFER specifies a source that is shorter than the destination.
846
 
847
@item
848
The type of a function result is declared more than once with the same type.  If
849
@option{-pedantic} or standard-conforming mode is enabled, this is an error.
850
 
851
@item
852
A @code{CHARACTER} variable is declared with negative length.
853
@end itemize
854
 
855
@item -Wtabs
856
@opindex @code{Wtabs}
857
@cindex warnings, tabs
858
@cindex tabulators
859
By default, tabs are accepted as whitespace, but tabs are not members
860
of the Fortran Character Set.  For continuation lines, a tab followed
861
by a digit between 1 and 9 is supported.  @option{-Wno-tabs} will cause
862
a warning to be issued if a tab is encountered. Note, @option{-Wno-tabs}
863
is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
864
@option{-std=f2008} and @option{-Wall}.
865
 
866
@item -Wunderflow
867
@opindex @code{Wunderflow}
868
@cindex warnings, underflow
869
@cindex underflow
870
Produce a warning when numerical constant expressions are
871
encountered, which yield an UNDERFLOW during compilation.
872
 
873
@item -Wintrinsic-shadow
874
@opindex @code{Wintrinsic-shadow}
875
@cindex warnings, intrinsic
876
@cindex intrinsic
877
Warn if a user-defined procedure or module procedure has the same name as an
878
intrinsic; in this case, an explicit interface or @code{EXTERNAL} or
879
@code{INTRINSIC} declaration might be needed to get calls later resolved to
880
the desired intrinsic/procedure.
881
 
882
@item -Wunused-dummy-argument
883
@opindex @code{Wunused-dummy-argument}
884
@cindex warnings, unused dummy argument
885
@cindex unused dummy argument
886
@cindex dummy argument, unused
887
Warn about unused dummy arguments. This option is implied by @option{-Wall}.
888
 
889
@item -Wunused-parameter
890
@opindex @code{Wunused-parameter}
891
@cindex warnings, unused parameter
892
@cindex unused parameter
893
Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
894
@command{gfortran}'s implementation of this option does not warn
895
about unused dummy arguments (see @option{-Wunused-dummy-argument}),
896
but about unused @code{PARAMETER} values. @option{-Wunused-parameter}
897
is not included in @option{-Wall} but is implied by @option{-Wall -Wextra}.
898
 
899
@item -Walign-commons
900
@opindex @code{Walign-commons}
901
@cindex warnings, alignment of @code{COMMON} blocks
902
@cindex alignment of @code{COMMON} blocks
903
By default, @command{gfortran} warns about any occasion of variables being
904
padded for proper alignment inside a @code{COMMON} block. This warning can be turned
905
off via @option{-Wno-align-commons}. See also @option{-falign-commons}.
906
 
907
@item -Wfunction-elimination
908
@opindex @code{Wfunction-elimination}
909
@cindex function elimination
910
@cindex warnings, function elimination
911
Warn if any calls to functions are eliminated by the optimizations
912
enabled by the @option{-ffrontend-optimize} option.
913
 
914
 
915
@item -Werror
916
@opindex @code{Werror}
917
@cindex warnings, to errors
918
Turns all warnings into errors.
919
@end table
920
 
921
@xref{Warning Options,,Options to Request or Suppress Errors and
922
Warnings, gcc,Using the GNU Compiler Collection (GCC)}, for information on
923
more options offered by the GBE shared by @command{gfortran}, @command{gcc}
924
and other GNU compilers.
925
 
926
Some of these have no effect when compiling programs written in Fortran.
927
 
928
@node Debugging Options
929
@section Options for debugging your program or GNU Fortran
930
@cindex options, debugging
931
@cindex debugging information options
932
 
933
GNU Fortran has various special options that are used for debugging
934
either your program or the GNU Fortran compiler.
935
 
936
@table @gcctabopt
937
@item -fdump-fortran-original
938
@opindex @code{fdump-fortran-original}
939
Output the internal parse tree after translating the source program
940
into internal representation.  Only really useful for debugging the
941
GNU Fortran compiler itself.
942
 
943
@item -fdump-optimized-tree
944
@opindex @code{fdump-fortran-optimized}
945
Output the parse tree after front-end optimization.  Only really
946
useful for debugging the GNU Fortran compiler itself.
947
 
948
@opindex @code{fdump-parse-tree}
949
Output the internal parse tree after translating the source program
950
into internal representation.  Only really useful for debugging the
951
GNU Fortran compiler itself.  This option is deprecated; use
952
@code{-fdump-fortran-original} instead.
953
 
954
@item -ffpe-trap=@var{list}
955
@opindex @code{ffpe-trap=}@var{list}
956
Specify a list of floating point exception traps to enable.  On most
957
systems, if a floating point exception occurs and the trap for that
958
exception is enabled, a SIGFPE signal will be sent and the program
959
being aborted, producing a core file useful for debugging.  @var{list}
960
is a (possibly empty) comma-separated list of the following
961
exceptions: @samp{invalid} (invalid floating point operation, such as
962
@code{SQRT(-1.0)}), @samp{zero} (division by zero), @samp{overflow}
963
(overflow in a floating point operation), @samp{underflow} (underflow
964
in a floating point operation), @samp{inexact} (loss of precision
965
during operation), and @samp{denormal} (operation performed on a
966
denormal value).  The first five exceptions correspond to the five
967
IEEE 754 exceptions, whereas the last one (@samp{denormal}) is not
968
part of the IEEE 754 standard but is available on some common
969
architectures such as x86.
970
 
971
The first three exceptions (@samp{invalid}, @samp{zero}, and
972
@samp{overflow}) often indicate serious errors, and unless the program
973
has provisions for dealing with these exceptions, enabling traps for
974
these three exceptions is probably a good idea.
975
 
976
Many, if not most, floating point operations incur loss of precision
977
due to rounding, and hence the @code{ffpe-trap=inexact} is likely to
978
be uninteresting in practice.
979
 
980
By default no exception traps are enabled.
981
 
982
@item -fno-backtrace
983
@opindex @code{fno-backtrace}
984
@cindex backtrace
985
@cindex trace
986
When a serious runtime error is encountered or a deadly signal is
987
emitted (segmentation fault, illegal instruction, bus error,
988
floating-point exception, and the other POSIX signals that have the
989
action @samp{core}), the Fortran runtime library tries to output a
990
backtrace of the error. @code{-fno-backtrace} disables the backtrace
991
generation. This option only has influence for compilation of the
992
Fortran main program.
993
 
994
@end table
995
 
996
@xref{Debugging Options,,Options for Debugging Your Program or GCC,
997
gcc,Using the GNU Compiler Collection (GCC)}, for more information on
998
debugging options.
999
 
1000
@node Directory Options
1001
@section Options for directory search
1002
@cindex directory, options
1003
@cindex options, directory search
1004
@cindex search path
1005
@cindex @code{INCLUDE} directive
1006
@cindex directive, @code{INCLUDE}
1007
These options affect how GNU Fortran searches
1008
for files specified by the @code{INCLUDE} directive and where it searches
1009
for previously compiled modules.
1010
 
1011
It also affects the search paths used by @command{cpp} when used to preprocess
1012
Fortran source.
1013
 
1014
@table @gcctabopt
1015
@item -I@var{dir}
1016
@opindex @code{I}@var{dir}
1017
@cindex directory, search paths for inclusion
1018
@cindex inclusion, directory search paths for
1019
@cindex search paths, for included files
1020
@cindex paths, search
1021
@cindex module search path
1022
These affect interpretation of the @code{INCLUDE} directive
1023
(as well as of the @code{#include} directive of the @command{cpp}
1024
preprocessor).
1025
 
1026
Also note that the general behavior of @option{-I} and
1027
@code{INCLUDE} is pretty much the same as of @option{-I} with
1028
@code{#include} in the @command{cpp} preprocessor, with regard to
1029
looking for @file{header.gcc} files and other such things.
1030
 
1031
This path is also used to search for @file{.mod} files when previously
1032
compiled modules are required by a @code{USE} statement.
1033
 
1034
@xref{Directory Options,,Options for Directory Search,
1035
gcc,Using the GNU Compiler Collection (GCC)}, for information on the
1036
@option{-I} option.
1037
 
1038
@item -J@var{dir}
1039
@opindex @code{J}@var{dir}
1040
@opindex @code{M}@var{dir}
1041
@cindex paths, search
1042
@cindex module search path
1043
This option specifies where to put @file{.mod} files for compiled modules.
1044
It is also added to the list of directories to searched by an @code{USE}
1045
statement.
1046
 
1047
The default is the current directory.
1048
 
1049
@item -fintrinsic-modules-path @var{dir}
1050
@opindex @code{fintrinsic-modules-path} @var{dir}
1051
@cindex paths, search
1052
@cindex module search path
1053
This option specifies the location of pre-compiled intrinsic modules, if
1054
they are not in the default location expected by the compiler.
1055
@end table
1056
 
1057
@node Link Options
1058
@section Influencing the linking step
1059
@cindex options, linking
1060
@cindex linking, static
1061
 
1062
These options come into play when the compiler links object files into an
1063
executable output file. They are meaningless if the compiler is not doing
1064
a link step.
1065
 
1066
@table @gcctabopt
1067
@item -static-libgfortran
1068
@opindex @code{static-libgfortran}
1069
On systems that provide @file{libgfortran} as a shared and a static
1070
library, this option forces the use of the static version. If no
1071
shared version of @file{libgfortran} was built when the compiler was
1072
configured, this option has no effect.
1073
@end table
1074
 
1075
 
1076
@node Runtime Options
1077
@section Influencing runtime behavior
1078
@cindex options, runtime
1079
 
1080
These options affect the runtime behavior of programs compiled with GNU Fortran.
1081
 
1082
@table @gcctabopt
1083
@item -fconvert=@var{conversion}
1084
@opindex @code{fconvert=}@var{conversion}
1085
Specify the representation of data for unformatted files.  Valid
1086
values for conversion are: @samp{native}, the default; @samp{swap},
1087
swap between big- and little-endian; @samp{big-endian}, use big-endian
1088
representation for unformatted files; @samp{little-endian}, use little-endian
1089
representation for unformatted files.
1090
 
1091
@emph{This option has an effect only when used in the main program.
1092
The @code{CONVERT} specifier and the GFORTRAN_CONVERT_UNIT environment
1093
variable override the default specified by @option{-fconvert}.}
1094
 
1095
 
1096
@item -fno-range-check
1097
@opindex @code{fno-range-check}
1098
Disable range checking of input values during integer @code{READ} operations.
1099
For example, GNU Fortran will give an error if an input value is
1100
outside of the relevant range of [@code{-HUGE()}:@code{HUGE()}]. In other words,
1101
with @code{INTEGER (kind=4) :: i} , attempting to read @math{-2147483648} will
1102
give an error unless @option{-fno-range-check} is given.
1103
 
1104
 
1105
@item -frecord-marker=@var{length}
1106
@opindex @code{frecord-marker=}@var{length}
1107
Specify the length of record markers for unformatted files.
1108
Valid values for @var{length} are 4 and 8.  Default is 4.
1109
@emph{This is different from previous versions of @command{gfortran}},
1110
which specified a default record marker length of 8 on most
1111
systems.  If you want to read or write files compatible
1112
with earlier versions of @command{gfortran}, use @option{-frecord-marker=8}.
1113
 
1114
@item -fmax-subrecord-length=@var{length}
1115
@opindex @code{fmax-subrecord-length=}@var{length}
1116
Specify the maximum length for a subrecord.  The maximum permitted
1117
value for length is 2147483639, which is also the default.  Only
1118
really useful for use by the gfortran testsuite.
1119
 
1120
@item -fsign-zero
1121
@opindex @code{fsign-zero}
1122
When enabled, floating point numbers of value zero with the sign bit set
1123
are written as negative number in formatted output and treated as
1124
negative in the @code{SIGN} intrinsic.  @option{-fno-sign-zero} does not
1125
print the negative sign of zero values (or values rounded to zero for I/O)
1126
and regards zero as positive number in the @code{SIGN} intrinsic for
1127
compatibility with Fortran 77. The default is @option{-fsign-zero}.
1128
@end table
1129
 
1130
@node Code Gen Options
1131
@section Options for code generation conventions
1132
@cindex code generation, conventions
1133
@cindex options, code generation
1134
@cindex options, run-time
1135
 
1136
These machine-independent options control the interface conventions
1137
used in code generation.
1138
 
1139
Most of them have both positive and negative forms; the negative form
1140
of @option{-ffoo} would be @option{-fno-foo}.  In the table below, only
1141
one of the forms is listed---the one which is not the default.  You
1142
can figure out the other form by either removing @option{no-} or adding
1143
it.
1144
 
1145
@table @gcctabopt
1146
@item -fno-automatic
1147
@opindex @code{fno-automatic}
1148
@cindex @code{SAVE} statement
1149
@cindex statement, @code{SAVE}
1150
Treat each program unit (except those marked as RECURSIVE) as if the
1151
@code{SAVE} statement were specified for every local variable and array
1152
referenced in it. Does not affect common blocks. (Some Fortran compilers
1153
provide this option under the name @option{-static} or @option{-save}.)
1154
The default, which is @option{-fautomatic}, uses the stack for local
1155
variables smaller than the value given by @option{-fmax-stack-var-size}.
1156
Use the option @option{-frecursive} to use no static memory.
1157
 
1158
@item -ff2c
1159
@opindex ff2c
1160
@cindex calling convention
1161
@cindex @command{f2c} calling convention
1162
@cindex @command{g77} calling convention
1163
@cindex libf2c calling convention
1164
Generate code designed to be compatible with code generated
1165
by @command{g77} and @command{f2c}.
1166
 
1167
The calling conventions used by @command{g77} (originally implemented
1168
in @command{f2c}) require functions that return type
1169
default @code{REAL} to actually return the C type @code{double}, and
1170
functions that return type @code{COMPLEX} to return the values via an
1171
extra argument in the calling sequence that points to where to
1172
store the return value.  Under the default GNU calling conventions, such
1173
functions simply return their results as they would in GNU
1174
C---default @code{REAL} functions return the C type @code{float}, and
1175
@code{COMPLEX} functions return the GNU C type @code{complex}.
1176
Additionally, this option implies the @option{-fsecond-underscore}
1177
option, unless @option{-fno-second-underscore} is explicitly requested.
1178
 
1179
This does not affect the generation of code that interfaces with
1180
the @command{libgfortran} library.
1181
 
1182
@emph{Caution:} It is not a good idea to mix Fortran code compiled with
1183
@option{-ff2c} with code compiled with the default @option{-fno-f2c}
1184
calling conventions as, calling @code{COMPLEX} or default @code{REAL}
1185
functions between program parts which were compiled with different
1186
calling conventions will break at execution time.
1187
 
1188
@emph{Caution:} This will break code which passes intrinsic functions
1189
of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
1190
the library implementations use the @option{-fno-f2c} calling conventions.
1191
 
1192
@item -fno-underscoring
1193
@opindex @code{fno-underscoring}
1194
@cindex underscore
1195
@cindex symbol names, underscores
1196
@cindex transforming symbol names
1197
@cindex symbol names, transforming
1198
Do not transform names of entities specified in the Fortran
1199
source file by appending underscores to them.
1200
 
1201
With @option{-funderscoring} in effect, GNU Fortran appends one
1202
underscore to external names with no underscores.  This is done to ensure
1203
compatibility with code produced by many UNIX Fortran compilers.
1204
 
1205
@emph{Caution}: The default behavior of GNU Fortran is
1206
incompatible with @command{f2c} and @command{g77}, please use the
1207
@option{-ff2c} option if you want object files compiled with
1208
GNU Fortran to be compatible with object code created with these
1209
tools.
1210
 
1211
Use of @option{-fno-underscoring} is not recommended unless you are
1212
experimenting with issues such as integration of GNU Fortran into
1213
existing system environments (vis-@`{a}-vis existing libraries, tools,
1214
and so on).
1215
 
1216
For example, with @option{-funderscoring}, and assuming other defaults like
1217
@option{-fcase-lower} and that @code{j()} and @code{max_count()} are
1218
external functions while @code{my_var} and @code{lvar} are local variables,
1219
a statement like
1220
@smallexample
1221
I = J() + MAX_COUNT (MY_VAR, LVAR)
1222
@end smallexample
1223
@noindent
1224
is implemented as something akin to:
1225
@smallexample
1226
i = j_() + max_count__(&my_var__, &lvar);
1227
@end smallexample
1228
 
1229
With @option{-fno-underscoring}, the same statement is implemented as:
1230
 
1231
@smallexample
1232
i = j() + max_count(&my_var, &lvar);
1233
@end smallexample
1234
 
1235
Use of @option{-fno-underscoring} allows direct specification of
1236
user-defined names while debugging and when interfacing GNU Fortran
1237
code with other languages.
1238
 
1239
Note that just because the names match does @emph{not} mean that the
1240
interface implemented by GNU Fortran for an external name matches the
1241
interface implemented by some other language for that same name.
1242
That is, getting code produced by GNU Fortran to link to code produced
1243
by some other compiler using this or any other method can be only a
1244
small part of the overall solution---getting the code generated by
1245
both compilers to agree on issues other than naming can require
1246
significant effort, and, unlike naming disagreements, linkers normally
1247
cannot detect disagreements in these other areas.
1248
 
1249
Also, note that with @option{-fno-underscoring}, the lack of appended
1250
underscores introduces the very real possibility that a user-defined
1251
external name will conflict with a name in a system library, which
1252
could make finding unresolved-reference bugs quite difficult in some
1253
cases---they might occur at program run time, and show up only as
1254
buggy behavior at run time.
1255
 
1256
In future versions of GNU Fortran we hope to improve naming and linking
1257
issues so that debugging always involves using the names as they appear
1258
in the source, even if the names as seen by the linker are mangled to
1259
prevent accidental linking between procedures with incompatible
1260
interfaces.
1261
 
1262
@item -fno-whole-file
1263
@opindex @code{fno-whole-file}
1264
This flag causes the compiler to resolve and translate each procedure in
1265
a file separately.
1266
 
1267
By default, the whole file is parsed and placed in a single front-end tree.
1268
During resolution, in addition to all the usual checks and fixups, references
1269
to external procedures that are in the same file effect resolution of
1270
that procedure, if not already done, and a check of the interfaces.  The
1271
dependences are resolved by changing the order in which the file is
1272
translated into the backend tree.  Thus, a procedure that is referenced
1273
is translated before the reference and the duplication of backend tree
1274
declarations eliminated.
1275
 
1276
The @option{-fno-whole-file} option is deprecated and may lead to wrong code.
1277
 
1278
@item -fsecond-underscore
1279
@opindex @code{fsecond-underscore}
1280
@cindex underscore
1281
@cindex symbol names, underscores
1282
@cindex transforming symbol names
1283
@cindex symbol names, transforming
1284
@cindex @command{f2c} calling convention
1285
@cindex @command{g77} calling convention
1286
@cindex libf2c calling convention
1287
By default, GNU Fortran appends an underscore to external
1288
names.  If this option is used GNU Fortran appends two
1289
underscores to names with underscores and one underscore to external names
1290
with no underscores.  GNU Fortran also appends two underscores to
1291
internal names with underscores to avoid naming collisions with external
1292
names.
1293
 
1294
This option has no effect if @option{-fno-underscoring} is
1295
in effect.  It is implied by the @option{-ff2c} option.
1296
 
1297
Otherwise, with this option, an external name such as @code{MAX_COUNT}
1298
is implemented as a reference to the link-time external symbol
1299
@code{max_count__}, instead of @code{max_count_}.  This is required
1300
for compatibility with @command{g77} and @command{f2c}, and is implied
1301
by use of the @option{-ff2c} option.
1302
 
1303
@item -fcoarray=@var{<keyword>}
1304
@opindex @code{fcoarray}
1305
@cindex coarrays
1306
 
1307
@table @asis
1308
@item @samp{none}
1309
Disable coarray support; using coarray declarations and image-control
1310
statements will produce a compile-time error. (Default)
1311
 
1312
@item @samp{single}
1313
Single-image mode, i.e. @code{num_images()} is always one.
1314
 
1315
@item @samp{lib}
1316
Library-based coarray parallelization; a suitable GNU Fortran coarray
1317
library needs to be linked.
1318
@end table
1319
 
1320
 
1321
@item -fcheck=@var{<keyword>}
1322
@opindex @code{fcheck}
1323
@cindex array, bounds checking
1324
@cindex bounds checking
1325
@cindex pointer checking
1326
@cindex memory checking
1327
@cindex range checking
1328
@cindex subscript checking
1329
@cindex checking subscripts
1330
@cindex run-time checking
1331
@cindex checking array temporaries
1332
 
1333
Enable the generation of run-time checks; the argument shall be
1334
a comma-delimited list of the following keywords.
1335
 
1336
@table @asis
1337
@item @samp{all}
1338
Enable all run-time test of @option{-fcheck}.
1339
 
1340
@item @samp{array-temps}
1341
Warns at run time when for passing an actual argument a temporary array
1342
had to be generated. The information generated by this warning is
1343
sometimes useful in optimization, in order to avoid such temporaries.
1344
 
1345
Note: The warning is only printed once per location.
1346
 
1347
@item @samp{bounds}
1348
Enable generation of run-time checks for array subscripts
1349
and against the declared minimum and maximum values.  It also
1350
checks array indices for assumed and deferred
1351
shape arrays against the actual allocated bounds and ensures that all string
1352
lengths are equal for character array constructors without an explicit
1353
typespec.
1354
 
1355
Some checks require that @option{-fcheck=bounds} is set for
1356
the compilation of the main program.
1357
 
1358
Note: In the future this may also include other forms of checking, e.g.,
1359
checking substring references.
1360
 
1361
@item @samp{do}
1362
Enable generation of run-time checks for invalid modification of loop
1363
iteration variables.
1364
 
1365
@item @samp{mem}
1366
Enable generation of run-time checks for memory allocation.
1367
Note: This option does not affect explicit allocations using the
1368
@code{ALLOCATE} statement, which will be always checked.
1369
 
1370
@item @samp{pointer}
1371
Enable generation of run-time checks for pointers and allocatables.
1372
 
1373
@item @samp{recursion}
1374
Enable generation of run-time checks for recursively called subroutines and
1375
functions which are not marked as recursive. See also @option{-frecursive}.
1376
Note: This check does not work for OpenMP programs and is disabled if used
1377
together with @option{-frecursive} and @option{-fopenmp}.
1378
@end table
1379
 
1380
 
1381
@item -fbounds-check
1382
@opindex @code{fbounds-check}
1383
@c Note: This option is also referred in gcc's manpage
1384
Deprecated alias for @option{-fcheck=bounds}.
1385
 
1386
@item -fcheck-array-temporaries
1387
@opindex @code{fcheck-array-temporaries}
1388
Deprecated alias for @option{-fcheck=array-temps}.
1389
 
1390
@item -fmax-array-constructor=@var{n}
1391
@opindex @code{fmax-array-constructor}
1392
This option can be used to increase the upper limit permitted in
1393
array constructors.  The code below requires this option to expand
1394
the array at compile time.
1395
 
1396
@smallexample
1397
program test
1398
implicit none
1399
integer j
1400
integer, parameter :: n = 100000
1401
integer, parameter :: i(n) = (/ (2*j, j = 1, n) /)
1402
print '(10(I0,1X))', i
1403
end program test
1404
@end smallexample
1405
 
1406
@emph{Caution:  This option can lead to long compile times and excessively
1407
large object files.}
1408
 
1409
The default value for @var{n} is 65535.
1410
 
1411
 
1412
@item -fmax-stack-var-size=@var{n}
1413
@opindex @code{fmax-stack-var-size}
1414
This option specifies the size in bytes of the largest array that will be put
1415
on the stack; if the size is exceeded static memory is used (except in
1416
procedures marked as RECURSIVE). Use the option @option{-frecursive} to
1417
allow for recursive procedures which do not have a RECURSIVE attribute or
1418
for parallel programs. Use @option{-fno-automatic} to never use the stack.
1419
 
1420
This option currently only affects local arrays declared with constant
1421
bounds, and may not apply to all character variables.
1422
Future versions of GNU Fortran may improve this behavior.
1423
 
1424
The default value for @var{n} is 32768.
1425
 
1426
@item -fstack-arrays
1427
@opindex @code{fstack-arrays}
1428
Adding this option will make the Fortran compiler put all local arrays,
1429
even those of unknown size onto stack memory.  If your program uses very
1430
large local arrays it is possible that you will have to extend your runtime
1431
limits for stack memory on some operating systems. This flag is enabled
1432
by default at optimization level @option{-Ofast}.
1433
 
1434
 
1435
@item -fpack-derived
1436
@opindex @code{fpack-derived}
1437
@cindex structure packing
1438
This option tells GNU Fortran to pack derived type members as closely as
1439
possible.  Code compiled with this option is likely to be incompatible
1440
with code compiled without this option, and may execute slower.
1441
 
1442
@item -frepack-arrays
1443
@opindex @code{frepack-arrays}
1444
@cindex repacking arrays
1445
In some circumstances GNU Fortran may pass assumed shape array
1446
sections via a descriptor describing a noncontiguous area of memory.
1447
This option adds code to the function prologue to repack the data into
1448
a contiguous block at runtime.
1449
 
1450
This should result in faster accesses to the array.  However it can introduce
1451
significant overhead to the function call, especially  when the passed data
1452
is noncontiguous.
1453
 
1454
@item -fshort-enums
1455
@opindex @code{fshort-enums}
1456
This option is provided for interoperability with C code that was
1457
compiled with the @option{-fshort-enums} option.  It will make
1458
GNU Fortran choose the smallest @code{INTEGER} kind a given
1459
enumerator set will fit in, and give all its enumerators this kind.
1460
 
1461
@item -fexternal-blas
1462
@opindex @code{fexternal-blas}
1463
This option will make @command{gfortran} generate calls to BLAS functions
1464
for some matrix operations like @code{MATMUL}, instead of using our own
1465
algorithms, if the size of the matrices involved is larger than a given
1466
limit (see @option{-fblas-matmul-limit}).  This may be profitable if an
1467
optimized vendor BLAS library is available.  The BLAS library will have
1468
to be specified at link time.
1469
 
1470
@item -fblas-matmul-limit=@var{n}
1471
@opindex @code{fblas-matmul-limit}
1472
Only significant when @option{-fexternal-blas} is in effect.
1473
Matrix multiplication of matrices with size larger than (or equal to) @var{n}
1474
will be performed by calls to BLAS functions, while others will be
1475
handled by @command{gfortran} internal algorithms. If the matrices
1476
involved are not square, the size comparison is performed using the
1477
geometric mean of the dimensions of the argument and result matrices.
1478
 
1479
The default value for @var{n} is 30.
1480
 
1481
@item -frecursive
1482
@opindex @code{frecursive}
1483
Allow indirect recursion by forcing all local arrays to be allocated
1484
on the stack. This flag cannot be used together with
1485
@option{-fmax-stack-var-size=} or @option{-fno-automatic}.
1486
 
1487
@item -finit-local-zero
1488
@itemx -finit-integer=@var{n}
1489
@itemx -finit-real=@var{<zero|inf|-inf|nan|snan>}
1490
@itemx -finit-logical=@var{<true|false>}
1491
@itemx -finit-character=@var{n}
1492
@opindex @code{finit-local-zero}
1493
@opindex @code{finit-integer}
1494
@opindex @code{finit-real}
1495
@opindex @code{finit-logical}
1496
@opindex @code{finit-character}
1497
The @option{-finit-local-zero} option instructs the compiler to
1498
initialize local @code{INTEGER}, @code{REAL}, and @code{COMPLEX}
1499
variables to zero, @code{LOGICAL} variables to false, and
1500
@code{CHARACTER} variables to a string of null bytes.  Finer-grained
1501
initialization options are provided by the
1502
@option{-finit-integer=@var{n}},
1503
@option{-finit-real=@var{<zero|inf|-inf|nan|snan>}} (which also initializes
1504
the real and imaginary parts of local @code{COMPLEX} variables),
1505
@option{-finit-logical=@var{<true|false>}}, and
1506
@option{-finit-character=@var{n}} (where @var{n} is an ASCII character
1507
value) options.  These options do not initialize
1508
@itemize @bullet
1509
@item
1510
allocatable arrays
1511
@item
1512
components of derived type variables
1513
@item
1514
variables that appear in an @code{EQUIVALENCE} statement.
1515
@end itemize
1516
(These limitations may be removed in future releases).
1517
 
1518
Note that the @option{-finit-real=nan} option initializes @code{REAL}
1519
and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN
1520
use @option{-finit-real=snan}; note, however, that compile-time
1521
optimizations may convert them into quiet NaN and that trapping
1522
needs to be enabled (e.g. via @option{-ffpe-trap}).
1523
 
1524
Finally, note that enabling any of the @option{-finit-*} options will
1525
silence warnings that would have been emitted by @option{-Wuninitialized}
1526
for the affected local variables.
1527
 
1528
@item -falign-commons
1529
@opindex @code{falign-commons}
1530
@cindex alignment of @code{COMMON} blocks
1531
By default, @command{gfortran} enforces proper alignment of all variables in a
1532
@code{COMMON} block by padding them as needed. On certain platforms this is mandatory,
1533
on others it increases performance. If a @code{COMMON} block is not declared with
1534
consistent data types everywhere, this padding can cause trouble, and
1535
@option{-fno-align-commons} can be used to disable automatic alignment. The
1536
same form of this option should be used for all files that share a @code{COMMON} block.
1537
To avoid potential alignment issues in @code{COMMON} blocks, it is recommended to order
1538
objects from largest to smallest.
1539
 
1540
@item -fno-protect-parens
1541
@opindex @code{fno-protect-parens}
1542
@cindex re-association of parenthesized expressions
1543
By default the parentheses in expression are honored for all optimization
1544
levels such that the compiler does not do any re-association. Using
1545
@option{-fno-protect-parens} allows the compiler to reorder @code{REAL} and
1546
@code{COMPLEX} expressions to produce faster code. Note that for the re-association
1547
optimization @option{-fno-signed-zeros} and @option{-fno-trapping-math}
1548
need to be in effect. The parentheses protection is enabled by default, unless
1549
@option{-Ofast} is given.
1550
 
1551
@item -frealloc-lhs
1552
@opindex @code{frealloc-lhs}
1553
@cindex Reallocate the LHS in assignments
1554
An allocatable left-hand side of an intrinsic assignment is automatically
1555
(re)allocated if it is either unallocated or has a different shape. The
1556
option is enabled by default except when @option{-std=f95} is given.
1557
 
1558
@item -faggressive-function-elimination
1559
@opindex @code{faggressive-function-elimination}
1560
@cindex Elimination of functions with identical argument lists
1561
Functions with identical argument lists are eliminated within
1562
statements, regardless of whether these functions are marked
1563
@code{PURE} or not. For example, in
1564
@smallexample
1565
  a = f(b,c) + f(b,c)
1566
@end smallexample
1567
there will only be a single call to @code{f}.  This option only works
1568
if @option{-ffrontend-optimize} is in effect.
1569
 
1570
@item -ffrontend-optimize
1571
@opindex @code{frontend-optimize}
1572
@cindex Front-end optimization
1573
This option performs front-end optimization, based on manipulating
1574
parts the Fortran parse tree.  Enabled by default by any @option{-O}
1575
option.  Optimizations enabled by this option include elimination of
1576
identical function calls within expressions, removing unnecessary
1577
calls to @code{TRIM} in comparisons and assignments and replacing
1578
@code{TRIM(a)} with @code{a(1:LEN_TRIM(a))}.
1579
It can be deselected by specifying @option{-fno-frontend-optimize}.
1580
@end table
1581
 
1582
@xref{Code Gen Options,,Options for Code Generation Conventions,
1583
gcc,Using the GNU Compiler Collection (GCC)}, for information on more options
1584
offered by the GBE
1585
shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
1586
 
1587
@c man end
1588
 
1589
@node Environment Variables
1590
@section Environment variables affecting @command{gfortran}
1591
@cindex environment variable
1592
 
1593
@c man begin ENVIRONMENT
1594
 
1595
The @command{gfortran} compiler currently does not make use of any environment
1596
variables to control its operation above and beyond those
1597
that affect the operation of @command{gcc}.
1598
 
1599
@xref{Environment Variables,,Environment Variables Affecting GCC,
1600
gcc,Using the GNU Compiler Collection (GCC)}, for information on environment
1601
variables.
1602
 
1603
@xref{Runtime}, for environment variables that affect the
1604
run-time behavior of programs compiled with GNU Fortran.
1605
@c man end

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.