Commit 1b015db7 by Sandra Loosemore Committed by Sandra Loosemore

invoke.texi: Clean up "that"/"which" confusion.

2012-02-16  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/invoke.texi: Clean up "that"/"which" confusion.

From-SVN: r184320
parent 7feed462
2012-02-16 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi: Clean up "that"/"which" confusion.
2012-02-17 Steven Bosscher <steven@gcc.gnu.org> 2012-02-17 Steven Bosscher <steven@gcc.gnu.org>
* system.h: Poison SMALL_REGISTER_CLASSES * system.h: Poison SMALL_REGISTER_CLASSES
......
...@@ -1029,20 +1029,20 @@ compilation is done: ...@@ -1029,20 +1029,20 @@ compilation is done:
@table @gcctabopt @table @gcctabopt
@item @var{file}.c @item @var{file}.c
C source code which must be preprocessed. C source code that must be preprocessed.
@item @var{file}.i @item @var{file}.i
C source code which should not be preprocessed. C source code that should not be preprocessed.
@item @var{file}.ii @item @var{file}.ii
C++ source code which should not be preprocessed. C++ source code that should not be preprocessed.
@item @var{file}.m @item @var{file}.m
Objective-C source code. Note that you must link with the @file{libobjc} Objective-C source code. Note that you must link with the @file{libobjc}
library to make an Objective-C program work. library to make an Objective-C program work.
@item @var{file}.mi @item @var{file}.mi
Objective-C source code which should not be preprocessed. Objective-C source code that should not be preprocessed.
@item @var{file}.mm @item @var{file}.mm
@itemx @var{file}.M @itemx @var{file}.M
...@@ -1051,7 +1051,7 @@ library to make an Objective-C++ program work. Note that @samp{.M} refers ...@@ -1051,7 +1051,7 @@ library to make an Objective-C++ program work. Note that @samp{.M} refers
to a literal capital M@. to a literal capital M@.
@item @var{file}.mii @item @var{file}.mii
Objective-C++ source code which should not be preprocessed. Objective-C++ source code that should not be preprocessed.
@item @var{file}.h @item @var{file}.h
C, C++, Objective-C or Objective-C++ header file to be turned into a C, C++, Objective-C or Objective-C++ header file to be turned into a
...@@ -1065,16 +1065,16 @@ Ada spec (via the @option{-fdump-ada-spec} switch). ...@@ -1065,16 +1065,16 @@ Ada spec (via the @option{-fdump-ada-spec} switch).
@itemx @var{file}.CPP @itemx @var{file}.CPP
@itemx @var{file}.c++ @itemx @var{file}.c++
@itemx @var{file}.C @itemx @var{file}.C
C++ source code which must be preprocessed. Note that in @samp{.cxx}, C++ source code that must be preprocessed. Note that in @samp{.cxx},
the last two letters must both be literally @samp{x}. Likewise, the last two letters must both be literally @samp{x}. Likewise,
@samp{.C} refers to a literal capital C@. @samp{.C} refers to a literal capital C@.
@item @var{file}.mm @item @var{file}.mm
@itemx @var{file}.M @itemx @var{file}.M
Objective-C++ source code which must be preprocessed. Objective-C++ source code that must be preprocessed.
@item @var{file}.mii @item @var{file}.mii
Objective-C++ source code which should not be preprocessed. Objective-C++ source code that should not be preprocessed.
@item @var{file}.hh @item @var{file}.hh
@itemx @var{file}.H @itemx @var{file}.H
...@@ -1089,27 +1089,27 @@ C++ header file to be turned into a precompiled header or Ada spec. ...@@ -1089,27 +1089,27 @@ C++ header file to be turned into a precompiled header or Ada spec.
@item @var{file}.f @item @var{file}.f
@itemx @var{file}.for @itemx @var{file}.for
@itemx @var{file}.ftn @itemx @var{file}.ftn
Fixed form Fortran source code which should not be preprocessed. Fixed form Fortran source code that should not be preprocessed.
@item @var{file}.F @item @var{file}.F
@itemx @var{file}.FOR @itemx @var{file}.FOR
@itemx @var{file}.fpp @itemx @var{file}.fpp
@itemx @var{file}.FPP @itemx @var{file}.FPP
@itemx @var{file}.FTN @itemx @var{file}.FTN
Fixed form Fortran source code which must be preprocessed (with the traditional Fixed form Fortran source code that must be preprocessed (with the traditional
preprocessor). preprocessor).
@item @var{file}.f90 @item @var{file}.f90
@itemx @var{file}.f95 @itemx @var{file}.f95
@itemx @var{file}.f03 @itemx @var{file}.f03
@itemx @var{file}.f08 @itemx @var{file}.f08
Free form Fortran source code which should not be preprocessed. Free form Fortran source code that should not be preprocessed.
@item @var{file}.F90 @item @var{file}.F90
@itemx @var{file}.F95 @itemx @var{file}.F95
@itemx @var{file}.F03 @itemx @var{file}.F03
@itemx @var{file}.F08 @itemx @var{file}.F08
Free form Fortran source code which must be preprocessed (with the Free form Fortran source code that must be preprocessed (with the
traditional preprocessor). traditional preprocessor).
@item @var{file}.go @item @var{file}.go
...@@ -1122,7 +1122,7 @@ Go source code. ...@@ -1122,7 +1122,7 @@ Go source code.
@c @var{file}.jar @c @var{file}.jar
@item @var{file}.ads @item @var{file}.ads
Ada source code file which contains a library unit declaration (a Ada source code file that contains a library unit declaration (a
declaration of a package, subprogram, or generic, or a generic declaration of a package, subprogram, or generic, or a generic
instantiation), or a library unit renaming declaration (a package, instantiation), or a library unit renaming declaration (a package,
generic, or subprogram renaming declaration). Such files are also generic, or subprogram renaming declaration). Such files are also
...@@ -1144,7 +1144,7 @@ Assembler code. ...@@ -1144,7 +1144,7 @@ Assembler code.
@item @var{file}.S @item @var{file}.S
@itemx @var{file}.sx @itemx @var{file}.sx
Assembler code which must be preprocessed. Assembler code that must be preprocessed.
@item @var{other} @item @var{other}
An object file to be fed straight into linking. An object file to be fed straight into linking.
...@@ -1223,7 +1223,7 @@ Stop after the preprocessing stage; do not run the compiler proper. The ...@@ -1223,7 +1223,7 @@ Stop after the preprocessing stage; do not run the compiler proper. The
output is in the form of preprocessed source code, which is sent to the output is in the form of preprocessed source code, which is sent to the
standard output. standard output.
Input files which don't require preprocessing are ignored. Input files that don't require preprocessing are ignored.
@cindex output file option @cindex output file option
@item -o @var{file} @item -o @var{file}
...@@ -1265,7 +1265,7 @@ understood by @command{gcc}. If the @option{-v} option is also specified ...@@ -1265,7 +1265,7 @@ understood by @command{gcc}. If the @option{-v} option is also specified
then @option{--help} will also be passed on to the various processes then @option{--help} will also be passed on to the various processes
invoked by @command{gcc}, so that they can display the command-line options invoked by @command{gcc}, so that they can display the command-line options
they accept. If the @option{-Wextra} option has also been specified they accept. If the @option{-Wextra} option has also been specified
(prior to the @option{--help} option), then command-line options which (prior to the @option{--help} option), then command-line options that
have no documentation associated with them will also be displayed. have no documentation associated with them will also be displayed.
@item --target-help @item --target-help
...@@ -1311,15 +1311,15 @@ These are the supported qualifiers: ...@@ -1311,15 +1311,15 @@ These are the supported qualifiers:
@table @asis @table @asis
@item @samp{undocumented} @item @samp{undocumented}
Display only those options which are undocumented. Display only those options that are undocumented.
@item @samp{joined} @item @samp{joined}
Display options which take an argument that appears after an equal Display options taking an argument that appears after an equal
sign in the same continuous piece of text, such as: sign in the same continuous piece of text, such as:
@samp{--help=target}. @samp{--help=target}.
@item @samp{separate} @item @samp{separate}
Display options which take an argument that appears as a separate word Display options taking an argument that appears as a separate word
following the original option, such as: @samp{-o output-file}. following the original option, such as: @samp{-o output-file}.
@end table @end table
...@@ -1333,7 +1333,7 @@ switches supported by the compiler the following can be used: ...@@ -1333,7 +1333,7 @@ switches supported by the compiler the following can be used:
The sense of a qualifier can be inverted by prefixing it with the The sense of a qualifier can be inverted by prefixing it with the
@samp{^} character, so for example to display all binary warning @samp{^} character, so for example to display all binary warning
options (i.e., ones that are either on or off and that do not take an options (i.e., ones that are either on or off and that do not take an
argument), which have a description the following can be used: argument) that have a description, use:
@smallexample @smallexample
--help=warnings,^joined,^undocumented --help=warnings,^joined,^undocumented
...@@ -1683,7 +1683,7 @@ do not have an ISO standard meaning. ...@@ -1683,7 +1683,7 @@ do not have an ISO standard meaning.
GCC normally generates special code to handle certain built-in functions GCC normally generates special code to handle certain built-in functions
more efficiently; for instance, calls to @code{alloca} may become single more efficiently; for instance, calls to @code{alloca} may become single
instructions that adjust the stack directly, and calls to @code{memcpy} instructions which adjust the stack directly, and calls to @code{memcpy}
may become inline copy loops. The resulting code is often both smaller may become inline copy loops. The resulting code is often both smaller
and faster, but since the function calls no longer appear as such, you and faster, but since the function calls no longer appear as such, you
cannot set a breakpoint on those calls, nor can you change the behavior cannot set a breakpoint on those calls, nor can you change the behavior
...@@ -1781,7 +1781,7 @@ fields within structs/unions}, for details. ...@@ -1781,7 +1781,7 @@ fields within structs/unions}, for details.
Accept some non-standard constructs used in Plan 9 code. Accept some non-standard constructs used in Plan 9 code.
This enables @option{-fms-extensions}, permits passing pointers to This enables @option{-fms-extensions}, permits passing pointers to
structures with anonymous fields to functions which expect pointers to structures with anonymous fields to functions that expect pointers to
elements of the type of the field, and permits referring to anonymous elements of the type of the field, and permits referring to anonymous
fields declared using a typedef. @xref{Unnamed Fields,,Unnamed fields declared using a typedef. @xref{Unnamed Fields,,Unnamed
struct/union fields within structs/unions}, for details. This is only struct/union fields within structs/unions}, for details. This is only
...@@ -1984,7 +1984,7 @@ Inject friend functions into the enclosing namespace, so that they are ...@@ -1984,7 +1984,7 @@ Inject friend functions into the enclosing namespace, so that they are
visible outside the scope of the class in which they are declared. visible outside the scope of the class in which they are declared.
Friend functions were documented to work this way in the old Annotated Friend functions were documented to work this way in the old Annotated
C++ Reference Manual, and versions of G++ before 4.1 always worked C++ Reference Manual, and versions of G++ before 4.1 always worked
that way. However, in ISO C++ a friend function which is not declared that way. However, in ISO C++ a friend function that is not declared
in an enclosing scope can only be found using argument dependent in an enclosing scope can only be found using argument dependent
lookup. This option causes friends to be injected as they were in lookup. This option causes friends to be injected as they were in
earlier releases. earlier releases.
...@@ -1995,7 +1995,7 @@ release of G++. ...@@ -1995,7 +1995,7 @@ release of G++.
@item -fno-elide-constructors @item -fno-elide-constructors
@opindex fno-elide-constructors @opindex fno-elide-constructors
The C++ standard allows an implementation to omit creating a temporary The C++ standard allows an implementation to omit creating a temporary
which is only used to initialize another object of the same type. that is only used to initialize another object of the same type.
Specifying this option disables that optimization, and forces G++ to Specifying this option disables that optimization, and forces G++ to
call the copy constructor in all cases. call the copy constructor in all cases.
...@@ -2033,7 +2033,7 @@ word as an identifier. You can use the keyword @code{__typeof__} instead. ...@@ -2033,7 +2033,7 @@ word as an identifier. You can use the keyword @code{__typeof__} instead.
@item -fno-implicit-templates @item -fno-implicit-templates
@opindex fno-implicit-templates @opindex fno-implicit-templates
Never emit code for non-inline templates which are instantiated Never emit code for non-inline templates that are instantiated
implicitly (i.e.@: by use); only emit code for explicit instantiations. implicitly (i.e.@: by use); only emit code for explicit instantiations.
@xref{Template Instantiation}, for more information. @xref{Template Instantiation}, for more information.
...@@ -2098,7 +2098,7 @@ template followed by the template arguments and any typedefs or ...@@ -2098,7 +2098,7 @@ template followed by the template arguments and any typedefs or
typenames in the signature (e.g. @code{void f(T) [with T = int]} typenames in the signature (e.g. @code{void f(T) [with T = int]}
rather than @code{void f(int)}) so that it's clear which template is rather than @code{void f(int)}) so that it's clear which template is
involved. When an error message refers to a specialization of a class involved. When an error message refers to a specialization of a class
template, the compiler will omit any template arguments which match template, the compiler will omit any template arguments that match
the default template arguments for that template. If either of these the default template arguments for that template. If either of these
behaviors make it harder to understand the error message rather than behaviors make it harder to understand the error message rather than
easier, using @option{-fno-pretty-templates} will disable them. easier, using @option{-fno-pretty-templates} will disable them.
...@@ -2129,7 +2129,7 @@ This information is generally only useful to the G++ development team. ...@@ -2129,7 +2129,7 @@ This information is generally only useful to the G++ development team.
@opindex fstrict-enums @opindex fstrict-enums
Allow the compiler to optimize using the assumption that a value of Allow the compiler to optimize using the assumption that a value of
enumeration type can only be one of the values of the enumeration (as enumeration type can only be one of the values of the enumeration (as
defined in the C++ standard; basically, a value which can be defined in the C++ standard; basically, a value that can be
represented in the minimum number of bits needed to represent all the represented in the minimum number of bits needed to represent all the
enumerators). This assumption may not be valid if the program uses a enumerators). This assumption may not be valid if the program uses a
cast to convert an arbitrary integer value to the enumeration type. cast to convert an arbitrary integer value to the enumeration type.
...@@ -2209,13 +2209,13 @@ Types, but not their members, are not hidden by default. ...@@ -2209,13 +2209,13 @@ Types, but not their members, are not hidden by default.
@item @item
The One Definition Rule is relaxed for types without explicit The One Definition Rule is relaxed for types without explicit
visibility specifications which are defined in more than one different visibility specifications that are defined in more than one different
shared object: those declarations are permitted if they would have shared object: those declarations are permitted if they would have
been permitted when this option was not used. been permitted when this option was not used.
@end enumerate @end enumerate
In new code it is better to use @option{-fvisibility=hidden} and In new code it is better to use @option{-fvisibility=hidden} and
export those classes which are intended to be externally visible. export those classes that are intended to be externally visible.
Unfortunately it is possible for code to rely, perhaps accidentally, Unfortunately it is possible for code to rely, perhaps accidentally,
on the Visual Studio behavior. on the Visual Studio behavior.
...@@ -2406,7 +2406,7 @@ public static member functions. ...@@ -2406,7 +2406,7 @@ public static member functions.
@item -Wdelete-non-virtual-dtor @r{(C++ and Objective-C++ only)} @item -Wdelete-non-virtual-dtor @r{(C++ and Objective-C++ only)}
@opindex Wdelete-non-virtual-dtor @opindex Wdelete-non-virtual-dtor
@opindex Wno-delete-non-virtual-dtor @opindex Wno-delete-non-virtual-dtor
Warn when @samp{delete} is used to destroy an instance of a class which Warn when @samp{delete} is used to destroy an instance of a class that
has virtual functions and non-virtual destructor. It is unsafe to delete has virtual functions and non-virtual destructor. It is unsafe to delete
an instance of a derived class through a pointer to a base class if the an instance of a derived class through a pointer to a base class if the
base class does not have a virtual destructor. This warning is enabled base class does not have a virtual destructor. This warning is enabled
...@@ -2534,7 +2534,7 @@ function. Because this non-conforming behavior is no longer the default ...@@ -2534,7 +2534,7 @@ function. Because this non-conforming behavior is no longer the default
behavior for G++, @option{-Wnon-template-friend} allows the compiler to behavior for G++, @option{-Wnon-template-friend} allows the compiler to
check existing code for potential trouble spots and is on by default. check existing code for potential trouble spots and is on by default.
This new compiler behavior can be turned off with This new compiler behavior can be turned off with
@option{-Wno-non-template-friend} which keeps the conformant compiler code @option{-Wno-non-template-friend}, which keeps the conformant compiler code
but disables the helpful warning. but disables the helpful warning.
@item -Wold-style-cast @r{(C++ and Objective-C++ only)} @item -Wold-style-cast @r{(C++ and Objective-C++ only)}
...@@ -2682,11 +2682,11 @@ machines, and Version 2 on 64-bit target machines. ...@@ -2682,11 +2682,11 @@ machines, and Version 2 on 64-bit target machines.
@opindex fobjc-call-cxx-cdtors @opindex fobjc-call-cxx-cdtors
For each Objective-C class, check if any of its instance variables is a For each Objective-C class, check if any of its instance variables is a
C++ object with a non-trivial default constructor. If so, synthesize a C++ object with a non-trivial default constructor. If so, synthesize a
special @code{- (id) .cxx_construct} instance method that will run special @code{- (id) .cxx_construct} instance method which will run
non-trivial default constructors on any such instance variables, in order, non-trivial default constructors on any such instance variables, in order,
and then return @code{self}. Similarly, check if any instance variable and then return @code{self}. Similarly, check if any instance variable
is a C++ object with a non-trivial destructor, and if so, synthesize a is a C++ object with a non-trivial destructor, and if so, synthesize a
special @code{- (void) .cxx_destruct} method that will run special @code{- (void) .cxx_destruct} method which will run
all such default destructors, in reverse order. all such default destructors, in reverse order.
The @code{- (id) .cxx_construct} and @code{- (void) .cxx_destruct} The @code{- (id) .cxx_construct} and @code{- (void) .cxx_destruct}
...@@ -2812,7 +2812,7 @@ Warn if multiple methods with differing argument and/or return types are ...@@ -2812,7 +2812,7 @@ Warn if multiple methods with differing argument and/or return types are
found for a given selector when attempting to send a message using this found for a given selector when attempting to send a message using this
selector to a receiver of type @code{id} or @code{Class}. When this flag selector to a receiver of type @code{id} or @code{Class}. When this flag
is off (which is the default behavior), the compiler will omit such warnings is off (which is the default behavior), the compiler will omit such warnings
if any differences found are confined to types which share the same size if any differences found are confined to types that share the same size
and alignment. and alignment.
@item -Wundeclared-selector @r{(Objective-C and Objective-C++ only)} @item -Wundeclared-selector @r{(Objective-C and Objective-C++ only)}
...@@ -2877,7 +2877,7 @@ a message which is too long to fit on a single line. ...@@ -2877,7 +2877,7 @@ a message which is too long to fit on a single line.
@item -fno-diagnostics-show-option @item -fno-diagnostics-show-option
@opindex fno-diagnostics-show-option @opindex fno-diagnostics-show-option
@opindex fdiagnostics-show-option @opindex fdiagnostics-show-option
By default, each diagnostic emitted includes text which indicates the By default, each diagnostic emitted includes text indicating the
command-line option that directly controls the diagnostic (if such an command-line option that directly controls the diagnostic (if such an
option is known to the diagnostic machinery). Specifying the option is known to the diagnostic machinery). Specifying the
@option{-fno-diagnostics-show-option} flag suppresses that behavior. @option{-fno-diagnostics-show-option} flag suppresses that behavior.
...@@ -2891,8 +2891,8 @@ option is known to the diagnostic machinery). Specifying the ...@@ -2891,8 +2891,8 @@ option is known to the diagnostic machinery). Specifying the
@cindex messages, warning @cindex messages, warning
@cindex suppressing warnings @cindex suppressing warnings
Warnings are diagnostic messages that report constructions which Warnings are diagnostic messages that report constructions that
are not inherently erroneous but which are risky or suggest there are not inherently erroneous but that are risky or suggest there
may have been an error. may have been an error.
The following language-independent options do not enable specific The following language-independent options do not enable specific
...@@ -2934,7 +2934,7 @@ warnings, for example @option{-Wno-error=switch} makes ...@@ -2934,7 +2934,7 @@ warnings, for example @option{-Wno-error=switch} makes
is in effect. is in effect.
The warning message for each controllable warning includes the The warning message for each controllable warning includes the
option which controls the warning. That option can then be used with option that controls the warning. That option can then be used with
@option{-Werror=} and @option{-Wno-error=} as described above. @option{-Werror=} and @option{-Wno-error=} as described above.
(Printing of the option in the warning message can be disabled using the (Printing of the option in the warning message can be disabled using the
@option{-fno-diagnostics-show-option} flag.) @option{-fno-diagnostics-show-option} flag.)
...@@ -3107,10 +3107,10 @@ conditional expression. ...@@ -3107,10 +3107,10 @@ conditional expression.
(C++ only) Ambiguous virtual bases. (C++ only) Ambiguous virtual bases.
@item @item
(C++ only) Subscripting an array which has been declared @samp{register}. (C++ only) Subscripting an array that has been declared @samp{register}.
@item @item
(C++ only) Taking the address of a variable which has been declared (C++ only) Taking the address of a variable that has been declared
@samp{register}. @samp{register}.
@item @item
...@@ -3219,7 +3219,7 @@ aspects of format checking, the options @option{-Wformat-y2k}, ...@@ -3219,7 +3219,7 @@ aspects of format checking, the options @option{-Wformat-y2k},
@opindex Wformat-y2k @opindex Wformat-y2k
@opindex Wno-format-y2k @opindex Wno-format-y2k
If @option{-Wformat} is specified, also warn about @code{strftime} If @option{-Wformat} is specified, also warn about @code{strftime}
formats which may yield only a two-digit year. formats that may yield only a two-digit year.
@item -Wno-format-contains-nul @item -Wno-format-contains-nul
@opindex Wno-format-contains-nul @opindex Wno-format-contains-nul
...@@ -3287,7 +3287,7 @@ can be disabled with the @option{-Wno-nonnull} option. ...@@ -3287,7 +3287,7 @@ can be disabled with the @option{-Wno-nonnull} option.
@item -Winit-self @r{(C, C++, Objective-C and Objective-C++ only)} @item -Winit-self @r{(C, C++, Objective-C and Objective-C++ only)}
@opindex Winit-self @opindex Winit-self
@opindex Wno-init-self @opindex Wno-init-self
Warn about uninitialized variables which are initialized with themselves. Warn about uninitialized variables that are initialized with themselves.
Note this option can only be used with the @option{-Wuninitialized} option. Note this option can only be used with the @option{-Wuninitialized} option.
For example, GCC will warn about @code{i} being uninitialized in the For example, GCC will warn about @code{i} being uninitialized in the
...@@ -3626,12 +3626,12 @@ or if a variable may be clobbered by a @code{setjmp} call. In C++, ...@@ -3626,12 +3626,12 @@ or if a variable may be clobbered by a @code{setjmp} call. In C++,
warn if a non-static reference or non-static @samp{const} member warn if a non-static reference or non-static @samp{const} member
appears in a class without constructors. appears in a class without constructors.
If you want to warn about code which uses the uninitialized value of the If you want to warn about code that uses the uninitialized value of the
variable in its own initializer, use the @option{-Winit-self} option. variable in its own initializer, use the @option{-Winit-self} option.
These warnings occur for individual uninitialized or clobbered These warnings occur for individual uninitialized or clobbered
elements of structure, union or array variables as well as for elements of structure, union or array variables as well as for
variables which are uninitialized or clobbered as a whole. They do variables that are uninitialized or clobbered as a whole. They do
not occur for variables or elements declared @code{volatile}. Because not occur for variables or elements declared @code{volatile}. Because
these warnings depend on optimization, the exact variables or elements these warnings depend on optimization, the exact variables or elements
for which there are warnings will depend on the precise optimization for which there are warnings will depend on the precise optimization
...@@ -3686,7 +3686,7 @@ The compiler sees only the calls to @code{setjmp}. It cannot know ...@@ -3686,7 +3686,7 @@ The compiler sees only the calls to @code{setjmp}. It cannot know
where @code{longjmp} will be called; in fact, a signal handler could where @code{longjmp} will be called; in fact, a signal handler could
call it at any point in the code. As a result, you may get a warning call it at any point in the code. As a result, you may get a warning
even when there is in fact no problem because @code{longjmp} cannot even when there is in fact no problem because @code{longjmp} cannot
in fact be called at the place which would cause a problem. in fact be called at the place that would cause a problem.
Some spurious warnings can be avoided if you declare all the functions Some spurious warnings can be avoided if you declare all the functions
you use that never return as @code{noreturn}. @xref{Function you use that never return as @code{noreturn}. @xref{Function
...@@ -3700,7 +3700,7 @@ This warning is enabled by @option{-Wall} or @option{-Wextra}. ...@@ -3700,7 +3700,7 @@ This warning is enabled by @option{-Wall} or @option{-Wextra}.
@cindex warning for unknown pragmas @cindex warning for unknown pragmas
@cindex unknown pragmas, warning @cindex unknown pragmas, warning
@cindex pragmas, warning of unknown @cindex pragmas, warning of unknown
Warn when a #pragma directive is encountered which is not understood by Warn when a @code{#pragma} directive is encountered that is not understood by
GCC@. If this command-line option is used, warnings will even be issued GCC@. If this command-line option is used, warnings will even be issued
for unknown pragmas in system header files. This is not the case if for unknown pragmas in system header files. This is not the case if
the warnings were only enabled by the @option{-Wall} command-line option. the warnings were only enabled by the @option{-Wall} command-line option.
...@@ -3716,7 +3716,7 @@ invalid syntax, or conflicts between pragmas. See also ...@@ -3716,7 +3716,7 @@ invalid syntax, or conflicts between pragmas. See also
@opindex Wstrict-aliasing @opindex Wstrict-aliasing
@opindex Wno-strict-aliasing @opindex Wno-strict-aliasing
This option is only active when @option{-fstrict-aliasing} is active. This option is only active when @option{-fstrict-aliasing} is active.
It warns about code which might break the strict aliasing rules that the It warns about code that might break the strict aliasing rules that the
compiler is using for optimization. The warning does not catch all compiler is using for optimization. The warning does not catch all
cases, but does attempt to catch the more common pitfalls. It is cases, but does attempt to catch the more common pitfalls. It is
included in @option{-Wall}. included in @option{-Wall}.
...@@ -3726,7 +3726,7 @@ It is equivalent to @option{-Wstrict-aliasing=3} ...@@ -3726,7 +3726,7 @@ It is equivalent to @option{-Wstrict-aliasing=3}
@opindex Wstrict-aliasing=n @opindex Wstrict-aliasing=n
@opindex Wno-strict-aliasing=n @opindex Wno-strict-aliasing=n
This option is only active when @option{-fstrict-aliasing} is active. This option is only active when @option{-fstrict-aliasing} is active.
It warns about code which might break the strict aliasing rules that the It warns about code that might break the strict aliasing rules that the
compiler is using for optimization. compiler is using for optimization.
Higher levels correspond to higher accuracy (fewer false positives). Higher levels correspond to higher accuracy (fewer false positives).
Higher levels also correspond to more effort, similar to the way -O works. Higher levels also correspond to more effort, similar to the way -O works.
...@@ -3767,10 +3767,10 @@ warn about all cases where the code might overflow: it only warns ...@@ -3767,10 +3767,10 @@ warn about all cases where the code might overflow: it only warns
about cases where the compiler implements some optimization. Thus about cases where the compiler implements some optimization. Thus
this warning depends on the optimization level. this warning depends on the optimization level.
An optimization which assumes that signed overflow does not occur is An optimization that assumes that signed overflow does not occur is
perfectly safe if the values of the variables involved are such that perfectly safe if the values of the variables involved are such that
overflow never does, in fact, occur. Therefore this warning can overflow never does, in fact, occur. Therefore this warning can
easily give a false positive: a warning about code which is not easily give a false positive: a warning about code that is not
actually a problem. To help focus on important issues, several actually a problem. To help focus on important issues, several
warning levels are defined. No warnings are issued for the use of warning levels are defined. No warnings are issued for the use of
undefined signed overflow when estimating how many iterations a loop undefined signed overflow when estimating how many iterations a loop
...@@ -3779,7 +3779,7 @@ executed at all. ...@@ -3779,7 +3779,7 @@ executed at all.
@table @gcctabopt @table @gcctabopt
@item -Wstrict-overflow=1 @item -Wstrict-overflow=1
Warn about cases which are both questionable and easy to avoid. For Warn about cases that are both questionable and easy to avoid. For
example: @code{x + 1 > x}; with @option{-fstrict-overflow}, the example: @code{x + 1 > x}; with @option{-fstrict-overflow}, the
compiler will simplify this to @code{1}. This level of compiler will simplify this to @code{1}. This level of
@option{-Wstrict-overflow} is enabled by @option{-Wall}; higher levels @option{-Wstrict-overflow} is enabled by @option{-Wall}; higher levels
...@@ -3827,7 +3827,7 @@ attributes currently supported are listed below. ...@@ -3827,7 +3827,7 @@ attributes currently supported are listed below.
@opindex Wsuggest-attribute=noreturn @opindex Wsuggest-attribute=noreturn
@opindex Wno-suggest-attribute=noreturn @opindex Wno-suggest-attribute=noreturn
Warn about functions which might be candidates for attributes Warn about functions that might be candidates for attributes
@code{pure}, @code{const} or @code{noreturn}. The compiler only warns for @code{pure}, @code{const} or @code{noreturn}. The compiler only warns for
functions visible in other compilation units or (in the case of @code{pure} and functions visible in other compilation units or (in the case of @code{pure} and
@code{const}) if it cannot prove that the function returns normally. A function @code{const}) if it cannot prove that the function returns normally. A function
...@@ -3898,7 +3898,7 @@ probably mistaken. ...@@ -3898,7 +3898,7 @@ probably mistaken.
@opindex Wno-traditional @opindex Wno-traditional
Warn about certain constructs that behave differently in traditional and Warn about certain constructs that behave differently in traditional and
ISO C@. Also warn about ISO C constructs that have no traditional C ISO C@. Also warn about ISO C constructs that have no traditional C
equivalent, and/or problematic constructs which should be avoided. equivalent, and/or problematic constructs that should be avoided.
@itemize @bullet @itemize @bullet
@item @item
...@@ -4036,7 +4036,7 @@ whether or not to issue a warning. ...@@ -4036,7 +4036,7 @@ whether or not to issue a warning.
@item -Wno-free-nonheap-object @item -Wno-free-nonheap-object
@opindex Wno-free-nonheap-object @opindex Wno-free-nonheap-object
@opindex Wfree-nonheap-object @opindex Wfree-nonheap-object
Do not warn when attempting to free an object which was not allocated Do not warn when attempting to free an object that was not allocated
on the heap. on the heap.
@item -Wstack-usage=@var{len} @item -Wstack-usage=@var{len}
...@@ -4128,7 +4128,7 @@ Warn whenever a pointer is cast so as to remove a type qualifier from ...@@ -4128,7 +4128,7 @@ Warn whenever a pointer is cast so as to remove a type qualifier from
the target type. For example, warn if a @code{const char *} is cast the target type. For example, warn if a @code{const char *} is cast
to an ordinary @code{char *}. to an ordinary @code{char *}.
Also warn when making a cast which introduces a type qualifier in an Also warn when making a cast that introduces a type qualifier in an
unsafe way. For example, casting @code{char **} to @code{const char **} unsafe way. For example, casting @code{char **} to @code{const char **}
is unsafe, as in this example: is unsafe, as in this example:
...@@ -4222,7 +4222,7 @@ this warning is enabled by default. In C this warning is enabled by ...@@ -4222,7 +4222,7 @@ this warning is enabled by default. In C this warning is enabled by
Warn if a @code{goto} statement or a @code{switch} statement jumps Warn if a @code{goto} statement or a @code{switch} statement jumps
forward across the initialization of a variable, or jumps backward to a forward across the initialization of a variable, or jumps backward to a
label after the variable has been initialized. This only warns about label after the variable has been initialized. This only warns about
variables which are initialized when they are declared. This warning is variables that are initialized when they are declared. This warning is
only supported for C and Objective C; in C++ this sort of branch is an only supported for C and Objective C; in C++ this sort of branch is an
error in any case. error in any case.
...@@ -4297,7 +4297,7 @@ warnings for redefinition of @code{__TIMESTAMP__}, @code{__TIME__}, ...@@ -4297,7 +4297,7 @@ warnings for redefinition of @code{__TIMESTAMP__}, @code{__TIME__},
@opindex Wno-strict-prototypes @opindex Wno-strict-prototypes
Warn if a function is declared or defined without specifying the Warn if a function is declared or defined without specifying the
argument types. (An old-style function definition is permitted without argument types. (An old-style function definition is permitted without
a warning if preceded by a declaration which specifies the argument a warning if preceded by a declaration that specifies the argument
types.) types.)
@item -Wold-style-declaration @r{(C and Objective-C only)} @item -Wold-style-declaration @r{(C and Objective-C only)}
...@@ -4331,8 +4331,8 @@ This warning is also enabled by @option{-Wextra}. ...@@ -4331,8 +4331,8 @@ This warning is also enabled by @option{-Wextra}.
@opindex Wno-missing-prototypes @opindex Wno-missing-prototypes
Warn if a global function is defined without a previous prototype Warn if a global function is defined without a previous prototype
declaration. This warning is issued even if the definition itself declaration. This warning is issued even if the definition itself
provides a prototype. The aim is to detect global functions that fail provides a prototype. The aim is to detect global functions that
to be declared in header files. are not declared in header files.
@item -Wmissing-declarations @item -Wmissing-declarations
@opindex Wmissing-declarations @opindex Wmissing-declarations
...@@ -4374,7 +4374,7 @@ warnings without this one, use @samp{-Wextra -Wno-missing-field-initializers}. ...@@ -4374,7 +4374,7 @@ warnings without this one, use @samp{-Wextra -Wno-missing-field-initializers}.
@opindex Wno-missing-format-attribute @opindex Wno-missing-format-attribute
@opindex Wformat @opindex Wformat
@opindex Wno-format @opindex Wno-format
Warn about function pointers which might be candidates for @code{format} Warn about function pointers that might be candidates for @code{format}
attributes. Note these are only possible candidates, not absolute ones. attributes. Note these are only possible candidates, not absolute ones.
GCC will guess that function pointers with @code{format} attributes that GCC will guess that function pointers with @code{format} attributes that
are used in assignment, initialization, parameter passing or return are used in assignment, initialization, parameter passing or return
...@@ -4384,7 +4384,7 @@ initialization, the type of the parameter variable, or the return type ...@@ -4384,7 +4384,7 @@ initialization, the type of the parameter variable, or the return type
of the containing function respectively should also have a @code{format} of the containing function respectively should also have a @code{format}
attribute to avoid the warning. attribute to avoid the warning.
GCC will also warn about function definitions which might be GCC will also warn about function definitions that might be
candidates for @code{format} attributes. Again, these are only candidates for @code{format} attributes. Again, these are only
possible candidates. GCC will guess that @code{format} attributes possible candidates. GCC will guess that @code{format} attributes
might be appropriate for any function that calls a function like might be appropriate for any function that calls a function like
...@@ -4410,16 +4410,16 @@ outside the basic ASCII character set are used, you can have two ...@@ -4410,16 +4410,16 @@ outside the basic ASCII character set are used, you can have two
different character sequences that look the same. To avoid confusion, different character sequences that look the same. To avoid confusion,
the ISO 10646 standard sets out some @dfn{normalization rules} which the ISO 10646 standard sets out some @dfn{normalization rules} which
when applied ensure that two sequences that look the same are turned into when applied ensure that two sequences that look the same are turned into
the same sequence. GCC can warn you if you are using identifiers which the same sequence. GCC can warn you if you are using identifiers that
have not been normalized; this option controls that warning. have not been normalized; this option controls that warning.
There are four levels of warning that GCC supports. The default is There are four levels of warning supported by GCC. The default is
@option{-Wnormalized=nfc}, which warns about any identifier which is @option{-Wnormalized=nfc}, which warns about any identifier that is
not in the ISO 10646 ``C'' normalized form, @dfn{NFC}. NFC is the not in the ISO 10646 ``C'' normalized form, @dfn{NFC}. NFC is the
recommended form for most uses. recommended form for most uses.
Unfortunately, there are some characters which ISO C and ISO C++ allow Unfortunately, there are some characters allowed in identifiers by
in identifiers that when turned into NFC aren't allowable as ISO C and ISO C++ that, when turned into NFC, are not allowed in
identifiers. That is, there's no way to use these symbols in portable identifiers. That is, there's no way to use these symbols in portable
ISO C or C++ and have all your identifiers in NFC@. ISO C or C++ and have all your identifiers in NFC@.
@option{-Wnormalized=id} suppresses the warning for these characters. @option{-Wnormalized=id} suppresses the warning for these characters.
...@@ -4434,7 +4434,7 @@ otherwise you can easily create bugs that are literally impossible to see. ...@@ -4434,7 +4434,7 @@ otherwise you can easily create bugs that are literally impossible to see.
Some characters in ISO 10646 have distinct meanings but look identical Some characters in ISO 10646 have distinct meanings but look identical
in some fonts or display methodologies, especially once formatting has in some fonts or display methodologies, especially once formatting has
been applied. For instance @code{\u207F}, ``SUPERSCRIPT LATIN SMALL been applied. For instance @code{\u207F}, ``SUPERSCRIPT LATIN SMALL
LETTER N'', will display just like a regular @code{n} which has been LETTER N'', will display just like a regular @code{n} that has been
placed in a superscript. ISO 10646 defines the @dfn{NFKC} placed in a superscript. ISO 10646 defines the @dfn{NFKC}
normalization scheme to convert all these into a standard form as normalization scheme to convert all these into a standard form as
well, and GCC will warn if your code is not in NFKC if you use well, and GCC will warn if your code is not in NFKC if you use
...@@ -4608,11 +4608,11 @@ To inhibit the warning messages, use @option{-Wno-variadic-macros}. ...@@ -4608,11 +4608,11 @@ To inhibit the warning messages, use @option{-Wno-variadic-macros}.
@opindex Wno-vector-operation-performance @opindex Wno-vector-operation-performance
Warn if vector operation is not implemented via SIMD capabilities of the Warn if vector operation is not implemented via SIMD capabilities of the
architecture. Mainly useful for the performance tuning. architecture. Mainly useful for the performance tuning.
Vector operation can be implemented @code{piecewise} which means that the Vector operation can be implemented @code{piecewise}, which means that the
scalar operation is performed on every vector element; scalar operation is performed on every vector element;
@code{in parallel} which means that the vector operation is implemented @code{in parallel}, which means that the vector operation is implemented
using scalars of wider type, which normally is more performance efficient; using scalars of wider type, which normally is more performance efficient;
and @code{as a single scalar} which means that vector fits into a and @code{as a single scalar}, which means that vector fits into a
scalar type. scalar type.
@item -Wvla @item -Wvla
...@@ -4662,9 +4662,9 @@ Suppress warnings about constructs that cannot be instrumented by ...@@ -4662,9 +4662,9 @@ Suppress warnings about constructs that cannot be instrumented by
@item -Woverlength-strings @item -Woverlength-strings
@opindex Woverlength-strings @opindex Woverlength-strings
@opindex Wno-overlength-strings @opindex Wno-overlength-strings
Warn about string constants which are longer than the ``minimum Warn about string constants that are longer than the ``minimum
maximum'' length specified in the C standard. Modern compilers maximum'' length specified in the C standard. Modern compilers
generally allow string constants which are much longer than the generally allow string constants that are much longer than the
standard's minimum limit, but very portable programs should avoid standard's minimum limit, but very portable programs should avoid
using longer strings. using longer strings.
...@@ -4735,7 +4735,7 @@ possible. ...@@ -4735,7 +4735,7 @@ possible.
Produce debugging information in stabs format (if that is supported), Produce debugging information in stabs format (if that is supported),
without GDB extensions. This is the format used by DBX on most BSD without GDB extensions. This is the format used by DBX on most BSD
systems. On MIPS, Alpha and System V Release 4 systems this option systems. On MIPS, Alpha and System V Release 4 systems this option
produces stabs debugging output which is not understood by DBX or SDB@. produces stabs debugging output that is not understood by DBX or SDB@.
On System V Release 4 systems this option requires the GNU assembler. On System V Release 4 systems this option requires the GNU assembler.
@item -feliminate-unused-debug-symbols @item -feliminate-unused-debug-symbols
...@@ -4800,8 +4800,8 @@ for maximum benefit. ...@@ -4800,8 +4800,8 @@ for maximum benefit.
@item -grecord-gcc-switches @item -grecord-gcc-switches
@opindex grecord-gcc-switches @opindex grecord-gcc-switches
This switch causes the command-line options, that were used to invoke the This switch causes the command-line options used to invoke the
compiler and may affect code generation, to be appended to the compiler that may affect code generation to be appended to the
DW_AT_producer attribute in DWARF debugging information. The options DW_AT_producer attribute in DWARF debugging information. The options
are concatenated with spaces separating them from each other and from are concatenated with spaces separating them from each other and from
the compiler version. See also @option{-frecord-gcc-switches} for another the compiler version. See also @option{-frecord-gcc-switches} for another
...@@ -4997,7 +4997,7 @@ This option works only with DWARF 2. ...@@ -4997,7 +4997,7 @@ This option works only with DWARF 2.
@opindex fmerge-debug-strings @opindex fmerge-debug-strings
@opindex fno-merge-debug-strings @opindex fno-merge-debug-strings
Direct the linker to not merge together strings in the debugging Direct the linker to not merge together strings in the debugging
information which are identical in different object files. Merging is information that are identical in different object files. Merging is
not supported by all assemblers or linkers. Merging decreases the size not supported by all assemblers or linkers. Merging decreases the size
of the debug information in the output file at the cost of increasing of the debug information in the output file at the cost of increasing
link processing time. Merging is enabled by default. link processing time. Merging is enabled by default.
...@@ -5651,8 +5651,8 @@ language tree to a file. The file name is generated by appending a ...@@ -5651,8 +5651,8 @@ language tree to a file. The file name is generated by appending a
switch specific suffix to the source file name, and the file is switch specific suffix to the source file name, and the file is
created in the same directory as the output file. If the created in the same directory as the output file. If the
@samp{-@var{options}} form is used, @var{options} is a list of @samp{-@var{options}} form is used, @var{options} is a list of
@samp{-} separated options that control the details of the dump. Not @samp{-} separated options which control the details of the dump. Not
all options are applicable to all dumps, those which are not all options are applicable to all dumps; those that are not
meaningful will be ignored. The following options are available meaningful will be ignored. The following options are available
@table @samp @table @samp
...@@ -6288,7 +6288,7 @@ the member function name. ...@@ -6288,7 +6288,7 @@ the member function name.
@item -fno-defer-pop @item -fno-defer-pop
@opindex fno-defer-pop @opindex fno-defer-pop
Always pop the arguments to each function call as soon as that function Always pop the arguments to each function call as soon as that function
returns. For machines which must pop arguments after a function call, returns. For machines that must pop arguments after a function call,
the compiler normally lets arguments accumulate on the stack for several the compiler normally lets arguments accumulate on the stack for several
function calls and pops them all at once. function calls and pops them all at once.
...@@ -6595,7 +6595,7 @@ Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. ...@@ -6595,7 +6595,7 @@ Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
@item -fcse-skip-blocks @item -fcse-skip-blocks
@opindex fcse-skip-blocks @opindex fcse-skip-blocks
This is similar to @option{-fcse-follow-jumps}, but causes CSE to This is similar to @option{-fcse-follow-jumps}, but causes CSE to
follow jumps which conditionally skip over blocks. When CSE follow jumps that conditionally skip over blocks. When CSE
encounters a simple @code{if} statement with no else clause, encounters a simple @code{if} statement with no else clause,
@option{-fcse-skip-blocks} causes CSE to follow the jump around the @option{-fcse-skip-blocks} causes CSE to follow the jump around the
body of the @code{if}. body of the @code{if}.
...@@ -6624,7 +6624,7 @@ Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. ...@@ -6624,7 +6624,7 @@ Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
@item -fgcse-lm @item -fgcse-lm
@opindex fgcse-lm @opindex fgcse-lm
When @option{-fgcse-lm} is enabled, global common subexpression elimination will When @option{-fgcse-lm} is enabled, global common subexpression elimination will
attempt to move loads which are only killed by stores into themselves. This attempt to move loads that are only killed by stores into themselves. This
allows a loop containing a load/store sequence to be changed to a load outside allows a loop containing a load/store sequence to be changed to a load outside
the loop, and a copy/store within the loop. the loop, and a copy/store within the loop.
...@@ -6715,7 +6715,7 @@ it cannot be null. ...@@ -6715,7 +6715,7 @@ it cannot be null.
Note however that in some environments this assumption is not true. Note however that in some environments this assumption is not true.
Use @option{-fno-delete-null-pointer-checks} to disable this optimization Use @option{-fno-delete-null-pointer-checks} to disable this optimization
for programs which depend on that behavior. for programs that depend on that behavior.
Some targets, especially embedded ones, disable this option at all levels. Some targets, especially embedded ones, disable this option at all levels.
Otherwise it is enabled at all levels: @option{-O0}, @option{-O1}, Otherwise it is enabled at all levels: @option{-O0}, @option{-O1},
...@@ -6801,7 +6801,7 @@ bigger. ...@@ -6801,7 +6801,7 @@ bigger.
@item -fno-ira-share-spill-slots @item -fno-ira-share-spill-slots
@opindex fno-ira-share-spill-slots @opindex fno-ira-share-spill-slots
Switch off sharing stack slots allocated for pseudo-registers. Each Switch off sharing stack slots allocated for pseudo-registers. Each
pseudo-register which did not get a hard register will get a separate pseudo-register that did not get a hard register will get a separate
stack slot and as a result function stack frame will be bigger. stack slot and as a result function stack frame will be bigger.
@item -fira-verbose=@var{n} @item -fira-verbose=@var{n}
...@@ -7096,7 +7096,7 @@ Perform matrix flattening and transposing. ...@@ -7096,7 +7096,7 @@ Perform matrix flattening and transposing.
Matrix flattening tries to replace an @math{m}-dimensional matrix Matrix flattening tries to replace an @math{m}-dimensional matrix
with its equivalent @math{n}-dimensional matrix, where @math{n < m}. with its equivalent @math{n}-dimensional matrix, where @math{n < m}.
This reduces the level of indirection needed for accessing the elements This reduces the level of indirection needed for accessing the elements
of the matrix. The second optimization is matrix transposing that of the matrix. The second optimization is matrix transposing, which
attempts to change the order of the matrix's dimensions in order to attempts to change the order of the matrix's dimensions in order to
improve cache locality. improve cache locality.
Both optimizations need the @option{-fwhole-program} flag. Both optimizations need the @option{-fwhole-program} flag.
...@@ -7156,7 +7156,7 @@ enabled by default at @option{-O} and higher. ...@@ -7156,7 +7156,7 @@ enabled by default at @option{-O} and higher.
@item -ftree-dse @item -ftree-dse
@opindex ftree-dse @opindex ftree-dse
Perform dead store elimination (DSE) on trees. A dead store is a store into Perform dead store elimination (DSE) on trees. A dead store is a store into
a memory location which will later be overwritten by another store without a memory location that is later overwritten by another store without
any intervening loads. In this case the earlier store can be deleted. This any intervening loads. In this case the earlier store can be deleted. This
flag is enabled by default at @option{-O} and higher. flag is enabled by default at @option{-O} and higher.
...@@ -7262,7 +7262,7 @@ ENDDO ...@@ -7262,7 +7262,7 @@ ENDDO
@end smallexample @end smallexample
which can be beneficial when @code{M} is larger than the caches, which can be beneficial when @code{M} is larger than the caches,
because the innermost loop will iterate over a smaller amount of data because the innermost loop will iterate over a smaller amount of data
that can be kept in the caches. This optimization applies to all the which can be kept in the caches. This optimization applies to all the
languages supported by GCC and is not limited to Fortran. To use this languages supported by GCC and is not limited to Fortran. To use this
code transformation, GCC has to be configured with @option{--with-ppl} code transformation, GCC has to be configured with @option{--with-ppl}
and @option{--with-cloog} to enable the Graphite loop transformation and @option{--with-cloog} to enable the Graphite loop transformation
...@@ -7373,7 +7373,7 @@ store motion. ...@@ -7373,7 +7373,7 @@ store motion.
@item -ftree-loop-ivcanon @item -ftree-loop-ivcanon
@opindex ftree-loop-ivcanon @opindex ftree-loop-ivcanon
Create a canonical counter for number of iterations in the loop for that Create a canonical counter for number of iterations in loops for which
determining number of iterations requires complicated analysis. Later determining number of iterations requires complicated analysis. Later
optimizations then may determine the number easily. Useful especially optimizations then may determine the number easily. Useful especially
in connection with unrolling. in connection with unrolling.
...@@ -7748,11 +7748,11 @@ Do not reorder top-level functions, variables, and @code{asm} ...@@ -7748,11 +7748,11 @@ Do not reorder top-level functions, variables, and @code{asm}
statements. Output them in the same order that they appear in the statements. Output them in the same order that they appear in the
input file. When this option is used, unreferenced static variables input file. When this option is used, unreferenced static variables
will not be removed. This option is intended to support existing code will not be removed. This option is intended to support existing code
which relies on a particular ordering. For new code, it is better to that relies on a particular ordering. For new code, it is better to
use attributes. use attributes.
Enabled at level @option{-O0}. When disabled explicitly, it also imply Enabled at level @option{-O0}. When disabled explicitly, it also implies
@option{-fno-section-anchors} that is otherwise enabled at @option{-O0} on some @option{-fno-section-anchors}, which is otherwise enabled at @option{-O0} on some
targets. targets.
@item -fweb @item -fweb
...@@ -7862,7 +7862,7 @@ GIMPLE bytecodes and final object code. GCC automatically selects ...@@ -7862,7 +7862,7 @@ GIMPLE bytecodes and final object code. GCC automatically selects
which files to optimize in LTO mode and which files to link without which files to optimize in LTO mode and which files to link without
further processing. further processing.
There are some code generation flags that GCC preserves when There are some code generation flags preserved by GCC when
generating bytecodes, as they need to be used during the final link generating bytecodes, as they need to be used during the final link
stage. Currently, the following options are saved into the GIMPLE stage. Currently, the following options are saved into the GIMPLE
bytecode files: @option{-fPIC}, @option{-fcommon} and all the bytecode files: @option{-fPIC}, @option{-fcommon} and all the
...@@ -8139,7 +8139,7 @@ This option causes the preprocessor macro @code{__FAST_MATH__} to be defined. ...@@ -8139,7 +8139,7 @@ This option causes the preprocessor macro @code{__FAST_MATH__} to be defined.
This option is not turned on by any @option{-O} option besides This option is not turned on by any @option{-O} option besides
@option{-Ofast} since it can result in incorrect output for programs @option{-Ofast} since it can result in incorrect output for programs
which depend on an exact implementation of IEEE or ISO rules/specifications that depend on an exact implementation of IEEE or ISO rules/specifications
for math functions. It may, however, yield faster code for programs for math functions. It may, however, yield faster code for programs
that do not require the guarantees of these specifications. that do not require the guarantees of these specifications.
...@@ -8151,7 +8151,7 @@ IEEE exceptions for math error handling may want to use this flag ...@@ -8151,7 +8151,7 @@ IEEE exceptions for math error handling may want to use this flag
for speed while maintaining IEEE arithmetic compatibility. for speed while maintaining IEEE arithmetic compatibility.
This option is not turned on by any @option{-O} option since This option is not turned on by any @option{-O} option since
it can result in incorrect output for programs which depend on it can result in incorrect output for programs that depend on
an exact implementation of IEEE or ISO rules/specifications for an exact implementation of IEEE or ISO rules/specifications for
math functions. It may, however, yield faster code for programs math functions. It may, however, yield faster code for programs
that do not require the guarantees of these specifications. that do not require the guarantees of these specifications.
...@@ -8172,7 +8172,7 @@ or startup files that change the default FPU control word or other ...@@ -8172,7 +8172,7 @@ or startup files that change the default FPU control word or other
similar optimizations. similar optimizations.
This option is not turned on by any @option{-O} option since This option is not turned on by any @option{-O} option since
it can result in incorrect output for programs which depend on it can result in incorrect output for programs that depend on
an exact implementation of IEEE or ISO rules/specifications for an exact implementation of IEEE or ISO rules/specifications for
math functions. It may, however, yield faster code for programs math functions. It may, however, yield faster code for programs
that do not require the guarantees of these specifications. that do not require the guarantees of these specifications.
...@@ -8188,7 +8188,7 @@ Allow re-association of operands in series of floating-point operations. ...@@ -8188,7 +8188,7 @@ Allow re-association of operands in series of floating-point operations.
This violates the ISO C and C++ language standard by possibly changing This violates the ISO C and C++ language standard by possibly changing
computation result. NOTE: re-ordering may change the sign of zero as computation result. NOTE: re-ordering may change the sign of zero as
well as ignore NaNs and inhibit or create underflow or overflow (and well as ignore NaNs and inhibit or create underflow or overflow (and
thus cannot be used on a code which relies on rounding behavior like thus cannot be used on code that relies on rounding behavior like
@code{(x + 2**52) - 2**52}. May also reorder floating-point comparisons @code{(x + 2**52) - 2**52}. May also reorder floating-point comparisons
and thus may not be used when ordered comparisons are required. and thus may not be used when ordered comparisons are required.
This option requires that both @option{-fno-signed-zeros} and This option requires that both @option{-fno-signed-zeros} and
...@@ -8204,7 +8204,7 @@ The default is @option{-fno-associative-math}. ...@@ -8204,7 +8204,7 @@ The default is @option{-fno-associative-math}.
Allow the reciprocal of a value to be used instead of dividing by Allow the reciprocal of a value to be used instead of dividing by
the value if this enables optimizations. For example @code{x / y} the value if this enables optimizations. For example @code{x / y}
can be replaced with @code{x * (1/y)} which is useful if @code{(1/y)} can be replaced with @code{x * (1/y)}, which is useful if @code{(1/y)}
is subject to common subexpression elimination. Note that this loses is subject to common subexpression elimination. Note that this loses
precision and increases the number of flops operating on the value. precision and increases the number of flops operating on the value.
...@@ -8216,7 +8216,7 @@ Allow optimizations for floating-point arithmetic that assume ...@@ -8216,7 +8216,7 @@ Allow optimizations for floating-point arithmetic that assume
that arguments and results are not NaNs or +-Infs. that arguments and results are not NaNs or +-Infs.
This option is not turned on by any @option{-O} option since This option is not turned on by any @option{-O} option since
it can result in incorrect output for programs which depend on it can result in incorrect output for programs that depend on
an exact implementation of IEEE or ISO rules/specifications for an exact implementation of IEEE or ISO rules/specifications for
math functions. It may, however, yield faster code for programs math functions. It may, however, yield faster code for programs
that do not require the guarantees of these specifications. that do not require the guarantees of these specifications.
...@@ -8242,7 +8242,7 @@ that @option{-fno-signaling-nans} be in effect. Setting this option may ...@@ -8242,7 +8242,7 @@ that @option{-fno-signaling-nans} be in effect. Setting this option may
allow faster code if one relies on ``non-stop'' IEEE arithmetic, for example. allow faster code if one relies on ``non-stop'' IEEE arithmetic, for example.
This option should never be turned on by any @option{-O} option since This option should never be turned on by any @option{-O} option since
it can result in incorrect output for programs which depend on it can result in incorrect output for programs that depend on
an exact implementation of IEEE or ISO rules/specifications for an exact implementation of IEEE or ISO rules/specifications for
math functions. math functions.
...@@ -8396,7 +8396,7 @@ the loop is entered. This usually makes programs run more slowly. ...@@ -8396,7 +8396,7 @@ the loop is entered. This usually makes programs run more slowly.
@item -fpeel-loops @item -fpeel-loops
@opindex fpeel-loops @opindex fpeel-loops
Peels the loops for that there is enough information that they do not Peels loops for which there is enough information that they do not
roll much (from profile feedback). It also turns on complete loop peeling roll much (from profile feedback). It also turns on complete loop peeling
(i.e.@: complete removal of loops with small constant number of iterations). (i.e.@: complete removal of loops with small constant number of iterations).
...@@ -8498,7 +8498,7 @@ Not all targets support this option. ...@@ -8498,7 +8498,7 @@ Not all targets support this option.
@opindex param @opindex param
In some places, GCC uses various constants to control the amount of In some places, GCC uses various constants to control the amount of
optimization that is done. For example, GCC will not inline functions optimization that is done. For example, GCC will not inline functions
that contain more that a certain number of instructions. You can that contain more than a certain number of instructions. You can
control some of these constants on the command line using the control some of these constants on the command line using the
@option{--param} option. @option{--param} option.
...@@ -8522,7 +8522,7 @@ more aggressive optimization, making the compilation time increase with ...@@ -8522,7 +8522,7 @@ more aggressive optimization, making the compilation time increase with
probably small improvement in executable size. probably small improvement in executable size.
@item min-crossjump-insns @item min-crossjump-insns
The minimum number of instructions which must be matched at the end The minimum number of instructions that must be matched at the end
of two blocks before crossjumping will be performed on them. This of two blocks before crossjumping will be performed on them. This
value is ignored in the case where all instructions in the block being value is ignored in the case where all instructions in the block being
crossjumped from are matched. The default value is 5. crossjumped from are matched. The default value is 5.
...@@ -8695,7 +8695,7 @@ to allow vectorization. The default value is 0. ...@@ -8695,7 +8695,7 @@ to allow vectorization. The default value is 0.
Scaling factor in calculation of maximum distance an expression Scaling factor in calculation of maximum distance an expression
can be moved by GCSE optimizations. This is currently supported only in the can be moved by GCSE optimizations. This is currently supported only in the
code hoisting pass. The bigger the ratio, the more aggressive code hoisting code hoisting pass. The bigger the ratio, the more aggressive code hoisting
will be with simple expressions, i.e., the expressions which have cost will be with simple expressions, i.e., the expressions that have cost
less than @option{gcse-unrestricted-cost}. Specifying 0 will disable less than @option{gcse-unrestricted-cost}. Specifying 0 will disable
hoisting of simple expressions. The default value is 10. hoisting of simple expressions. The default value is 10.
...@@ -8917,7 +8917,7 @@ by @option{ggc-min-expand}% beyond @option{ggc-min-heapsize}. Again, ...@@ -8917,7 +8917,7 @@ by @option{ggc-min-expand}% beyond @option{ggc-min-heapsize}. Again,
tuning this may improve compilation speed, and has no effect on code tuning this may improve compilation speed, and has no effect on code
generation. generation.
The default is the smaller of RAM/8, RLIMIT_RSS, or a limit which The default is the smaller of RAM/8, RLIMIT_RSS, or a limit that
tries to ensure that RLIMIT_DATA or RLIMIT_AS are not exceeded, but tries to ensure that RLIMIT_DATA or RLIMIT_AS are not exceeded, but
with a lower bound of 4096 (four megabytes) and an upper bound of with a lower bound of 4096 (four megabytes) and an upper bound of
131072 (128 megabytes). If GCC is not able to calculate RAM on a 131072 (128 megabytes). If GCC is not able to calculate RAM on a
...@@ -9289,7 +9289,7 @@ options instead. ...@@ -9289,7 +9289,7 @@ options instead.
@item -Xpreprocessor @var{option} @item -Xpreprocessor @var{option}
@opindex Xpreprocessor @opindex Xpreprocessor
Pass @var{option} as an option to the preprocessor. You can use this to Pass @var{option} as an option to the preprocessor. You can use this to
supply system-specific preprocessor options which GCC does not know how to supply system-specific preprocessor options that GCC does not know how to
recognize. recognize.
If you want to pass an option that takes an argument, you must use If you want to pass an option that takes an argument, you must use
...@@ -9313,7 +9313,7 @@ contains commas, it is split into multiple options at the commas. ...@@ -9313,7 +9313,7 @@ contains commas, it is split into multiple options at the commas.
@item -Xassembler @var{option} @item -Xassembler @var{option}
@opindex Xassembler @opindex Xassembler
Pass @var{option} as an option to the assembler. You can use this to Pass @var{option} as an option to the assembler. You can use this to
supply system-specific assembler options which GCC does not know how to supply system-specific assembler options that GCC does not know how to
recognize. recognize.
If you want to pass an option that takes an argument, you must use If you want to pass an option that takes an argument, you must use
...@@ -9423,7 +9423,7 @@ mechanism when this option is specified. ...@@ -9423,7 +9423,7 @@ mechanism when this option is specified.
@cindex unresolved references and @option{-nodefaultlibs} @cindex unresolved references and @option{-nodefaultlibs}
One of the standard libraries bypassed by @option{-nostdlib} and One of the standard libraries bypassed by @option{-nostdlib} and
@option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines
that GCC uses to overcome shortcomings of particular machines, or special which GCC uses to overcome shortcomings of particular machines, or special
needs for some languages. needs for some languages.
(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler (@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
Collection (GCC) Internals}, Collection (GCC) Internals},
...@@ -9438,7 +9438,7 @@ GNU Compiler Collection (GCC) Internals}.) ...@@ -9438,7 +9438,7 @@ GNU Compiler Collection (GCC) Internals}.)
@item -pie @item -pie
@opindex pie @opindex pie
Produce a position independent executable on targets which support it. Produce a position independent executable on targets that support it.
For predictable results, you must also specify the same set of options For predictable results, you must also specify the same set of options
that were used to generate code (@option{-fpie}, @option{-fPIE}, that were used to generate code (@option{-fpie}, @option{-fPIE},
or model suboptions) when you specify this option. or model suboptions) when you specify this option.
...@@ -9540,8 +9540,7 @@ when linking to avoid references to undefined symbols. ...@@ -9540,8 +9540,7 @@ when linking to avoid references to undefined symbols.
@item -Xlinker @var{option} @item -Xlinker @var{option}
@opindex Xlinker @opindex Xlinker
Pass @var{option} as an option to the linker. You can use this to Pass @var{option} as an option to the linker. You can use this to
supply system-specific linker options which GCC does not know how to supply system-specific linker options that GCC does not recognize.
recognize.
If you want to pass an option that takes a separate argument, you must use If you want to pass an option that takes a separate argument, you must use
@option{-Xlinker} twice, once for the option and once for the argument. @option{-Xlinker} twice, once for the option and once for the argument.
...@@ -9604,7 +9603,7 @@ If you really need to change the search order for system directories, ...@@ -9604,7 +9603,7 @@ If you really need to change the search order for system directories,
use the @option{-nostdinc} and/or @option{-isystem} options. use the @option{-nostdinc} and/or @option{-isystem} options.
@item -iplugindir=@var{dir} @item -iplugindir=@var{dir}
Set the directory to search for plugins which are passed Set the directory to search for plugins that are passed
by @option{-fplugin=@var{name}} instead of by @option{-fplugin=@var{name}} instead of
@option{-fplugin=@var{path}/@var{name}.so}. This option is not meant @option{-fplugin=@var{path}/@var{name}.so}. This option is not meant
to be used by the user, but only passed by the driver. to be used by the user, but only passed by the driver.
...@@ -9633,7 +9632,7 @@ without @samp{@var{machine}/@var{version}/} (@pxref{Target Options}). ...@@ -9633,7 +9632,7 @@ without @samp{@var{machine}/@var{version}/} (@pxref{Target Options}).
For each subprogram to be run, the compiler driver first tries the For each subprogram to be run, the compiler driver first tries the
@option{-B} prefix, if any. If that name is not found, or if @option{-B} @option{-B} prefix, if any. If that name is not found, or if @option{-B}
was not specified, the driver tries two standard prefixes, which are was not specified, the driver tries two standard prefixes,
@file{/usr/lib/gcc/} and @file{/usr/local/lib/gcc/}. If neither of @file{/usr/lib/gcc/} and @file{/usr/local/lib/gcc/}. If neither of
those results in a file name that is found, the unmodified program those results in a file name that is found, the unmodified program
name is searched for using the directories specified in your name is searched for using the directories specified in your
...@@ -9667,7 +9666,7 @@ with boot-strapping the compiler. ...@@ -9667,7 +9666,7 @@ with boot-strapping the compiler.
@item -specs=@var{file} @item -specs=@var{file}
@opindex specs @opindex specs
Process @var{file} after the compiler reads in the standard @file{specs} Process @var{file} after the compiler reads in the standard @file{specs}
file, in order to override the defaults that the @file{gcc} driver file, in order to override the defaults which the @file{gcc} driver
program uses when determining what switches to pass to @file{cc1}, program uses when determining what switches to pass to @file{cc1},
@file{cc1plus}, @file{as}, @file{ld}, etc. More than one @file{cc1plus}, @file{as}, @file{ld}, etc. More than one
@option{-specs=@var{file}} can be specified on the command line, and they @option{-specs=@var{file}} can be specified on the command line, and they
...@@ -9706,7 +9705,7 @@ In addition, the @option{-I-} option inhibits the use of the current ...@@ -9706,7 +9705,7 @@ In addition, the @option{-I-} option inhibits the use of the current
directory (where the current input file came from) as the first search directory (where the current input file came from) as the first search
directory for @samp{#include "@var{file}"}. There is no way to directory for @samp{#include "@var{file}"}. There is no way to
override this effect of @option{-I-}. With @option{-I.} you can specify override this effect of @option{-I-}. With @option{-I.} you can specify
searching the directory which was current when the compiler was searching the directory that was current when the compiler was
invoked. That is not exactly the same as what the preprocessor does invoked. That is not exactly the same as what the preprocessor does
by default, but it is often satisfactory. by default, but it is often satisfactory.
...@@ -9735,7 +9734,7 @@ a spec file. ...@@ -9735,7 +9734,7 @@ a spec file.
@dfn{Spec files} are plaintext files that are used to construct spec @dfn{Spec files} are plaintext files that are used to construct spec
strings. They consist of a sequence of directives separated by blank strings. They consist of a sequence of directives separated by blank
lines. The type of directive is determined by the first non-whitespace lines. The type of directive is determined by the first non-whitespace
character on the line and it can be one of the following: character on the line, which can be one of the following:
@table @code @table @code
@item %@var{command} @item %@var{command}
...@@ -10577,7 +10576,7 @@ Generate reentrant, position independent code. The default is ...@@ -10577,7 +10576,7 @@ Generate reentrant, position independent code. The default is
@item -mthumb-interwork @item -mthumb-interwork
@opindex mthumb-interwork @opindex mthumb-interwork
Generate code which supports calling between the ARM and Thumb Generate code that supports calling between the ARM and Thumb
instruction sets. Without this option, on pre-v5 architectures, the instruction sets. Without this option, on pre-v5 architectures, the
two instruction sets cannot be reliably used inside one program. The two instruction sets cannot be reliably used inside one program. The
default is @option{-mno-thumb-interwork}, since slightly larger code default is @option{-mno-thumb-interwork}, since slightly larger code
...@@ -10777,7 +10776,7 @@ version of subroutine call instruction. ...@@ -10777,7 +10776,7 @@ version of subroutine call instruction.
Even if this switch is enabled, not all function calls will be turned Even if this switch is enabled, not all function calls will be turned
into long calls. The heuristic is that static functions, functions into long calls. The heuristic is that static functions, functions
which have the @samp{short-call} attribute, functions that are inside that have the @samp{short-call} attribute, functions that are inside
the scope of a @samp{#pragma no_long_calls} directive and functions whose the scope of a @samp{#pragma no_long_calls} directive and functions whose
definitions have already been compiled within the current compilation definitions have already been compiled within the current compilation
unit, will not be turned into long calls. The exception to this rule is unit, will not be turned into long calls. The exception to this rule is
...@@ -11005,7 +11004,7 @@ executables because arguments need not to be removed from the ...@@ -11005,7 +11004,7 @@ executables because arguments need not to be removed from the
stack after such a function call. stack after such a function call.
This option can lead to reduced code size for functions that perform This option can lead to reduced code size for functions that perform
several calls to functions which get their arguments on the stack like several calls to functions that get their arguments on the stack like
calls to printf-like functions. calls to printf-like functions.
@item -mbranch-cost=@var{cost} @item -mbranch-cost=@var{cost}
...@@ -11202,7 +11201,7 @@ For even more AVR-specific built-in macros see ...@@ -11202,7 +11201,7 @@ For even more AVR-specific built-in macros see
@table @code @table @code
@item __AVR_@var{Device}__ @item __AVR_@var{Device}__
Setting @code{-mmcu=@var{device}} defines this built-in macro that reflects Setting @code{-mmcu=@var{device}} defines this built-in macro which reflects
the device's name. For example, @code{-mmcu=atmega8} will define the the device's name. For example, @code{-mmcu=atmega8} will define the
built-in macro @code{__AVR_ATmega8__}, @code{-mmcu=attiny261a} defines built-in macro @code{__AVR_ATmega8__}, @code{-mmcu=attiny261a} defines
@code{__AVR_ATtiny261A__}, etc. @code{__AVR_ATtiny261A__}, etc.
...@@ -11322,7 +11321,7 @@ Certain other options, such as @option{-mid-shared-library} and ...@@ -11322,7 +11321,7 @@ Certain other options, such as @option{-mid-shared-library} and
Don't keep the frame pointer in a register for leaf functions. This Don't keep the frame pointer in a register for leaf functions. This
avoids the instructions to save, set up and restore frame pointers and avoids the instructions to save, set up and restore frame pointers and
makes an extra register available in leaf functions. The option makes an extra register available in leaf functions. The option
@option{-fomit-frame-pointer} removes the frame pointer for all functions @option{-fomit-frame-pointer} removes the frame pointer for all functions,
which might make debugging harder. which might make debugging harder.
@item -mspecld-anomaly @item -mspecld-anomaly
...@@ -11613,7 +11612,7 @@ arrange for stack-frame, writable data and constants to all be 32-bit, ...@@ -11613,7 +11612,7 @@ arrange for stack-frame, writable data and constants to all be 32-bit,
@opindex mno-prologue-epilogue @opindex mno-prologue-epilogue
@opindex mprologue-epilogue @opindex mprologue-epilogue
With @option{-mno-prologue-epilogue}, the normal function prologue and With @option{-mno-prologue-epilogue}, the normal function prologue and
epilogue that sets up the stack-frame are omitted and no return epilogue which set up the stack frame are omitted and no return
instructions or return sequences are generated in the code. Use this instructions or return sequences are generated in the code. Use this
option only together with visual inspection of the compiled code: no option only together with visual inspection of the compiled code: no
warnings or errors are generated when call-saved registers must be saved, warnings or errors are generated when call-saved registers must be saved,
...@@ -11773,7 +11772,7 @@ is @var{version}. Typical values of @var{version} include @code{10.1}, ...@@ -11773,7 +11772,7 @@ is @var{version}. Typical values of @var{version} include @code{10.1},
If the compiler was built to use the system's headers by default, If the compiler was built to use the system's headers by default,
then the default for this option is the system version on which the then the default for this option is the system version on which the
compiler is running, otherwise the default is to make choices which compiler is running, otherwise the default is to make choices that
are compatible with as many systems and code bases as possible. are compatible with as many systems and code bases as possible.
@item -mkernel @item -mkernel
...@@ -12426,7 +12425,7 @@ Do not use multiply and add/subtract instructions. ...@@ -12426,7 +12425,7 @@ Do not use multiply and add/subtract instructions.
@item -mfdpic @item -mfdpic
@opindex mfdpic @opindex mfdpic
Select the FDPIC ABI, that uses function descriptors to represent Select the FDPIC ABI, which uses function descriptors to represent
pointers to functions. Without any PIC/PIE-related options, it pointers to functions. Without any PIC/PIE-related options, it
implies @option{-fPIE}. With @option{-fpic} or @option{-fpie}, it implies @option{-fPIE}. With @option{-fpic} or @option{-fpie}, it
assumes GOT entries and small data are within a 12-bit range from the assumes GOT entries and small data are within a 12-bit range from the
...@@ -12795,7 +12794,7 @@ Such code is suitable for level 0 PA systems and kernels. ...@@ -12795,7 +12794,7 @@ Such code is suitable for level 0 PA systems and kernels.
@item -mfast-indirect-calls @item -mfast-indirect-calls
@opindex mfast-indirect-calls @opindex mfast-indirect-calls
Generate code that assumes calls never cross space boundaries. This Generate code that assumes calls never cross space boundaries. This
allows GCC to emit code which performs faster indirect calls. allows GCC to emit code that performs faster indirect calls.
This option will not work in the presence of shared libraries or nested This option will not work in the presence of shared libraries or nested
functions. functions.
...@@ -13458,7 +13457,7 @@ generates new AVX instructions or AVX equivalence for all SSEx instructions ...@@ -13458,7 +13457,7 @@ generates new AVX instructions or AVX equivalence for all SSEx instructions
when needed. when needed.
These options will enable GCC to use these extended instructions in These options will enable GCC to use these extended instructions in
generated code, even without @option{-mfpmath=sse}. Applications which generated code, even without @option{-mfpmath=sse}. Applications that
perform run-time CPU detection must compile separate files for each perform run-time CPU detection must compile separate files for each
supported architecture, using the appropriate flags. In particular, supported architecture, using the appropriate flags. In particular,
the file containing the CPU detection code should be compiled without the file containing the CPU detection code should be compiled without
...@@ -13472,7 +13471,7 @@ the DF flag to select between autoincrement or autodecrement mode. While the ...@@ -13472,7 +13471,7 @@ the DF flag to select between autoincrement or autodecrement mode. While the
ABI specifies the DF flag to be cleared on function entry, some operating ABI specifies the DF flag to be cleared on function entry, some operating
systems violate this specification by not clearing the DF flag in their systems violate this specification by not clearing the DF flag in their
exception dispatchers. The exception handler can be invoked with the DF flag exception dispatchers. The exception handler can be invoked with the DF flag
set which leads to wrong direction mode, when string instructions are used. set, which leads to wrong direction mode when string instructions are used.
This option can be enabled by default on 32-bit x86 targets by configuring This option can be enabled by default on 32-bit x86 targets by configuring
GCC with the @option{--enable-cld} configure option. Generation of @code{cld} GCC with the @option{--enable-cld} configure option. Generation of @code{cld}
instructions can be suppressed with the @option{-mno-cld} compiler option instructions can be suppressed with the @option{-mno-cld} compiler option
...@@ -13538,7 +13537,7 @@ doesn't need @option{-mrecip}. ...@@ -13538,7 +13537,7 @@ doesn't need @option{-mrecip}.
@item -mrecip=@var{opt} @item -mrecip=@var{opt}
@opindex mrecip=opt @opindex mrecip=opt
This option allows to control which reciprocal estimate instructions This option allows to control which reciprocal estimate instructions
may be used. @var{opt} is a comma separated list of options, that may may be used. @var{opt} is a comma separated list of options, which may
be preceded by a @code{!} to invert the option: be preceded by a @code{!} to invert the option:
@code{all}: enable all estimate instructions, @code{all}: enable all estimate instructions,
@code{default}: enable the default instructions, equivalent to @option{-mrecip}, @code{default}: enable the default instructions, equivalent to @option{-mrecip},
...@@ -13649,7 +13648,7 @@ expanding inline loop, @code{libcall} for always expanding library call. ...@@ -13649,7 +13648,7 @@ expanding inline loop, @code{libcall} for always expanding library call.
Don't keep the frame pointer in a register for leaf functions. This Don't keep the frame pointer in a register for leaf functions. This
avoids the instructions to save, set up and restore frame pointers and avoids the instructions to save, set up and restore frame pointers and
makes an extra register available in leaf functions. The option makes an extra register available in leaf functions. The option
@option{-fomit-frame-pointer} removes the frame pointer for all functions @option{-fomit-frame-pointer} removes the frame pointer for all functions,
which might make debugging harder. which might make debugging harder.
@item -mtls-direct-seg-refs @item -mtls-direct-seg-refs
...@@ -14506,7 +14505,7 @@ deprecated in favor of that option. ...@@ -14506,7 +14505,7 @@ deprecated in favor of that option.
@item -m68020-40 @item -m68020-40
@opindex m68020-40 @opindex m68020-40
Generate output for a 68040, without using any of the new instructions. Generate output for a 68040, without using any of the new instructions.
This results in code which can run relatively efficiently on either a This results in code that can run relatively efficiently on either a
68020/68881 or a 68030 or a 68040. The generated code does use the 68020/68881 or a 68030 or a 68040. The generated code does use the
68881 instructions that are emulated on the 68040. 68881 instructions that are emulated on the 68040.
...@@ -14515,7 +14514,7 @@ The option is equivalent to @option{-march=68020} @option{-mtune=68020-40}. ...@@ -14515,7 +14514,7 @@ The option is equivalent to @option{-march=68020} @option{-mtune=68020-40}.
@item -m68020-60 @item -m68020-60
@opindex m68020-60 @opindex m68020-60
Generate output for a 68060, without using any of the new instructions. Generate output for a 68060, without using any of the new instructions.
This results in code which can run relatively efficiently on either a This results in code that can run relatively efficiently on either a
68020/68881 or a 68030 or a 68040. The generated code does use the 68020/68881 or a 68030 or a 68040. The generated code does use the
68881 instructions that are emulated on the 68060. 68881 instructions that are emulated on the 68060.
...@@ -14762,7 +14761,7 @@ simulator library (@file{libsim.a)} from the linker command line. ...@@ -14762,7 +14761,7 @@ simulator library (@file{libsim.a)} from the linker command line.
@item -mstack-increment=@var{size} @item -mstack-increment=@var{size}
@opindex mstack-increment @opindex mstack-increment
Set the maximum amount for a single stack increment operation. Large Set the maximum amount for a single stack increment operation. Large
values can increase the speed of programs which contain functions values can increase the speed of programs that contain functions
that need a large amount of stack space, but they can also trigger a that need a large amount of stack space, but they can also trigger a
segmentation fault if the stack is extended too much. The default segmentation fault if the stack is extended too much. The default
value is 0x1000. value is 0x1000.
...@@ -15793,7 +15792,7 @@ Enable or disable use of Branch Likely instructions, regardless of the ...@@ -15793,7 +15792,7 @@ Enable or disable use of Branch Likely instructions, regardless of the
default for the selected architecture. By default, Branch Likely default for the selected architecture. By default, Branch Likely
instructions may be generated if they are supported by the selected instructions may be generated if they are supported by the selected
architecture. An exception is for the MIPS32 and MIPS64 architectures architecture. An exception is for the MIPS32 and MIPS64 architectures
and processors which implement those architectures; for those, Branch and processors that implement those architectures; for those, Branch
Likely instructions will not be generated by default because the MIPS32 Likely instructions will not be generated by default because the MIPS32
and MIPS64 architectures specifically deprecate their use. and MIPS64 architectures specifically deprecate their use.
...@@ -15977,20 +15976,20 @@ MN10300 processors. ...@@ -15977,20 +15976,20 @@ MN10300 processors.
@item -mam33 @item -mam33
@opindex mam33 @opindex mam33
Generate code which uses features specific to the AM33 processor. Generate code using features specific to the AM33 processor.
@item -mno-am33 @item -mno-am33
@opindex mno-am33 @opindex mno-am33
Do not generate code which uses features specific to the AM33 processor. This Do not generate code using features specific to the AM33 processor. This
is the default. is the default.
@item -mam33-2 @item -mam33-2
@opindex mam33-2 @opindex mam33-2
Generate code which uses features specific to the AM33/2.0 processor. Generate code using features specific to the AM33/2.0 processor.
@item -mam34 @item -mam34
@opindex mam34 @opindex mam34
Generate code which uses features specific to the AM34 processor. Generate code using features specific to the AM34 processor.
@item -mtune=@var{cpu-type} @item -mtune=@var{cpu-type}
@opindex mtune @opindex mtune
...@@ -16001,7 +16000,7 @@ type. The CPU type must be one of @samp{mn10300}, @samp{am33}, ...@@ -16001,7 +16000,7 @@ type. The CPU type must be one of @samp{mn10300}, @samp{am33},
@item -mreturn-pointer-on-d0 @item -mreturn-pointer-on-d0
@opindex mreturn-pointer-on-d0 @opindex mreturn-pointer-on-d0
When generating a function which returns a pointer, return the pointer When generating a function that returns a pointer, return the pointer
in both @code{a0} and @code{d0}. Otherwise, the pointer is returned in both @code{a0} and @code{d0}. Otherwise, the pointer is returned
only in a0, and attempts to call such functions without a prototype only in a0, and attempts to call such functions without a prototype
would result in errors. Note that this option is on by default; use would result in errors. Note that this option is on by default; use
...@@ -16179,13 +16178,13 @@ rather than being permanently enabled. ...@@ -16179,13 +16178,13 @@ rather than being permanently enabled.
@item -mno-inefficient-warnings @item -mno-inefficient-warnings
Disables warnings about the generation of inefficient code. These Disables warnings about the generation of inefficient code. These
warnings can be generated, for example, when compiling code which warnings can be generated, for example, when compiling code that
performs byte-level memory operations on the MAC AE type. The MAC AE has performs byte-level memory operations on the MAC AE type. The MAC AE has
no hardware support for byte-level memory operations, so all byte no hardware support for byte-level memory operations, so all byte
load/stores must be synthesized from word load/store operations. This is load/stores must be synthesized from word load/store operations. This is
inefficient and a warning will be generated indicating to the programmer inefficient and a warning will be generated indicating to the programmer
that they should rewrite the code to avoid byte operations, or to target that they should rewrite the code to avoid byte operations, or to target
an AE type which has the necessary hardware support. This option enables an AE type that has the necessary hardware support. This option enables
the warning to be turned off. the warning to be turned off.
@end table @end table
...@@ -16840,7 +16839,7 @@ by the target during instruction scheduling. The argument ...@@ -16840,7 +16839,7 @@ by the target during instruction scheduling. The argument
@var{all}: all dependences are costly, @var{all}: all dependences are costly,
@var{true_store_to_load}: a true dependence from store to load is costly, @var{true_store_to_load}: a true dependence from store to load is costly,
@var{store_to_load}: any dependence from store to load is costly, @var{store_to_load}: any dependence from store to load is costly,
@var{number}: any dependence which latency >= @var{number} is costly. @var{number}: any dependence for which latency >= @var{number} is costly.
@item -minsert-sched-nops=@var{scheme} @item -minsert-sched-nops=@var{scheme}
@opindex minsert-sched-nops @opindex minsert-sched-nops
...@@ -16848,7 +16847,7 @@ This option controls which nop insertion scheme will be used during ...@@ -16848,7 +16847,7 @@ This option controls which nop insertion scheme will be used during
the second scheduling pass. The argument @var{scheme} takes one of the the second scheduling pass. The argument @var{scheme} takes one of the
following values: following values:
@var{no}: Don't insert nops. @var{no}: Don't insert nops.
@var{pad}: Pad with nops any dispatch group which has vacant issue slots, @var{pad}: Pad with nops any dispatch group that has vacant issue slots,
according to the scheduler's grouping. according to the scheduler's grouping.
@var{regroup_exact}: Insert nops to force costly dependent insns into @var{regroup_exact}: Insert nops to force costly dependent insns into
separate groups. Insert exactly as many nops as needed to force an insn separate groups. Insert exactly as many nops as needed to force an insn
...@@ -17136,7 +17135,7 @@ roots. ...@@ -17136,7 +17135,7 @@ roots.
@item -mrecip=@var{opt} @item -mrecip=@var{opt}
@opindex mrecip=opt @opindex mrecip=opt
This option allows to control which reciprocal estimate instructions This option allows to control which reciprocal estimate instructions
may be used. @var{opt} is a comma separated list of options, that may may be used. @var{opt} is a comma separated list of options, which may
be preceded by a @code{!} to invert the option: be preceded by a @code{!} to invert the option:
@code{all}: enable all estimate instructions, @code{all}: enable all estimate instructions,
@code{default}: enable the default instructions, equivalent to @option{-mrecip}, @code{default}: enable the default instructions, equivalent to @option{-mrecip},
...@@ -17287,7 +17286,7 @@ could result in slower and/or larger code if variables which once ...@@ -17287,7 +17286,7 @@ could result in slower and/or larger code if variables which once
could have been held in the reserved register are now pushed onto the could have been held in the reserved register are now pushed onto the
stack. stack.
Note, common variables (variables which have not been initialised) and Note, common variables (variables that have not been initialised) and
constants are not placed into the small data area as they are assigned constants are not placed into the small data area as they are assigned
to other sections in the output executable. to other sections in the output executable.
...@@ -17564,7 +17563,7 @@ hardware floating point is used. ...@@ -17564,7 +17563,7 @@ hardware floating point is used.
@opindex mwarn-framesize @opindex mwarn-framesize
Emit a warning if the current function exceeds the given frame size. Because Emit a warning if the current function exceeds the given frame size. Because
this is a compile-time check it doesn't need to be a real problem when the program this is a compile-time check it doesn't need to be a real problem when the program
runs. It is intended to identify functions which most probably cause runs. It is intended to identify functions that most probably cause
a stack overflow. It is useful to be used in an environment with limited stack a stack overflow. It is useful to be used in an environment with limited stack
size e.g.@: the linux kernel. size e.g.@: the linux kernel.
...@@ -18340,8 +18339,8 @@ relocation. @option{-mno-error-reloc} disables the error, ...@@ -18340,8 +18339,8 @@ relocation. @option{-mno-error-reloc} disables the error,
@opindex msafe-dma @opindex msafe-dma
@opindex munsafe-dma @opindex munsafe-dma
Instructions which initiate or test completion of DMA must not be Instructions that initiate or test completion of DMA must not be
reordered with respect to loads and stores of the memory which is being reordered with respect to loads and stores of the memory that is being
accessed. Users typically address this problem using the volatile accessed. Users typically address this problem using the volatile
keyword, but that can lead to inefficient code in places where the keyword, but that can lead to inefficient code in places where the
memory is known to not change. Rather than mark the memory as volatile memory is known to not change. Rather than mark the memory as volatile
...@@ -18447,7 +18446,7 @@ sure it is within 125. ...@@ -18447,7 +18446,7 @@ sure it is within 125.
@item -msafe-hints @item -msafe-hints
@opindex msafe-hints @opindex msafe-hints
Work around a hardware bug which causes the SPU to stall indefinitely. Work around a hardware bug that causes the SPU to stall indefinitely.
By default, GCC will insert the @code{hbrp} instruction to make sure By default, GCC will insert the @code{hbrp} instruction to make sure
this stall won't happen. this stall won't happen.
...@@ -18842,7 +18841,7 @@ used in code generation. ...@@ -18842,7 +18841,7 @@ used in code generation.
Most of them have both positive and negative forms; the negative form Most of them have both positive and negative forms; the negative form
of @option{-ffoo} would be @option{-fno-foo}. In the table below, only of @option{-ffoo} would be @option{-fno-foo}. In the table below, only
one of the forms is listed---the one which is not the default. You one of the forms is listed---the one that is not the default. You
can figure out the other form by either removing @samp{no-} or adding can figure out the other form by either removing @samp{no-} or adding
it. it.
...@@ -18874,7 +18873,7 @@ exceptions. For some targets, this implies GCC will generate frame ...@@ -18874,7 +18873,7 @@ exceptions. For some targets, this implies GCC will generate frame
unwind information for all functions, which can produce significant data unwind information for all functions, which can produce significant data
size overhead, although it does not affect execution. If you do not size overhead, although it does not affect execution. If you do not
specify this option, GCC will enable it by default for languages like specify this option, GCC will enable it by default for languages like
C++ which normally require exception handling, and disable it for C++ that normally require exception handling, and disable it for
languages like C that do not normally require it. However, you may need languages like C that do not normally require it. However, you may need
to enable this option when compiling C code that needs to interoperate to enable this option when compiling C code that needs to interoperate
properly with exception handlers written in C++. You may also wish to properly with exception handlers written in C++. You may also wish to
...@@ -18944,7 +18943,7 @@ Use it to conform to a non-default application binary interface. ...@@ -18944,7 +18943,7 @@ Use it to conform to a non-default application binary interface.
@opindex fshort-enums @opindex fshort-enums
Allocate to an @code{enum} type only as many bytes as it needs for the Allocate to an @code{enum} type only as many bytes as it needs for the
declared range of possible values. Specifically, the @code{enum} type declared range of possible values. Specifically, the @code{enum} type
will be equivalent to the smallest integer type which has enough room. will be equivalent to the smallest integer type that has enough room.
@strong{Warning:} the @option{-fshort-enums} switch causes GCC to generate @strong{Warning:} the @option{-fshort-enums} switch causes GCC to generate
code that is not binary compatible with code generated without that switch. code that is not binary compatible with code generated without that switch.
...@@ -18987,7 +18986,7 @@ you will get a multiple-definition error when you link them. ...@@ -18987,7 +18986,7 @@ you will get a multiple-definition error when you link them.
In this case, you must compile with @option{-fcommon} instead. In this case, you must compile with @option{-fcommon} instead.
Compiling with @option{-fno-common} is useful on targets for which Compiling with @option{-fno-common} is useful on targets for which
it provides better performance, or if you wish to verify that the it provides better performance, or if you wish to verify that the
program will work on other systems which always treat uninitialized program will work on other systems that always treat uninitialized
variable declarations this way. variable declarations this way.
@item -fno-ident @item -fno-ident
...@@ -19080,7 +19079,7 @@ for @option{-fpie} and 2 for @option{-fPIE}. ...@@ -19080,7 +19079,7 @@ for @option{-fpie} and 2 for @option{-fPIE}.
Do not use jump tables for switch statements even where it would be Do not use jump tables for switch statements even where it would be
more efficient than other code generation strategies. This option is more efficient than other code generation strategies. This option is
of use in conjunction with @option{-fpic} or @option{-fPIC} for of use in conjunction with @option{-fpic} or @option{-fPIC} for
building code which forms part of a dynamic linker and cannot building code that forms part of a dynamic linker and cannot
reference the address of a jump table. On some targets, jump tables reference the address of a jump table. On some targets, jump tables
do not require a GOT and this option is not needed. do not require a GOT and this option is not needed.
...@@ -19449,7 +19448,7 @@ GNU Compiler Collection (GCC) Internals}. ...@@ -19449,7 +19448,7 @@ GNU Compiler Collection (GCC) Internals}.
@findex LC_ALL @findex LC_ALL
@cindex locale @cindex locale
These environment variables control the way that GCC uses These environment variables control the way that GCC uses
localization information that allow GCC to work with different localization information which allows GCC to work with different
national conventions. GCC inspects the locale categories national conventions. GCC inspects the locale categories
@env{LC_CTYPE} and @env{LC_MESSAGES} if it has been configured to do @env{LC_CTYPE} and @env{LC_MESSAGES} if it has been configured to do
so. These locale categories can be set to any value supported by your so. These locale categories can be set to any value supported by your
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment