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