Commit 1d85ac83 by Sandra Loosemore Committed by Sandra Loosemore

invoke.texi: Fix numerous typos and punctuation/grammatical errors throughout the file.

2012-09-03  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* doc/invoke.texi: Fix numerous typos and punctuation/grammatical
	errors throughout the file.  Re-word some awkward sentences and
	paragraphs.

From-SVN: r190896
parent 625afa23
2012-09-03 Sandra Loosemore <sandra@codesourcery.com>
* doc/invoke.texi: Fix numerous typos and punctuation/grammatical
errors throughout the file. Re-word some awkward sentences and
paragraphs.
2012-09-03 Richard Guenther <rguenther@suse.de> 2012-09-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/54362 PR tree-optimization/54362
......
...@@ -1238,7 +1238,7 @@ Input files that don't require preprocessing are ignored. ...@@ -1238,7 +1238,7 @@ 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}
@opindex o @opindex o
Place output in file @var{file}. This applies regardless to whatever Place output in file @var{file}. This applies to whatever
sort of output is being produced, whether it be an executable file, sort of output is being produced, whether it be an executable file,
an object file, an assembler file or preprocessed C code. an object file, an assembler file or preprocessed C code.
...@@ -1334,7 +1334,7 @@ following the original option, such as: @samp{-o output-file}. ...@@ -1334,7 +1334,7 @@ following the original option, such as: @samp{-o output-file}.
@end table @end table
Thus for example to display all the undocumented target-specific Thus for example to display all the undocumented target-specific
switches supported by the compiler the following can be used: switches supported by the compiler, use:
@smallexample @smallexample
--help=target,undocumented --help=target,undocumented
...@@ -1353,10 +1353,10 @@ The argument to @option{--help=} should not consist solely of inverted ...@@ -1353,10 +1353,10 @@ The argument to @option{--help=} should not consist solely of inverted
qualifiers. qualifiers.
Combining several classes is possible, although this usually Combining several classes is possible, although this usually
restricts the output by so much that there is nothing to display. One restricts the output so much that there is nothing to display. One
case where it does work however is when one of the classes is case where it does work, however, is when one of the classes is
@var{target}. So for example to display all the target-specific @var{target}. For example, to display all the target-specific
optimization options the following can be used: optimization options, use:
@smallexample @smallexample
--help=target,optimizers --help=target,optimizers
...@@ -1470,10 +1470,10 @@ with the name @command{gcc}). ...@@ -1470,10 +1470,10 @@ with the name @command{gcc}).
@findex g++ @findex g++
@findex c++ @findex c++
However, the use of @command{gcc} does not add the C++ library. However, the use of @command{gcc} does not add the C++ library.
@command{g++} is a program that calls GCC and treats @samp{.c}, @command{g++} is a program that calls GCC and automatically specifies linking
against the C++ library. It treats @samp{.c},
@samp{.h} and @samp{.i} files as C++ source files instead of C source @samp{.h} and @samp{.i} files as C++ source files instead of C source
files unless @option{-x} is used, and automatically specifies linking files unless @option{-x} is used. This program is also useful when
against the C++ library. This program is also useful when
precompiling a C header file with a @samp{.h} extension for use in C++ precompiling a C header file with a @samp{.h} extension for use in C++
compilations. On many systems, @command{g++} is also installed with compilations. On many systems, @command{g++} is also installed with
the name @command{c++}. the name @command{c++}.
...@@ -1554,9 +1554,9 @@ using GNU extensions that do not contradict it. For example, ...@@ -1554,9 +1554,9 @@ using GNU extensions that do not contradict it. For example,
incompatible with ISO C90, such as the @code{asm} and @code{typeof} incompatible with ISO C90, such as the @code{asm} and @code{typeof}
keywords, but not other GNU extensions that do not have a meaning in keywords, but not other GNU extensions that do not have a meaning in
ISO C90, such as omitting the middle term of a @code{?:} ISO C90, such as omitting the middle term of a @code{?:}
expression. On the other hand, by specifying a GNU dialect of a expression. On the other hand, when a GNU dialect of a standard is
standard, all features the compiler support are enabled, even when specified, all features supported by the compiler are enabled, even when
those features change the meaning of the base standard and some those features change the meaning of the base standard. As a result, some
strict-conforming programs may be rejected. The particular standard strict-conforming programs may be rejected. The particular standard
is used by @option{-Wpedantic} to identify which features are GNU is used by @option{-Wpedantic} to identify which features are GNU
extensions given that version of the standard. For example extensions given that version of the standard. For example
...@@ -1720,7 +1720,7 @@ information about that function to warn about problems with calls to ...@@ -1720,7 +1720,7 @@ information about that function to warn about problems with calls to
that function, or to generate more efficient code, even if the that function, or to generate more efficient code, even if the
resulting code still contains calls to that function. For example, resulting code still contains calls to that function. For example,
warnings are given with @option{-Wformat} for bad calls to warnings are given with @option{-Wformat} for bad calls to
@code{printf}, when @code{printf} is built in, and @code{strlen} is @code{printf} when @code{printf} is built in and @code{strlen} is
known not to modify global memory. known not to modify global memory.
With the @option{-fno-builtin-@var{function}} option With the @option{-fno-builtin-@var{function}} option
...@@ -1741,7 +1741,7 @@ built-in functions selectively when using @option{-fno-builtin} or ...@@ -1741,7 +1741,7 @@ built-in functions selectively when using @option{-fno-builtin} or
@opindex fhosted @opindex fhosted
@cindex hosted environment @cindex hosted environment
Assert that compilation takes place in a hosted environment. This implies Assert that compilation targets a hosted environment. This implies
@option{-fbuiltin}. A hosted environment is one in which the @option{-fbuiltin}. A hosted environment is one in which the
entire standard library is available, and in which @code{main} has a return entire standard library is available, and in which @code{main} has a return
type of @code{int}. Examples are nearly everything except a kernel. type of @code{int}. Examples are nearly everything except a kernel.
...@@ -1751,7 +1751,7 @@ This is equivalent to @option{-fno-freestanding}. ...@@ -1751,7 +1751,7 @@ This is equivalent to @option{-fno-freestanding}.
@opindex ffreestanding @opindex ffreestanding
@cindex hosted environment @cindex hosted environment
Assert that compilation takes place in a freestanding environment. This Assert that compilation targets a freestanding environment. This
implies @option{-fno-builtin}. A freestanding environment implies @option{-fno-builtin}. A freestanding environment
is one in which the standard library may not exist, and program startup may is one in which the standard library may not exist, and program startup may
not necessarily be at @code{main}. The most obvious example is an OS kernel. not necessarily be at @code{main}. The most obvious example is an OS kernel.
...@@ -1890,7 +1890,7 @@ basic integer types such as @code{int} are signed types. ...@@ -1890,7 +1890,7 @@ basic integer types such as @code{int} are signed types.
@cindex C++ options, command-line @cindex C++ options, command-line
@cindex options, C++ @cindex options, C++
This section describes the command-line options that are only meaningful This section describes the command-line options that are only meaningful
for C++ programs; but you can also use most of the GNU compiler options for C++ programs. You can also use most of the GNU compiler options
regardless of what language your program is in. For example, you regardless of what language your program is in. For example, you
might compile a file @code{firstClass.C} like this: might compile a file @code{firstClass.C} like this:
...@@ -1909,14 +1909,15 @@ Here is a list of options that are @emph{only} for compiling C++ programs: ...@@ -1909,14 +1909,15 @@ Here is a list of options that are @emph{only} for compiling C++ programs:
@item -fabi-version=@var{n} @item -fabi-version=@var{n}
@opindex fabi-version @opindex fabi-version
Use version @var{n} of the C++ ABI@. Version 2 is the version of the Use version @var{n} of the C++ ABI@. The default is version 2.
C++ ABI that first appeared in G++ 3.4. Version 1 is the version of
the C++ ABI that first appeared in G++ 3.2. Version 0 will always be
the version that conforms most closely to the C++ ABI specification.
Therefore, the ABI obtained using version 0 will change as ABI bugs
are fixed.
The default is version 2. Version 0 refers to the version conforming most closely to
the C++ ABI specification. Therefore, the ABI obtained using version 0
will change in different versions of G++ as ABI bugs are fixed.
Version 1 is the version of the C++ ABI that first appeared in G++ 3.2.
Version 2 is the version of the C++ ABI that first appeared in G++ 3.4.
Version 3 corrects an error in mangling a constant address as a Version 3 corrects an error in mangling a constant address as a
template argument. template argument.
...@@ -2025,7 +2026,7 @@ a @i{for-init-statement} extends to the end of the enclosing scope, ...@@ -2025,7 +2026,7 @@ a @i{for-init-statement} extends to the end of the enclosing scope,
as was the case in old versions of G++, and other (traditional) as was the case in old versions of G++, and other (traditional)
implementations of C++. implementations of C++.
The default if neither flag is given to follow the standard, If neither flag is given, the default is to follow the standard,
but to allow and give a warning for old-style code that would but to allow and give a warning for old-style code that would
otherwise be invalid, or have different behavior. otherwise be invalid, or have different behavior.
...@@ -2512,7 +2513,7 @@ Warn about violations of the following style guidelines from Scott Meyers' ...@@ -2512,7 +2513,7 @@ Warn about violations of the following style guidelines from Scott Meyers'
@itemize @bullet @itemize @bullet
@item @item
Item 11: Define a copy constructor and an assignment operator for classes Item 11: Define a copy constructor and an assignment operator for classes
with dynamically allocated memory. with dynamically-allocated memory.
@item @item
Item 12: Prefer initialization to assignment in constructors. Item 12: Prefer initialization to assignment in constructors.
...@@ -2548,11 +2549,11 @@ to filter out those warnings. ...@@ -2548,11 +2549,11 @@ to filter out those warnings.
@item -Wstrict-null-sentinel @r{(C++ and Objective-C++ only)} @item -Wstrict-null-sentinel @r{(C++ and Objective-C++ only)}
@opindex Wstrict-null-sentinel @opindex Wstrict-null-sentinel
@opindex Wno-strict-null-sentinel @opindex Wno-strict-null-sentinel
Warn also about the use of an uncasted @code{NULL} as sentinel. When Warn about the use of an uncasted @code{NULL} as sentinel. When
compiling only with GCC this is a valid sentinel, as @code{NULL} is defined compiling only with GCC this is a valid sentinel, as @code{NULL} is defined
to @code{__null}. Although it is a null pointer constant not a null pointer, to @code{__null}. Although it is a null pointer constant rather than a
it is guaranteed to be of the same size as a pointer. But this use is null pointer, it is guaranteed to be of the same size as a pointer.
not portable across different compilers. But this use is not portable across different compilers.
@item -Wno-non-template-friend @r{(C++ and Objective-C++ only)} @item -Wno-non-template-friend @r{(C++ and Objective-C++ only)}
@opindex Wno-non-template-friend @opindex Wno-non-template-friend
...@@ -2651,7 +2652,7 @@ languages themselves. @xref{Standards,,Language Standards ...@@ -2651,7 +2652,7 @@ languages themselves. @xref{Standards,,Language Standards
Supported by GCC}, for references.) Supported by GCC}, for references.)
This section describes the command-line options that are only meaningful This section describes the command-line options that are only meaningful
for Objective-C and Objective-C++ programs, but you can also use most of for Objective-C and Objective-C++ programs. You can also use most of
the language-independent GNU compiler options. the language-independent GNU compiler options.
For example, you might compile a file @code{some_class.m} like this: For example, you might compile a file @code{some_class.m} like this:
...@@ -2898,7 +2899,7 @@ line. ...@@ -2898,7 +2899,7 @@ line.
@item -fdiagnostics-show-location=once @item -fdiagnostics-show-location=once
@opindex fdiagnostics-show-location @opindex fdiagnostics-show-location
Only meaningful in line-wrapping mode. Instructs the diagnostic messages Only meaningful in line-wrapping mode. Instructs the diagnostic messages
reporter to emit @emph{once} source location information; that is, in reporter to emit source location information @emph{once}; that is, in
case the message is too long to fit on a single physical line and has to case the message is too long to fit on a single physical line and has to
be wrapped, the source location won't be emitted (as prefix) again, be wrapped, the source location won't be emitted (as prefix) again,
over and over, in subsequent continuation lines. This is the default over and over, in subsequent continuation lines. This is the default
...@@ -2969,10 +2970,10 @@ Make all warnings into errors. ...@@ -2969,10 +2970,10 @@ Make all warnings into errors.
@opindex Werror= @opindex Werror=
@opindex Wno-error= @opindex Wno-error=
Make the specified warning into an error. The specifier for a warning Make the specified warning into an error. The specifier for a warning
is appended, for example @option{-Werror=switch} turns the warnings is appended; for example @option{-Werror=switch} turns the warnings
controlled by @option{-Wswitch} into errors. This switch takes a controlled by @option{-Wswitch} into errors. This switch takes a
negative form, to be used to negate @option{-Werror} for specific negative form, to be used to negate @option{-Werror} for specific
warnings, for example @option{-Wno-error=switch} makes warnings; for example @option{-Wno-error=switch} makes
@option{-Wswitch} warnings not be errors, even when @option{-Werror} @option{-Wswitch} warnings not be errors, even when @option{-Werror}
is in effect. is in effect.
...@@ -2995,12 +2996,12 @@ messages. ...@@ -2995,12 +2996,12 @@ messages.
@end table @end table
You can request many specific warnings with options beginning You can request many specific warnings with options beginning with
@samp{-W}, for example @option{-Wimplicit} to request warnings on @samp{-W}, for example @option{-Wimplicit} to request warnings on
implicit declarations. Each of these specific warning options also implicit declarations. Each of these specific warning options also
has a negative form beginning @samp{-Wno-} to turn off warnings; for has a negative form beginning @samp{-Wno-} to turn off warnings; for
example, @option{-Wno-implicit}. This manual lists only one of the example, @option{-Wno-implicit}. This manual lists only one of the
two forms, whichever is not the default. For further, two forms, whichever is not the default. For further
language-specific options also refer to @ref{C++ Dialect Options} and language-specific options also refer to @ref{C++ Dialect Options} and
@ref{Objective-C and Objective-C++ Dialect Options}. @ref{Objective-C and Objective-C++ Dialect Options}.
...@@ -3077,7 +3078,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}. ...@@ -3077,7 +3078,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
-Warray-bounds @r{(only with} @option{-O2}@r{)} @gol -Warray-bounds @r{(only with} @option{-O2}@r{)} @gol
-Wc++11-compat @gol -Wc++11-compat @gol
-Wchar-subscripts @gol -Wchar-subscripts @gol
-Wenum-compare @r{(in C/Objc; this is on by default in C++)} @gol -Wenum-compare @r{(in C/ObjC; this is on by default in C++)} @gol
-Wimplicit-int @r{(C and Objective-C only)} @gol -Wimplicit-int @r{(C and Objective-C only)} @gol
-Wimplicit-function-declaration @r{(C and Objective-C only)} @gol -Wimplicit-function-declaration @r{(C and Objective-C only)} @gol
-Wcomment @gol -Wcomment @gol
...@@ -3159,7 +3160,7 @@ conditional expression. ...@@ -3159,7 +3160,7 @@ conditional expression.
@samp{register}. @samp{register}.
@item @item
(C++ only) A base class is not initialized in a derived class' copy (C++ only) A base class is not initialized in a derived class's copy
constructor. constructor.
@end itemize @end itemize
...@@ -3476,7 +3477,7 @@ This warning is enabled by @option{-Wall}. ...@@ -3476,7 +3477,7 @@ This warning is enabled by @option{-Wall}.
Warn about code that may have undefined semantics because of violations Warn about code that may have undefined semantics because of violations
of sequence point rules in the C and C++ standards. of sequence point rules in the C and C++ standards.
The C and C++ standards defines the order in which expressions in a C/C++ The C and C++ standards define the order in which expressions in a C/C++
program are evaluated in terms of @dfn{sequence points}, which represent program are evaluated in terms of @dfn{sequence points}, which represent
a partial ordering between the execution of parts of the program: those a partial ordering between the execution of parts of the program: those
executed before the sequence point, and those executed after it. These executed before the sequence point, and those executed after it. These
...@@ -3519,12 +3520,12 @@ This warning is enabled by @option{-Wall} for C and C++. ...@@ -3519,12 +3520,12 @@ This warning is enabled by @option{-Wall} for C and C++.
@item -Wreturn-type @item -Wreturn-type
@opindex Wreturn-type @opindex Wreturn-type
@opindex Wno-return-type @opindex Wno-return-type
Warn whenever a function is defined with a return-type that defaults Warn whenever a function is defined with a return type that defaults
to @code{int}. Also warn about any @code{return} statement with no to @code{int}. Also warn about any @code{return} statement with no
return-value in a function whose return-type is not @code{void} return value in a function whose return type is not @code{void}
(falling off the end of the function body is considered returning (falling off the end of the function body is considered returning
without a value), and about a @code{return} statement with an without a value), and about a @code{return} statement with an
expression in a function whose return-type is @code{void}. expression in a function whose return type is @code{void}.
For C++, a function without return type always produces a diagnostic For C++, a function without return type always produces a diagnostic
message, even when @option{-Wno-return-type} is specified. The only message, even when @option{-Wno-return-type} is specified. The only
...@@ -3878,7 +3879,7 @@ Warn about functions that might be candidates for attributes ...@@ -3878,7 +3879,7 @@ 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
returns normally if it doesn't contain an infinite loop nor returns abnormally returns normally if it doesn't contain an infinite loop or return abnormally
by throwing, calling @code{abort()} or trapping. This analysis requires option by throwing, calling @code{abort()} or trapping. This analysis requires option
@option{-fipa-pure-const}, which is enabled by default at @option{-O} and @option{-fipa-pure-const}, which is enabled by default at @option{-O} and
higher. Higher optimization levels improve the accuracy of the analysis. higher. Higher optimization levels improve the accuracy of the analysis.
...@@ -3978,7 +3979,7 @@ equivalent, and/or problematic constructs that should be avoided. ...@@ -3978,7 +3979,7 @@ equivalent, and/or problematic constructs that should be avoided.
@item @item
Macro parameters that appear within string literals in the macro body. Macro parameters that appear within string literals in the macro body.
In traditional C macro replacement takes place within string literals, In traditional C macro replacement takes place within string literals,
but does not in ISO C@. but in ISO C it does not.
@item @item
In traditional C, some preprocessor directives did not exist. In traditional C, some preprocessor directives did not exist.
...@@ -4155,10 +4156,11 @@ such assumptions. ...@@ -4155,10 +4156,11 @@ such assumptions.
@item -Wno-pedantic-ms-format @r{(MinGW targets only)} @item -Wno-pedantic-ms-format @r{(MinGW targets only)}
@opindex Wno-pedantic-ms-format @opindex Wno-pedantic-ms-format
@opindex Wpedantic-ms-format @opindex Wpedantic-ms-format
Disables the warnings about non-ISO @code{printf} / @code{scanf} format When used in combination with @option{-Wformat}
width specifiers @code{I32}, @code{I64}, and @code{I} used on Windows targets and @option{-pedantic} without GNU extensions, this option
depending on the MS runtime, when you are using the options @option{-Wformat} disables the warnings about non-ISO @code{printf} / @code{scanf} format
and @option{-Wpedantic} without gnu-extensions. width specifiers @code{I32}, @code{I64}, and @code{I} used on Windows targets,
which depend on the MS runtime.
@item -Wpointer-arith @item -Wpointer-arith
@opindex Wpointer-arith @opindex Wpointer-arith
...@@ -4633,9 +4635,9 @@ Suppress warnings from applying the @samp{offsetof} macro to a non-POD ...@@ -4633,9 +4635,9 @@ Suppress warnings from applying the @samp{offsetof} macro to a non-POD
type. According to the 1998 ISO C++ standard, applying @samp{offsetof} type. According to the 1998 ISO C++ standard, applying @samp{offsetof}
to a non-POD type is undefined. In existing C++ implementations, to a non-POD type is undefined. In existing C++ implementations,
however, @samp{offsetof} typically gives meaningful results even when however, @samp{offsetof} typically gives meaningful results even when
applied to certain kinds of non-POD types. (Such as a simple applied to certain kinds of non-POD types (such as a simple
@samp{struct} that fails to be a POD type only by virtue of having a @samp{struct} that fails to be a POD type only by virtue of having a
constructor.) This flag is for users who are aware that they are constructor). This flag is for users who are aware that they are
writing nonportable code and who have deliberately chosen to ignore the writing nonportable code and who have deliberately chosen to ignore the
warning about it. warning about it.
...@@ -5427,7 +5429,7 @@ Dump after combining stack adjustments. ...@@ -5427,7 +5429,7 @@ Dump after combining stack adjustments.
@opindex fdump-rtl-cse1 @opindex fdump-rtl-cse1
@opindex fdump-rtl-cse2 @opindex fdump-rtl-cse2
@option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after @option{-fdump-rtl-cse1} and @option{-fdump-rtl-cse2} enable dumping after
the two common sub-expression elimination passes. the two common subexpression elimination passes.
@itemx -fdump-rtl-dce @itemx -fdump-rtl-dce
@opindex fdump-rtl-dce @opindex fdump-rtl-dce
...@@ -5735,7 +5737,7 @@ counters for each function compiled. ...@@ -5735,7 +5737,7 @@ counters for each function compiled.
@opindex fdump-tree @opindex fdump-tree
Control the dumping at various stages of processing the intermediate Control the dumping at various stages of processing the intermediate
language tree to a file. The file name is generated by appending a 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 which control the details of the dump. Not @samp{-} separated options which control the details of the dump. Not
...@@ -6111,7 +6113,7 @@ Print the mapping from multilib directory names to compiler switches ...@@ -6111,7 +6113,7 @@ Print the mapping from multilib directory names to compiler switches
that enable them. The directory name is separated from the switches by that enable them. The directory name is separated from the switches by
@samp{;}, and each switch starts with an @samp{@@} instead of the @samp{;}, and each switch starts with an @samp{@@} instead of the
@samp{-}, without spaces between multiple switches. This is supposed to @samp{-}, without spaces between multiple switches. This is supposed to
ease shell-processing. ease shell processing.
@item -print-multi-os-directory @item -print-multi-os-directory
@opindex print-multi-os-directory @opindex print-multi-os-directory
...@@ -6132,7 +6134,7 @@ Like @option{-print-file-name}, but searches for a program such as @samp{cpp}. ...@@ -6132,7 +6134,7 @@ Like @option{-print-file-name}, but searches for a program such as @samp{cpp}.
Same as @option{-print-file-name=libgcc.a}. Same as @option{-print-file-name=libgcc.a}.
This is useful when you use @option{-nostdlib} or @option{-nodefaultlibs} This is useful when you use @option{-nostdlib} or @option{-nodefaultlibs}
but you do want to link with @file{libgcc.a}. You can do but you do want to link with @file{libgcc.a}. You can do:
@smallexample @smallexample
gcc -nostdlib @var{files}@dots{} `gcc -print-libgcc-file-name` gcc -nostdlib @var{files}@dots{} `gcc -print-libgcc-file-name`
...@@ -6347,7 +6349,7 @@ optimizations designed to reduce code size. ...@@ -6347,7 +6349,7 @@ optimizations designed to reduce code size.
@opindex Ofast @opindex Ofast
Disregard strict standards compliance. @option{-Ofast} enables all Disregard strict standards compliance. @option{-Ofast} enables all
@option{-O3} optimizations. It also enables optimizations that are not @option{-O3} optimizations. It also enables optimizations that are not
valid for all standard compliant programs. valid for all standard-compliant programs.
It turns on @option{-ffast-math} and the Fortran-specific It turns on @option{-ffast-math} and the Fortran-specific
@option{-fno-protect-parens} and @option{-fstack-arrays}. @option{-fno-protect-parens} and @option{-fstack-arrays}.
...@@ -6621,7 +6623,7 @@ are initialized to zero into BSS@. This can save space in the resulting ...@@ -6621,7 +6623,7 @@ are initialized to zero into BSS@. This can save space in the resulting
code. code.
This option turns off this behavior because some programs explicitly This option turns off this behavior because some programs explicitly
rely on variables going to the data section. E.g., so that the rely on variables going to the data section---e.g., so that the
resulting executable can find the beginning of that section and/or make resulting executable can find the beginning of that section and/or make
assumptions based on that. assumptions based on that.
...@@ -6655,7 +6657,7 @@ erroneously read data to propagate within a program. ...@@ -6655,7 +6657,7 @@ erroneously read data to propagate within a program.
@item -fthread-jumps @item -fthread-jumps
@opindex fthread-jumps @opindex fthread-jumps
Perform optimizations where we check to see if a jump branches to a Perform optimizations that check to see if a jump branches to a
location where another comparison subsumed by the first is found. If location where another comparison subsumed by the first is found. If
so, the first branch is redirected to either the destination of the so, the first branch is redirected to either the destination of the
second branch or a point immediately following it, depending on whether second branch or a point immediately following it, depending on whether
...@@ -6742,13 +6744,13 @@ Not enabled at any optimization level. ...@@ -6742,13 +6744,13 @@ Not enabled at any optimization level.
@item -fgcse-after-reload @item -fgcse-after-reload
@opindex fgcse-after-reload @opindex fgcse-after-reload
When @option{-fgcse-after-reload} is enabled, a redundant load elimination When @option{-fgcse-after-reload} is enabled, a redundant load elimination
pass is performed after reload. The purpose of this pass is to cleanup pass is performed after reload. The purpose of this pass is to clean up
redundant spilling. redundant spilling.
@item -funsafe-loop-optimizations @item -funsafe-loop-optimizations
@opindex funsafe-loop-optimizations @opindex funsafe-loop-optimizations
If given, the loop optimizer assumes that loop indices do not This option tells the loop optimizer to assume that loop indices do not
overflow, and that the loops with nontrivial exit condition are not overflow, and that loops with nontrivial exit condition are not
infinite. This enables a wider range of loop optimizations even if infinite. This enables a wider range of loop optimizations even if
the loop optimizer itself cannot prove that these assumptions are valid. the loop optimizer itself cannot prove that these assumptions are valid.
If you use @option{-Wunsafe-loop-optimizations}, the compiler warns you If you use @option{-Wunsafe-loop-optimizations}, the compiler warns you
...@@ -6756,7 +6758,8 @@ if it finds this kind of loop. ...@@ -6756,7 +6758,8 @@ if it finds this kind of loop.
@item -fcrossjumping @item -fcrossjumping
@opindex fcrossjumping @opindex fcrossjumping
Perform cross-jumping transformation. This transformation unifies equivalent code and save code size. The Perform cross-jumping transformation.
This transformation unifies equivalent code and saves code size. The
resulting code may or may not perform better than without cross-jumping. resulting code may or may not perform better than without cross-jumping.
Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
...@@ -6781,7 +6784,7 @@ Enabled by default at @option{-O} and higher. ...@@ -6781,7 +6784,7 @@ Enabled by default at @option{-O} and higher.
@item -fif-conversion @item -fif-conversion
@opindex fif-conversion @opindex fif-conversion
Attempt to transform conditional jumps into branch-less equivalents. This Attempt to transform conditional jumps into branch-less equivalents. This
include use of conditional moves, min, max, set flags and abs instructions, and includes use of conditional moves, min, max, set flags and abs instructions, and
some tricks doable by standard arithmetics. The use of conditional execution some tricks doable by standard arithmetics. The use of conditional execution
on chips where it is available is controlled by @code{if-conversion2}. on chips where it is available is controlled by @code{if-conversion2}.
...@@ -6951,13 +6954,13 @@ with @option{-fschedule-insns} or at @option{-O2} or higher. ...@@ -6951,13 +6954,13 @@ with @option{-fschedule-insns} or at @option{-O2} or higher.
@item -fsched-pressure @item -fsched-pressure
@opindex fsched-pressure @opindex fsched-pressure
Enable register pressure sensitive insn scheduling before the register Enable register pressure sensitive insn scheduling before register
allocation. This only makes sense when scheduling before register allocation. This only makes sense when scheduling before register
allocation is enabled, i.e.@: with @option{-fschedule-insns} or at allocation is enabled, i.e.@: with @option{-fschedule-insns} or at
@option{-O2} or higher. Usage of this option can improve the @option{-O2} or higher. Usage of this option can improve the
generated code and decrease its size by preventing register pressure generated code and decrease its size by preventing register pressure
increase above the number of available hard registers and as a increase above the number of available hard registers and subsequent
consequence register spills in the register allocation. spills in register allocation.
@item -fsched-spec-load @item -fsched-spec-load
@opindex fsched-spec-load @opindex fsched-spec-load
...@@ -6996,9 +6999,9 @@ and only if @option{-fsched-stalled-insns} is used. ...@@ -6996,9 +6999,9 @@ and only if @option{-fsched-stalled-insns} is used.
@item -fsched2-use-superblocks @item -fsched2-use-superblocks
@opindex fsched2-use-superblocks @opindex fsched2-use-superblocks
When scheduling after register allocation, do use superblock scheduling When scheduling after register allocation, use superblock scheduling.
algorithm. Superblock scheduling allows motion across basic block boundaries This allows motion across basic block boundaries,
resulting on faster schedules. This option is experimental, as not all machine resulting in faster schedules. This option is experimental, as not all machine
descriptions used by GCC model the CPU closely enough to avoid unreliable descriptions used by GCC model the CPU closely enough to avoid unreliable
results from the algorithm. results from the algorithm.
...@@ -7053,9 +7056,9 @@ at @option{-O2} or higher. ...@@ -7053,9 +7056,9 @@ at @option{-O2} or higher.
@item -freschedule-modulo-scheduled-loops @item -freschedule-modulo-scheduled-loops
@opindex freschedule-modulo-scheduled-loops @opindex freschedule-modulo-scheduled-loops
The modulo scheduling comes before the traditional scheduling. If a loop Modulo scheduling is performed before traditional scheduling. If a loop
is modulo scheduled you may want to prevent the later scheduling passes is modulo scheduled, later scheduling passes may change its schedule.
from changing its schedule; use this option to control that. Use this option to control that behavior.
@item -fselective-scheduling @item -fselective-scheduling
@opindex fselective-scheduling @opindex fselective-scheduling
...@@ -7070,13 +7073,13 @@ scheduling runs instead of the second scheduler pass. ...@@ -7070,13 +7073,13 @@ scheduling runs instead of the second scheduler pass.
@item -fsel-sched-pipelining @item -fsel-sched-pipelining
@opindex fsel-sched-pipelining @opindex fsel-sched-pipelining
Enable software pipelining of innermost loops during selective scheduling. Enable software pipelining of innermost loops during selective scheduling.
This option has no effect until one of @option{-fselective-scheduling} or This option has no effect unless one of @option{-fselective-scheduling} or
@option{-fselective-scheduling2} is turned on. @option{-fselective-scheduling2} is turned on.
@item -fsel-sched-pipelining-outer-loops @item -fsel-sched-pipelining-outer-loops
@opindex fsel-sched-pipelining-outer-loops @opindex fsel-sched-pipelining-outer-loops
When pipelining loops during selective scheduling, also pipeline outer loops. When pipelining loops during selective scheduling, also pipeline outer loops.
This option has no effect until @option{-fsel-sched-pipelining} is turned on. This option has no effect unless @option{-fsel-sched-pipelining} is turned on.
@item -fshrink-wrap @item -fshrink-wrap
@opindex fshrink-wrap @opindex fshrink-wrap
...@@ -7163,7 +7166,7 @@ Enabled by default at @option{-O} and higher. ...@@ -7163,7 +7166,7 @@ Enabled by default at @option{-O} and higher.
@item -fipa-reference @item -fipa-reference
@opindex fipa-reference @opindex fipa-reference
Discover which static variables do not escape cannot escape the Discover which static variables do not escape the
compilation unit. compilation unit.
Enabled by default at @option{-O} and higher. Enabled by default at @option{-O} and higher.
...@@ -7240,7 +7243,7 @@ default at @option{-O} and higher. ...@@ -7240,7 +7243,7 @@ default at @option{-O} and higher.
@item -ftree-builtin-call-dce @item -ftree-builtin-call-dce
@opindex ftree-builtin-call-dce @opindex ftree-builtin-call-dce
Perform conditional dead code elimination (DCE) for calls to builtin functions Perform conditional dead code elimination (DCE) for calls to built-in functions
that may set @code{errno} but are otherwise side-effect free. This flag is that may set @code{errno} but are otherwise side-effect free. This flag is
enabled by default at @option{-O2} and higher if @option{-Os} is not also enabled by default at @option{-O2} and higher if @option{-Os} is not also
specified. specified.
...@@ -7583,7 +7586,7 @@ enabled. ...@@ -7583,7 +7586,7 @@ enabled.
@opindex ftracer @opindex ftracer
Perform tail duplication to enlarge superblock size. This transformation Perform tail duplication to enlarge superblock size. This transformation
simplifies the control flow of the function allowing other optimizations to do simplifies the control flow of the function allowing other optimizations to do
better job. a better job.
@item -funroll-loops @item -funroll-loops
@opindex funroll-loops @opindex funroll-loops
...@@ -7601,14 +7604,14 @@ the loop is entered. This usually makes programs run more slowly. ...@@ -7601,14 +7604,14 @@ the loop is entered. This usually makes programs run more slowly.
@item -fsplit-ivs-in-unroller @item -fsplit-ivs-in-unroller
@opindex fsplit-ivs-in-unroller @opindex fsplit-ivs-in-unroller
Enables expressing of values of induction variables in later iterations Enables expression of values of induction variables in later iterations
of the unrolled loop using the value in the first iteration. This breaks of the unrolled loop using the value in the first iteration. This breaks
long dependency chains, thus improving efficiency of the scheduling passes. long dependency chains, thus improving efficiency of the scheduling passes.
Combination of @option{-fweb} and CSE is often sufficient to obtain the A combination of @option{-fweb} and CSE is often sufficient to obtain the
same effect. However in cases the loop body is more complicated than same effect. However, that is not reliable in cases where the loop body
a single basic block, this is not reliable. It also does not work at all is more complicated than a single basic block. It also does not work at all
on some of the architectures due to restrictions in the CSE pass. on some architectures due to restrictions in the CSE pass.
This optimization is enabled by default. This optimization is enabled by default.
...@@ -7700,7 +7703,7 @@ subsections @code{.text.hot} for most frequently executed functions and ...@@ -7700,7 +7703,7 @@ subsections @code{.text.hot} for most frequently executed functions and
the linker so object file format must support named sections and linker must the linker so object file format must support named sections and linker must
place them in a reasonable way. place them in a reasonable way.
Also profile feedback must be available in to make this option effective. See Also profile feedback must be available to make this option effective. See
@option{-fprofile-arcs} for details. @option{-fprofile-arcs} for details.
Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
...@@ -8078,7 +8081,7 @@ You must prepend a @samp{+} to the command recipe in the parent Makefile ...@@ -8078,7 +8081,7 @@ You must prepend a @samp{+} to the command recipe in the parent Makefile
for this to work. This option likely only works if @env{MAKE} is for this to work. This option likely only works if @env{MAKE} is
GNU make. GNU make.
This option is disabled by default This option is disabled by default.
@item -flto-partition=@var{alg} @item -flto-partition=@var{alg}
@opindex flto-partition @opindex flto-partition
...@@ -8156,7 +8159,7 @@ Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. ...@@ -8156,7 +8159,7 @@ Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
@item -fcprop-registers @item -fcprop-registers
@opindex fcprop-registers @opindex fcprop-registers
After register allocation and post-register allocation instruction splitting, After register allocation and post-register allocation instruction splitting,
we perform a copy-propagation pass to try to reduce scheduling dependencies perform a copy-propagation pass to try to reduce scheduling dependencies
and occasionally eliminate the copy. and occasionally eliminate the copy.
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
...@@ -8451,8 +8454,8 @@ After running a program compiled with @option{-fprofile-arcs} ...@@ -8451,8 +8454,8 @@ After running a program compiled with @option{-fprofile-arcs}
(@pxref{Debugging Options,, Options for Debugging Your Program or (@pxref{Debugging Options,, Options for Debugging Your Program or
@command{gcc}}), you can compile it a second time using @command{gcc}}), you can compile it a second time using
@option{-fbranch-probabilities}, to improve optimizations based on @option{-fbranch-probabilities}, to improve optimizations based on
the number of times each branch was taken. When the program the number of times each branch was taken. When a program
compiled with @option{-fprofile-arcs} exits it saves arc execution compiled with @option{-fprofile-arcs} exits, it saves arc execution
counts to a file called @file{@var{sourcename}.gcda} for each source counts to a file called @file{@var{sourcename}.gcda} for each source
file. The information in this data file is very dependent on the file. The information in this data file is very dependent on the
structure of the generated code, so you must use the same source code structure of the generated code, so you must use the same source code
...@@ -8477,12 +8480,12 @@ Enabled with @option{-fprofile-generate} and @option{-fprofile-use}. ...@@ -8477,12 +8480,12 @@ Enabled with @option{-fprofile-generate} and @option{-fprofile-use}.
@item -fvpt @item -fvpt
@opindex fvpt @opindex fvpt
If combined with @option{-fprofile-arcs}, it instructs the compiler to add If combined with @option{-fprofile-arcs}, this option instructs the compiler
a code to gather information about values of expressions. to add code to gather information about values of expressions.
With @option{-fbranch-probabilities}, it reads back the data gathered With @option{-fbranch-probabilities}, it reads back the data gathered
and actually performs the optimizations based on them. and actually performs the optimizations based on them.
Currently the optimizations include specialization of division operation Currently the optimizations include specialization of division operations
using the knowledge about the value of the denominator. using the knowledge about the value of the denominator.
@item -frename-registers @item -frename-registers
...@@ -8500,7 +8503,7 @@ Enabled by default with @option{-funroll-loops} and @option{-fpeel-loops}. ...@@ -8500,7 +8503,7 @@ Enabled by default with @option{-funroll-loops} and @option{-fpeel-loops}.
@opindex ftracer @opindex ftracer
Perform tail duplication to enlarge superblock size. This transformation Perform tail duplication to enlarge superblock size. This transformation
simplifies the control flow of the function allowing other optimizations to do simplifies the control flow of the function allowing other optimizations to do
better job. a better job.
Enabled with @option{-fprofile-use}. Enabled with @option{-fprofile-use}.
...@@ -8510,7 +8513,7 @@ Unroll loops whose number of iterations can be determined at compile time or ...@@ -8510,7 +8513,7 @@ Unroll loops whose number of iterations can be determined at compile time or
upon entry to the loop. @option{-funroll-loops} implies upon entry to the loop. @option{-funroll-loops} implies
@option{-frerun-cse-after-loop}, @option{-fweb} and @option{-frename-registers}. @option{-frerun-cse-after-loop}, @option{-fweb} and @option{-frename-registers}.
It also turns on complete loop peeling (i.e.@: complete removal of loops with It also turns on complete loop peeling (i.e.@: complete removal of loops with
small constant number of iterations). This option makes code larger, and may a small constant number of iterations). This option makes code larger, and may
or may not make it run faster. or may not make it run faster.
Enabled with @option{-fprofile-use}. Enabled with @option{-fprofile-use}.
...@@ -8578,7 +8581,7 @@ threading. ...@@ -8578,7 +8581,7 @@ threading.
@item -fbtr-bb-exclusive @item -fbtr-bb-exclusive
@opindex fbtr-bb-exclusive @opindex fbtr-bb-exclusive
When performing branch target register load optimization, don't reuse When performing branch target register load optimization, don't reuse
branch target registers in within any basic block. branch target registers within any basic block.
@item -fstack-protector @item -fstack-protector
@opindex fstack-protector @opindex fstack-protector
...@@ -8636,7 +8639,7 @@ tied to the internals of the compiler, and are subject to change ...@@ -8636,7 +8639,7 @@ tied to the internals of the compiler, and are subject to change
without notice in future releases. without notice in future releases.
In each case, the @var{value} is an integer. The allowable choices for In each case, the @var{value} is an integer. The allowable choices for
@var{name} are given in the following table: @var{name} are:
@table @gcctabopt @table @gcctabopt
@item predictable-branch-outcome @item predictable-branch-outcome
...@@ -8644,7 +8647,7 @@ When branch is predicted to be taken with probability lower than this threshold ...@@ -8644,7 +8647,7 @@ When branch is predicted to be taken with probability lower than this threshold
(in percent), then it is considered well predictable. The default is 10. (in percent), then it is considered well predictable. The default is 10.
@item max-crossjump-edges @item max-crossjump-edges
The maximum number of incoming edges to consider for crossjumping. The maximum number of incoming edges to consider for cross-jumping.
The algorithm used by @option{-fcrossjumping} is @math{O(N^2)} in The algorithm used by @option{-fcrossjumping} is @math{O(N^2)} in
the number of edges incoming to each block. Increasing values mean the number of edges incoming to each block. Increasing values mean
more aggressive optimization, making the compilation time increase with more aggressive optimization, making the compilation time increase with
...@@ -8652,9 +8655,9 @@ probably small improvement in executable size. ...@@ -8652,9 +8655,9 @@ probably small improvement in executable size.
@item min-crossjump-insns @item min-crossjump-insns
The minimum number of instructions that must be matched at the end The minimum number of instructions that must be matched at the end
of two blocks before crossjumping is performed on them. This of two blocks before cross-jumping is 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. cross-jumped from are matched. The default value is 5.
@item max-grow-copy-bb-insns @item max-grow-copy-bb-insns
The maximum code size expansion factor when copying basic blocks The maximum code size expansion factor when copying basic blocks
...@@ -8739,13 +8742,14 @@ the original size. ...@@ -8739,13 +8742,14 @@ the original size.
@item large-unit-insns @item large-unit-insns
The limit specifying large translation unit. Growth caused by inlining of The limit specifying large translation unit. Growth caused by inlining of
units larger than this limit is limited by @option{--param inline-unit-growth}. units larger than this limit is limited by @option{--param inline-unit-growth}.
For small units this might be too tight (consider unit consisting of function A For small units this might be too tight.
that is inline and B that just calls A three time. If B is small relative to For example, consider a unit consisting of function A
that is inline and B that just calls A three times. If B is small relative to
A, the growth of unit is 300\% and yet such inlining is very sane. For very A, the growth of unit is 300\% and yet such inlining is very sane. For very
large units consisting of small inlineable functions however the overall unit large units consisting of small inlineable functions, however, the overall unit
growth limit is needed to avoid exponential explosion of code size. Thus for growth limit is needed to avoid exponential explosion of code size. Thus for
smaller units, the size is increased to @option{--param large-unit-insns} smaller units, the size is increased to @option{--param large-unit-insns}
before applying @option{--param inline-unit-growth}. The default is 10000 before applying @option{--param inline-unit-growth}. The default is 10000.
@item inline-unit-growth @item inline-unit-growth
Specifies maximal overall growth of the compilation unit caused by inlining. Specifies maximal overall growth of the compilation unit caused by inlining.
...@@ -8759,7 +8763,7 @@ unit growth to 1.1 times the original size. ...@@ -8759,7 +8763,7 @@ unit growth to 1.1 times the original size.
@item large-stack-frame @item large-stack-frame
The limit specifying large stack frames. While inlining the algorithm is trying The limit specifying large stack frames. While inlining the algorithm is trying
to not grow past this limit too much. Default value is 256 bytes. to not grow past this limit too much. The default value is 256 bytes.
@item large-stack-frame-growth @item large-stack-frame-growth
Specifies maximal growth of large stack frames caused by inlining in percents. Specifies maximal growth of large stack frames caused by inlining in percents.
...@@ -8768,21 +8772,22 @@ the original size. ...@@ -8768,21 +8772,22 @@ the original size.
@item max-inline-insns-recursive @item max-inline-insns-recursive
@itemx max-inline-insns-recursive-auto @itemx max-inline-insns-recursive-auto
Specifies maximum number of instructions out-of-line copy of self recursive inline Specifies the maximum number of instructions an out-of-line copy of a
self-recursive inline
function can grow into by performing recursive inlining. function can grow into by performing recursive inlining.
For functions declared inline @option{--param max-inline-insns-recursive} is For functions declared inline, @option{--param max-inline-insns-recursive} is
taken into account. For function not declared inline, recursive inlining taken into account. For functions not declared inline, recursive inlining
happens only when @option{-finline-functions} (included in @option{-O3}) is happens only when @option{-finline-functions} (included in @option{-O3}) is
enabled and @option{--param max-inline-insns-recursive-auto} is used. The enabled and @option{--param max-inline-insns-recursive-auto} is used. The
default value is 450. default value is 450.
@item max-inline-recursive-depth @item max-inline-recursive-depth
@itemx max-inline-recursive-depth-auto @itemx max-inline-recursive-depth-auto
Specifies maximum recursion depth used by the recursive inlining. Specifies the maximum recursion depth used for recursive inlining.
For functions declared inline @option{--param max-inline-recursive-depth} is For functions declared inline, @option{--param max-inline-recursive-depth} is
taken into account. For function not declared inline, recursive inlining taken into account. For functions not declared inline, recursive inlining
happens only when @option{-finline-functions} (included in @option{-O3}) is happens only when @option{-finline-functions} (included in @option{-O3}) is
enabled and @option{--param max-inline-recursive-depth-auto} is used. The enabled and @option{--param max-inline-recursive-depth-auto} is used. The
default value is 8. default value is 8.
...@@ -8794,20 +8799,21 @@ increasing the prologue size or complexity of function body to other ...@@ -8794,20 +8799,21 @@ increasing the prologue size or complexity of function body to other
optimizers. optimizers.
When profile feedback is available (see @option{-fprofile-generate}) the actual When profile feedback is available (see @option{-fprofile-generate}) the actual
recursion depth can be guessed from probability that function will recurse via recursion depth can be guessed from probability that function recurses via a
given call expression. This parameter limits inlining only to call expression given call expression. This parameter limits inlining only to call expressions
whose probability exceeds given threshold (in percents). The default value is whose probability exceeds the given threshold (in percents).
10. The default value is 10.
@item early-inlining-insns @item early-inlining-insns
Specify growth that early inliner can make. In effect it increases amount of Specify growth that the early inliner can make. In effect it increases
inlining for code having large abstraction penalty. The default value is 10. the amount of inlining for code having a large abstraction penalty.
The default value is 10.
@item max-early-inliner-iterations @item max-early-inliner-iterations
@itemx max-early-inliner-iterations @itemx max-early-inliner-iterations
Limit of iterations of early inliner. This basically bounds number of nested Limit of iterations of the early inliner. This basically bounds
indirect calls early inliner can resolve. Deeper chains are still handled by the number of nested indirect calls the early inliner can resolve.
late inlining. Deeper chains are still handled by late inlining.
@item comdat-sharing-probability @item comdat-sharing-probability
@itemx comdat-sharing-probability @itemx comdat-sharing-probability
...@@ -8815,7 +8821,7 @@ Probability (in percent) that C++ inline function with comdat visibility ...@@ -8815,7 +8821,7 @@ Probability (in percent) that C++ inline function with comdat visibility
are shared across multiple compilation units. The default value is 20. are shared across multiple compilation units. The default value is 20.
@item min-vect-loop-bound @item min-vect-loop-bound
The minimum number of iterations under which a loop is not vectorized The minimum number of iterations under which loops are not vectorized
when @option{-ftree-vectorize} is used. The number of iterations after when @option{-ftree-vectorize} is used. The number of iterations after
vectorization needs to be greater than the value specified by this option vectorization needs to be greater than the value specified by this option
to allow vectorization. The default value is 0. to allow vectorization. The default value is 0.
...@@ -8852,21 +8858,21 @@ The maximum amount of iterations of the pass over the function. This is used to ...@@ -8852,21 +8858,21 @@ The maximum amount of iterations of the pass over the function. This is used to
limit compilation time in tree tail merging. The default value is 2. limit compilation time in tree tail merging. The default value is 2.
@item max-unrolled-insns @item max-unrolled-insns
The maximum number of instructions that a loop should have if that loop The maximum number of instructions that a loop may have to be unrolled.
is unrolled, and if the loop is unrolled, it determines how many times If a loop is unrolled, this parameter also determines how many times
the loop code is unrolled. the loop code is unrolled.
@item max-average-unrolled-insns @item max-average-unrolled-insns
The maximum number of instructions biased by probabilities of their execution The maximum number of instructions biased by probabilities of their execution
that a loop should have if that loop is unrolled, and if the loop is unrolled, that a loop may have to be unrolled. If a loop is unrolled,
it determines how many times the loop code is unrolled. this parameter also determines how many times the loop code is unrolled.
@item max-unroll-times @item max-unroll-times
The maximum number of unrollings of a single loop. The maximum number of unrollings of a single loop.
@item max-peeled-insns @item max-peeled-insns
The maximum number of instructions that a loop should have if that loop The maximum number of instructions that a loop may have to be peeled.
is peeled, and if the loop is peeled, it determines how many times If a loop is peeled, this parameter also determines how many times
the loop code is peeled. the loop code is peeled.
@item max-peel-times @item max-peel-times
...@@ -8891,19 +8897,19 @@ The maximum number of branches unswitched in a single loop. ...@@ -8891,19 +8897,19 @@ The maximum number of branches unswitched in a single loop.
The minimum cost of an expensive expression in the loop invariant motion. The minimum cost of an expensive expression in the loop invariant motion.
@item iv-consider-all-candidates-bound @item iv-consider-all-candidates-bound
Bound on number of candidates for induction variables below that Bound on number of candidates for induction variables, below which
all candidates are considered for each use in induction variable all candidates are considered for each use in induction variable
optimizations. Only the most relevant candidates are considered optimizations. If there are more candidates than this,
if there are more candidates, to avoid quadratic time complexity. only the most relevant ones are considered to avoid quadratic time complexity.
@item iv-max-considered-uses @item iv-max-considered-uses
The induction variable optimizations give up on loops that contain more The induction variable optimizations give up on loops that contain more
induction variable uses. induction variable uses.
@item iv-always-prune-cand-set-bound @item iv-always-prune-cand-set-bound
If number of candidates in the set is smaller than this value, If the number of candidates in the set is smaller than this value,
we always try to remove unnecessary ivs from the set during its always try to remove unnecessary ivs from the set
optimization when a new iv is added to the set. when adding a new one.
@item scev-max-expr-size @item scev-max-expr-size
Bound on size of expressions used in the scalar evolutions analyzer. Bound on size of expressions used in the scalar evolutions analyzer.
...@@ -8952,9 +8958,8 @@ doing loop versioning for alias in the vectorizer. See option ...@@ -8952,9 +8958,8 @@ doing loop versioning for alias in the vectorizer. See option
@option{-ftree-vect-loop-version} for more information. @option{-ftree-vect-loop-version} for more information.
@item max-iterations-to-track @item max-iterations-to-track
The maximum number of iterations of a loop the brute-force algorithm
The maximum number of iterations of a loop the brute force algorithm for analysis of the number of iterations of the loop tries to evaluate.
for analysis of # of iterations of the loop tries to evaluate.
@item hot-bb-count-fraction @item hot-bb-count-fraction
Select fraction of the maximal count of repetitions of basic block in program Select fraction of the maximal count of repetitions of basic block in program
...@@ -9017,10 +9022,12 @@ order to make tracer effective. ...@@ -9017,10 +9022,12 @@ order to make tracer effective.
@item max-cse-path-length @item max-cse-path-length
Maximum number of basic blocks on path that cse considers. The default is 10. The maximum number of basic blocks on path that CSE considers.
The default is 10.
@item max-cse-insns @item max-cse-insns
The maximum instructions CSE process before flushing. The default is 1000. The maximum number of instructions CSE processes before flushing.
The default is 1000.
@item ggc-min-expand @item ggc-min-expand
...@@ -9070,13 +9077,13 @@ increase with probably slightly better performance. The default value is 500. ...@@ -9070,13 +9077,13 @@ increase with probably slightly better performance. The default value is 500.
@item reorder-blocks-duplicate @item reorder-blocks-duplicate
@itemx reorder-blocks-duplicate-feedback @itemx reorder-blocks-duplicate-feedback
Used by basic block reordering pass to decide whether to use unconditional Used by the basic block reordering pass to decide whether to use unconditional
branch or duplicate the code on its destination. Code is duplicated when its branch or duplicate the code on its destination. Code is duplicated when its
estimated size is smaller than this value multiplied by the estimated size of estimated size is smaller than this value multiplied by the estimated size of
unconditional jump in the hot spots of the program. unconditional jump in the hot spots of the program.
The @option{reorder-block-duplicate-feedback} is used only when profile The @option{reorder-block-duplicate-feedback} is used only when profile
feedback is available and may be set to higher values than feedback is available. It may be set to higher values than
@option{reorder-block-duplicate} since information about the hot spots is more @option{reorder-block-duplicate} since information about the hot spots is more
accurate. accurate.
...@@ -9167,7 +9174,7 @@ and 100 for @option{-Os}, @option{-O2}, and @option{-O3}. ...@@ -9167,7 +9174,7 @@ and 100 for @option{-Os}, @option{-O2}, and @option{-O3}.
@item prefetch-latency @item prefetch-latency
Estimate on average number of instructions that are executed before Estimate on average number of instructions that are executed before
prefetch finishes. The distance we prefetch ahead is proportional prefetch finishes. The distance prefetched ahead is proportional
to this constant. Increasing this number may also lead to less to this constant. Increasing this number may also lead to less
streams being prefetched (see @option{simultaneous-prefetches}). streams being prefetched (see @option{simultaneous-prefetches}).
...@@ -9425,7 +9432,7 @@ options instead. ...@@ -9425,7 +9432,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 that GCC does not know how to supply system-specific preprocessor options that GCC does not
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
...@@ -9464,7 +9471,7 @@ contains commas, it is split into multiple options at the commas. ...@@ -9464,7 +9471,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 that GCC does not know how to supply system-specific assembler options that GCC does not
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
...@@ -9548,7 +9555,9 @@ Only the libraries you specify are passed to the linker, and options ...@@ -9548,7 +9555,9 @@ Only the libraries you specify are passed to the linker, and options
specifying linkage of the system libraries, such as @code{-static-libgcc} specifying linkage of the system libraries, such as @code{-static-libgcc}
or @code{-shared-libgcc}, are ignored. or @code{-shared-libgcc}, are ignored.
The standard startup files are used normally, unless @option{-nostartfiles} The standard startup files are used normally, unless @option{-nostartfiles}
is used. The compiler may generate calls to @code{memcmp}, is used.
The compiler may generate calls to @code{memcmp},
@code{memset}, @code{memcpy} and @code{memmove}. @code{memset}, @code{memcpy} and @code{memmove}.
These entries are usually resolved by entries in These entries are usually resolved by entries in
libc. These entry points should be supplied through some other libc. These entry points should be supplied through some other
...@@ -9631,7 +9640,7 @@ is innocuous.} ...@@ -9631,7 +9640,7 @@ is innocuous.}
@opindex shared-libgcc @opindex shared-libgcc
@opindex static-libgcc @opindex static-libgcc
On systems that provide @file{libgcc} as a shared library, these options On systems that provide @file{libgcc} as a shared library, these options
force the use of either the shared or static version respectively. force the use of either the shared or static version, respectively.
If no shared version of @file{libgcc} was built when the compiler was If no shared version of @file{libgcc} was built when the compiler was
configured, these options have no effect. configured, these options have no effect.
...@@ -9948,7 +9957,7 @@ passed to the program @samp{z-compile}, which should be invoked with the ...@@ -9948,7 +9957,7 @@ passed to the program @samp{z-compile}, which should be invoked with the
command-line switch @option{-input} and with the result of performing the command-line switch @option{-input} and with the result of performing the
@samp{%i} substitution. (See below.) @samp{%i} substitution. (See below.)
As an alternative to providing a spec string, the text that follows a As an alternative to providing a spec string, the text following a
suffix directive can be one of the following: suffix directive can be one of the following:
@table @code @table @code
...@@ -10542,8 +10551,8 @@ That allows code to run on hardware variants that lack these registers. ...@@ -10542,8 +10551,8 @@ That allows code to run on hardware variants that lack these registers.
@item -mprefer-short-insn-regs @item -mprefer-short-insn-regs
@opindex mprefer-short-insn-regs @opindex mprefer-short-insn-regs
Preferrentially allocate registers that allow short instruction generation. Preferrentially allocate registers that allow short instruction generation.
This can result in increasesd instruction count, so if this reduces or This can result in increased instruction count, so this may either reduce or
increases code size might vary from case to case. increase overall code size.
@item -mbranch-cost=@var{num} @item -mbranch-cost=@var{num}
@opindex mbranch-cost @opindex mbranch-cost
...@@ -10557,7 +10566,7 @@ Enable the generation of conditional moves. ...@@ -10557,7 +10566,7 @@ Enable the generation of conditional moves.
@item -mnops=@var{num} @item -mnops=@var{num}
@opindex mnops @opindex mnops
Emit @var{num} nops before every other generated instruction. Emit @var{num} NOPs before every other generated instruction.
@item -mno-soft-cmpsf @item -mno-soft-cmpsf
@opindex mno-soft-cmpsf @opindex mno-soft-cmpsf
...@@ -10571,10 +10580,10 @@ software comparisons. ...@@ -10571,10 +10580,10 @@ software comparisons.
@item -mstack-offset=@var{num} @item -mstack-offset=@var{num}
@opindex mstack-offset @opindex mstack-offset
Set the offset between the top of the stack and the stack pointer. Set the offset between the top of the stack and the stack pointer.
E.g., a value of 8 means that the eight bytes in the range sp+0@dots{}sp+7 E.g., a value of 8 means that the eight bytes in the range @code{sp+0@dots{}sp+7}
can be used by leaf functions without stack allocation. can be used by leaf functions without stack allocation.
Values other than @samp{8} or @samp{16} are untested and unlikely to work. Values other than @samp{8} or @samp{16} are untested and unlikely to work.
Note also that this option changes the ABI, compiling a program with a Note also that this option changes the ABI; compiling a program with a
different stack offset than the libraries have been compiled with different stack offset than the libraries have been compiled with
generally does not work. generally does not work.
This option can be useful if you want to evaluate if a different stack This option can be useful if you want to evaluate if a different stack
...@@ -10728,13 +10737,13 @@ Pass floating-point arguments using the floating-point registers. This is ...@@ -10728,13 +10737,13 @@ Pass floating-point arguments using the floating-point registers. This is
one of the variants of the APCS@. This option is recommended if the one of the variants of the APCS@. This option is recommended if the
target hardware has a floating-point unit or if a lot of floating-point target hardware has a floating-point unit or if a lot of floating-point
arithmetic is going to be performed by the code. The default is arithmetic is going to be performed by the code. The default is
@option{-mno-apcs-float}, since integer only code is slightly increased in @option{-mno-apcs-float}, since the size of integer-only code is
size if @option{-mapcs-float} is used. slightly increased if @option{-mapcs-float} is used.
@c not currently implemented @c not currently implemented
@item -mapcs-reentrant @item -mapcs-reentrant
@opindex mapcs-reentrant @opindex mapcs-reentrant
Generate reentrant, position independent code. The default is Generate reentrant, position-independent code. The default is
@option{-mno-apcs-reentrant}. @option{-mno-apcs-reentrant}.
@end ignore @end ignore
...@@ -10909,7 +10918,7 @@ and 64. The default value varies for different toolchains. For the COFF ...@@ -10909,7 +10918,7 @@ and 64. The default value varies for different toolchains. For the COFF
targeted toolchain the default value is 8. A value of 64 is only allowed targeted toolchain the default value is 8. A value of 64 is only allowed
if the underlying ABI supports it. if the underlying ABI supports it.
Specifying the larger number can produce faster, more efficient code, but Specifying a larger number can produce faster, more efficient code, but
can also increase the size of the program. Different values are potentially can also increase the size of the program. Different values are potentially
incompatible. Code compiled with one value cannot necessarily expect to incompatible. Code compiled with one value cannot necessarily expect to
work with code or libraries compiled with another value, if they exchange work with code or libraries compiled with another value, if they exchange
...@@ -11504,6 +11513,7 @@ can be one of @samp{bf512}, @samp{bf514}, @samp{bf516}, @samp{bf518}, ...@@ -11504,6 +11513,7 @@ can be one of @samp{bf512}, @samp{bf514}, @samp{bf516}, @samp{bf518},
@samp{bf542}, @samp{bf544}, @samp{bf547}, @samp{bf548}, @samp{bf549}, @samp{bf542}, @samp{bf544}, @samp{bf547}, @samp{bf548}, @samp{bf549},
@samp{bf542m}, @samp{bf544m}, @samp{bf547m}, @samp{bf548m}, @samp{bf549m}, @samp{bf542m}, @samp{bf544m}, @samp{bf547m}, @samp{bf548m}, @samp{bf549m},
@samp{bf561}, @samp{bf592}. @samp{bf561}, @samp{bf592}.
The optional @var{sirevision} specifies the silicon revision of the target The optional @var{sirevision} specifies the silicon revision of the target
Blackfin processor. Any workarounds available for the targeted silicon revision Blackfin processor. Any workarounds available for the targeted silicon revision
are enabled. If @var{sirevision} is @samp{none}, no workarounds are enabled. are enabled. If @var{sirevision} is @samp{none}, no workarounds are enabled.
...@@ -11516,13 +11526,15 @@ is not defined. If @var{sirevision} is @samp{any}, the ...@@ -11516,13 +11526,15 @@ is not defined. If @var{sirevision} is @samp{any}, the
If this optional @var{sirevision} is not used, GCC assumes the latest known If this optional @var{sirevision} is not used, GCC assumes the latest known
silicon revision of the targeted Blackfin processor. silicon revision of the targeted Blackfin processor.
Support for @samp{bf561} is incomplete. For @samp{bf561}, GCC defines a preprocessor macro for the specified @var{cpu}.
Only the processor macro is defined. For the @samp{bfin-elf} toolchain, this option causes the hardware BSP
Without this option, @samp{bf532} is used as the processor by default.
The corresponding predefined processor macros for @var{cpu} is to
be defined. And for @samp{bfin-elf} toolchain, this causes the hardware BSP
provided by libgloss to be linked in if @option{-msim} is not given. provided by libgloss to be linked in if @option{-msim} is not given.
Without this option, @samp{bf532} is used as the processor by default.
Note that support for @samp{bf561} is incomplete. For @samp{bf561},
only the preprocessor macro is defined.
@item -msim @item -msim
@opindex msim @opindex msim
Specifies that the program will be run on the simulator. This causes Specifies that the program will be run on the simulator. This causes
...@@ -11583,7 +11595,7 @@ With a @samp{bfin-elf} target, this option implies @option{-msim}. ...@@ -11583,7 +11595,7 @@ With a @samp{bfin-elf} target, this option implies @option{-msim}.
@item -mno-id-shared-library @item -mno-id-shared-library
@opindex mno-id-shared-library @opindex mno-id-shared-library
Generate code that doesn't assume ID based shared libraries are being used. Generate code that doesn't assume ID-based shared libraries are being used.
This is the default. This is the default.
@item -mleaf-id-shared-library @item -mleaf-id-shared-library
...@@ -11645,40 +11657,43 @@ not known to bind locally. It has no effect without @option{-mfdpic}. ...@@ -11645,40 +11657,43 @@ not known to bind locally. It has no effect without @option{-mfdpic}.
@item -mmulticore @item -mmulticore
@opindex mmulticore @opindex mmulticore
Build standalone application for multicore Blackfin processor. Proper Build a standalone application for multicore Blackfin processors.
start files and link scripts are used to support multicore. This option causes proper start files and link scripts supporting
This option defines @code{__BFIN_MULTICORE}. It can only be used with multicore to be used, and defines the macro @code{__BFIN_MULTICORE}.
@option{-mcpu=bf561@r{[}-@var{sirevision}@r{]}}. It can be used with It can only be used with @option{-mcpu=bf561@r{[}-@var{sirevision}@r{]}}.
@option{-mcorea} or @option{-mcoreb}. If it's used without
@option{-mcorea} or @option{-mcoreb}, single application/dual core This option can be used with @option{-mcorea} or @option{-mcoreb}, which
selects the one-application-per-core programming model. Without
@option{-mcorea} or @option{-mcoreb}, the single-application/dual-core
programming model is used. In this model, the main function of Core B programming model is used. In this model, the main function of Core B
should be named as coreb_main. If it's used with @option{-mcorea} or should be named as @code{coreb_main}.
@option{-mcoreb}, one application per core programming model is used.
If this option is not used, single core application programming If this option is not used, the single-core application programming
model is used. model is used.
@item -mcorea @item -mcorea
@opindex mcorea @opindex mcorea
Build standalone application for Core A of BF561 when using Build a standalone application for Core A of BF561 when using
one application per core programming model. Proper start files the one-application-per-core programming model. Proper start files
and link scripts are used to support Core A. This option and link scripts are used to support Core A, and the macro
defines @code{__BFIN_COREA}. It must be used with @option{-mmulticore}. @code{__BFIN_COREA} is defined.
This option can only be used in conjunction with @option{-mmulticore}.
@item -mcoreb @item -mcoreb
@opindex mcoreb @opindex mcoreb
Build standalone application for Core B of BF561 when using Build a standalone application for Core B of BF561 when using
one application per core programming model. Proper start files the one-application-per-core programming model. Proper start files
and link scripts are used to support Core B. This option and link scripts are used to support Core B, and the macro
defines @code{__BFIN_COREB}. When this option is used, coreb_main @code{__BFIN_COREB} is defined. When this option is used, @code{coreb_main}
should be used instead of main. It must be used with should be used instead of @code{main}.
@option{-mmulticore}. This option can only be used in conjunction with @option{-mmulticore}.
@item -msdram @item -msdram
@opindex msdram @opindex msdram
Build standalone application for SDRAM. Proper start files and Build a standalone application for SDRAM. Proper start files and
link scripts are used to put the application into SDRAM. link scripts are used to put the application into SDRAM, and the macro
Loader should initialize SDRAM before loading the application @code{__BFIN_SDRAM} is defined.
into SDRAM. This option defines @code{__BFIN_SDRAM}. The loader should initialize SDRAM before loading the application.
@item -micplb @item -micplb
@opindex micplb @opindex micplb
...@@ -11722,7 +11737,7 @@ pieces of data are @samp{.fardata}, @samp{.far} and @samp{.const}. ...@@ -11722,7 +11737,7 @@ pieces of data are @samp{.fardata}, @samp{.far} and @samp{.const}.
@item -msdata=all @item -msdata=all
@opindex msdata=all @opindex msdata=all
Put all data, not just small objets, into the sections reserved for Put all data, not just small objects, into the sections reserved for
small data, and use addressing relative to the @code{B14} register to small data, and use addressing relative to the @code{B14} register to
access them. access them.
...@@ -11780,7 +11795,7 @@ models where it applies. This option is active by default. ...@@ -11780,7 +11795,7 @@ models where it applies. This option is active by default.
@item -mpdebug @item -mpdebug
@opindex mpdebug @opindex mpdebug
Enable CRIS-specific verbose debug-related information in the assembly Enable CRIS-specific verbose debug-related information in the assembly
code. This option also has the effect to turn off the @samp{#NO_APP} code. This option also has the effect of turning off the @samp{#NO_APP}
formatted-code indicator to the assembler at the beginning of the formatted-code indicator to the assembler at the beginning of the
assembly file. assembly file.
...@@ -11791,7 +11806,7 @@ compare and test instructions before use of condition codes. ...@@ -11791,7 +11806,7 @@ compare and test instructions before use of condition codes.
@item -mno-side-effects @item -mno-side-effects
@opindex mno-side-effects @opindex mno-side-effects
Do not emit instructions with side-effects in addressing modes other than Do not emit instructions with side effects in addressing modes other than
post-increment. post-increment.
@item -mstack-align @item -mstack-align
...@@ -11806,8 +11821,8 @@ post-increment. ...@@ -11806,8 +11821,8 @@ post-increment.
@opindex mno-data-align @opindex mno-data-align
@opindex mconst-align @opindex mconst-align
@opindex mno-const-align @opindex mno-const-align
These options (no-options) arranges (eliminate arrangements) for the These options (@samp{no-} options) arrange (eliminate arrangements) for the
stack-frame, individual data and constants to be aligned for the maximum stack frame, individual data and constants to be aligned for the maximum
single data access size for the chosen CPU model. The default is to single data access size for the chosen CPU model. The default is to
arrange for 32-bit alignment. ABI details such as structure layout are arrange for 32-bit alignment. ABI details such as structure layout are
not affected by these options. not affected by these options.
...@@ -11819,7 +11834,7 @@ not affected by these options. ...@@ -11819,7 +11834,7 @@ not affected by these options.
@opindex m16-bit @opindex m16-bit
@opindex m8-bit @opindex m8-bit
Similar to the stack- data- and const-align options above, these options Similar to the stack- data- and const-align options above, these options
arrange for stack-frame, writable data and constants to all be 32-bit, arrange for stack frame, writable data and constants to all be 32-bit,
16-bit or 8-bit aligned. The default is 32-bit alignment. 16-bit or 8-bit aligned. The default is 32-bit alignment.
@item -mno-prologue-epilogue @item -mno-prologue-epilogue
...@@ -11831,7 +11846,7 @@ epilogue which set up the stack frame are omitted and no return ...@@ -11831,7 +11846,7 @@ 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,
or storage for local variable needs to be allocated. or storage for local variables needs to be allocated.
@item -mno-gotplt @item -mno-gotplt
@itemx -mgotplt @itemx -mgotplt
...@@ -11853,7 +11868,7 @@ Legacy no-op option only recognized with the cris-axis-linux-gnu target. ...@@ -11853,7 +11868,7 @@ Legacy no-op option only recognized with the cris-axis-linux-gnu target.
@item -sim @item -sim
@opindex sim @opindex sim
This option, recognized for the cris-axis-elf arranges This option, recognized for the cris-axis-elf, arranges
to link with input-output functions from a simulator library. Code, to link with input-output functions from a simulator library. Code,
initialized data and zero-initialized data are allocated consecutively. initialized data and zero-initialized data are allocated consecutively.
...@@ -12019,8 +12034,8 @@ switch to conform to a non-default data model. ...@@ -12019,8 +12034,8 @@ switch to conform to a non-default data model.
@opindex mfix-and-continue @opindex mfix-and-continue
@opindex ffix-and-continue @opindex ffix-and-continue
@opindex findirect-data @opindex findirect-data
Generate code suitable for fast turn around development. Needed to Generate code suitable for fast turnaround development, such as to
enable GDB to dynamically load @code{.o} files into already running allow GDB to dynamically load @code{.o} files into already-running
programs. @option{-findirect-data} and @option{-ffix-and-continue} programs. @option{-findirect-data} and @option{-ffix-and-continue}
are provided for backwards compatibility. are provided for backwards compatibility.
...@@ -12676,9 +12691,9 @@ within the 32-bit address space. ...@@ -12676,9 +12691,9 @@ within the 32-bit address space.
@item -malign-labels @item -malign-labels
@opindex malign-labels @opindex malign-labels
Try to align labels to an 8-byte boundary by inserting nops into the Try to align labels to an 8-byte boundary by inserting NOPs into the
previous packet. This option only has an effect when VLIW packing previous packet. This option only has an effect when VLIW packing
is enabled. It doesn't create new packets; it merely adds nops to is enabled. It doesn't create new packets; it merely adds NOPs to
existing ones. existing ones.
@item -mlibrary-pic @item -mlibrary-pic
...@@ -12812,7 +12827,7 @@ in a future version. ...@@ -12812,7 +12827,7 @@ in a future version.
@opindex moptimize-membar @opindex moptimize-membar
This switch removes redundant @code{membar} instructions from the This switch removes redundant @code{membar} instructions from the
compiler generated code. It is enabled by default. compiler-generated code. It is enabled by default.
@item -mno-optimize-membar @item -mno-optimize-membar
@opindex mno-optimize-membar @opindex mno-optimize-membar
...@@ -12961,7 +12976,7 @@ Synonyms for @option{-march=1.0}, @option{-march=1.1}, and @option{-march=2.0} r ...@@ -12961,7 +12976,7 @@ Synonyms for @option{-march=1.0}, @option{-march=1.1}, and @option{-march=2.0} r
@item -mbig-switch @item -mbig-switch
@opindex mbig-switch @opindex mbig-switch
Generate code suitable for big switch tables. Use this option only if Generate code suitable for big switch tables. Use this option only if
the assembler/linker complain about out of range branches within a switch the assembler/linker complain about out-of-range branches within a switch
table. table.
@item -mjump-in-delay @item -mjump-in-delay
...@@ -13000,7 +13015,7 @@ functions. ...@@ -13000,7 +13015,7 @@ functions.
@item -mfixed-range=@var{register-range} @item -mfixed-range=@var{register-range}
@opindex mfixed-range @opindex mfixed-range
Generate code treating the given register range as fixed registers. Generate code treating the given register range as fixed registers.
A fixed register is one that the register allocator can not use. This is A fixed register is one that the register allocator cannot use. This is
useful when compiling kernel code. A register range is specified as useful when compiling kernel code. A register range is specified as
two registers separated by a dash. Multiple register ranges can be two registers separated by a dash. Multiple register ranges can be
specified separated by a comma. specified separated by a comma.
...@@ -14476,7 +14491,7 @@ be scheduled. ...@@ -14476,7 +14491,7 @@ be scheduled.
@subsection LM32 Options @subsection LM32 Options
@cindex LM32 options @cindex LM32 options
These @option{-m} options are defined for the Lattice Mico32 architecture: These @option{-m} options are defined for the LatticeMico32 architecture:
@table @gcctabopt @table @gcctabopt
@item -mbarrel-shift-enabled @item -mbarrel-shift-enabled
...@@ -14529,8 +14544,7 @@ registers, so there is a tradeoff between GCC's ability to fit the ...@@ -14529,8 +14544,7 @@ registers, so there is a tradeoff between GCC's ability to fit the
code into available registers, and the performance penalty of using code into available registers, and the performance penalty of using
memory instead of registers. Note that all modules in a program must memory instead of registers. Note that all modules in a program must
be compiled with the same value for this option. Because of that, you be compiled with the same value for this option. Because of that, you
must not use this option with the default runtime libraries gcc must not use this option with GCC's default runtime libraries.
builds.
@end table @end table
...@@ -14602,7 +14616,7 @@ special instructions to reference them. ...@@ -14602,7 +14616,7 @@ special instructions to reference them.
@opindex G @opindex G
@cindex smaller data references @cindex smaller data references
Put global and static objects less than or equal to @var{num} bytes Put global and static objects less than or equal to @var{num} bytes
into the small data or bss sections instead of the normal data or bss into the small data or BSS sections instead of the normal data or BSS
sections. The default value of @var{num} is 8. sections. The default value of @var{num} is 8.
The @option{-msdata} option must be set to one of @samp{sdata} or @samp{use} The @option{-msdata} option must be set to one of @samp{sdata} or @samp{use}
for this option to have any effect. for this option to have any effect.
...@@ -14614,7 +14628,7 @@ generated. ...@@ -14614,7 +14628,7 @@ generated.
@item -mdebug @item -mdebug
@opindex mdebug @opindex mdebug
Makes the M32R specific code in the compiler display some statistics Makes the M32R-specific code in the compiler display some statistics
that might help in debugging programs. that might help in debugging programs.
@item -malign-loops @item -malign-loops
...@@ -14729,7 +14743,7 @@ where the value of @var{family} is given by the table above. ...@@ -14729,7 +14743,7 @@ where the value of @var{family} is given by the table above.
@item -mtune=@var{tune} @item -mtune=@var{tune}
@opindex mtune @opindex mtune
Tune the code for a particular microarchitecture, within the Tune the code for a particular microarchitecture within the
constraints set by @option{-march} and @option{-mcpu}. constraints set by @option{-march} and @option{-mcpu}.
The M680x0 microarchitectures are: @samp{68000}, @samp{68010}, The M680x0 microarchitectures are: @samp{68000}, @samp{68010},
@samp{68020}, @samp{68030}, @samp{68040}, @samp{68060} @samp{68020}, @samp{68030}, @samp{68040}, @samp{68060}
...@@ -14982,7 +14996,7 @@ the system. ...@@ -14982,7 +14996,7 @@ the system.
@item -msep-data @item -msep-data
Generate code that allows the data segment to be located in a different Generate code that allows the data segment to be located in a different
area of memory from the text segment. This allows for execute in place in area of memory from the text segment. This allows for execute-in-place in
an environment without virtual memory management. This option implies an environment without virtual memory management. This option implies
@option{-fPIC}. @option{-fPIC}.
...@@ -14992,11 +15006,11 @@ This is the default. ...@@ -14992,11 +15006,11 @@ This is the default.
@item -mid-shared-library @item -mid-shared-library
Generate code that supports shared libraries via the library ID method. Generate code that supports shared libraries via the library ID method.
This allows for execute in place and shared libraries in an environment This allows for execute-in-place and shared libraries in an environment
without virtual memory management. This option implies @option{-fPIC}. without virtual memory management. This option implies @option{-fPIC}.
@item -mno-id-shared-library @item -mno-id-shared-library
Generate code that doesn't assume ID based shared libraries are being used. Generate code that doesn't assume ID-based shared libraries are being used.
This is the default. This is the default.
@item -mshared-library-id=n @item -mshared-library-id=n
...@@ -15065,13 +15079,13 @@ Use the divide instruction. (Enabled by default). ...@@ -15065,13 +15079,13 @@ Use the divide instruction. (Enabled by default).
@itemx -mno-relax-immediate @itemx -mno-relax-immediate
@opindex mrelax-immediate @opindex mrelax-immediate
@opindex mno-relax-immediate @opindex mno-relax-immediate
Allow arbitrary sized immediates in bit operations. Allow arbitrary-sized immediates in bit operations.
@item -mwide-bitfields @item -mwide-bitfields
@itemx -mno-wide-bitfields @itemx -mno-wide-bitfields
@opindex mwide-bitfields @opindex mwide-bitfields
@opindex mno-wide-bitfields @opindex mno-wide-bitfields
Always treat bit-fields as int-sized. Always treat bit-fields as @code{int}-sized.
@item -m4byte-functions @item -m4byte-functions
@itemx -mno-4byte-functions @itemx -mno-4byte-functions
...@@ -15166,7 +15180,7 @@ useful unless you also provide @code{-mminmax}. ...@@ -15166,7 +15180,7 @@ useful unless you also provide @code{-mminmax}.
@item -mconfig=@var{name} @item -mconfig=@var{name}
@opindex mconfig= @opindex mconfig=
Selects one of the build-in core configurations. Each MeP chip has Selects one of the built-in core configurations. Each MeP chip has
one or more modules in it; each module has a core CPU and a variety of one or more modules in it; each module has a core CPU and a variety of
coprocessors, optional instructions, and peripherals. The coprocessors, optional instructions, and peripherals. The
@code{MeP-Integrator} tool, not part of GCC, provides these @code{MeP-Integrator} tool, not part of GCC, provides these
...@@ -15305,7 +15319,7 @@ This option is deprecated. Use @option{-fno-zero-initialized-in-bss} instead. ...@@ -15305,7 +15319,7 @@ This option is deprecated. Use @option{-fno-zero-initialized-in-bss} instead.
@item -mcpu=@var{cpu-type} @item -mcpu=@var{cpu-type}
@opindex mcpu= @opindex mcpu=
Use features of and schedule code for given CPU. Use features of, and schedule code for, the given CPU.
Supported values are in the format @samp{v@var{X}.@var{YY}.@var{Z}}, Supported values are in the format @samp{v@var{X}.@var{YY}.@var{Z}},
where @var{X} is a major version, @var{YY} is the minor version, and where @var{X} is a major version, @var{YY} is the minor version, and
@var{Z} is compatibility code. Example values are @samp{v3.00.a}, @var{Z} is compatibility code. Example values are @samp{v3.00.a},
...@@ -15360,7 +15374,7 @@ normal executable (default), uses startup code @file{crt0.o}. ...@@ -15360,7 +15374,7 @@ normal executable (default), uses startup code @file{crt0.o}.
@item xmdstub @item xmdstub
for use with Xilinx Microprocessor Debugger (XMD) based for use with Xilinx Microprocessor Debugger (XMD) based
software intrusive debug agent called xmdstub. This uses startup file software intrusive debug agent called xmdstub. This uses startup file
@file{crt1.o} and sets the start address of the program to be 0x800. @file{crt1.o} and sets the start address of the program to 0x800.
@item bootstrap @item bootstrap
for applications that are loaded using a bootloader. for applications that are loaded using a bootloader.
...@@ -15791,8 +15805,8 @@ to generate shorter and faster references to symbolic addresses. ...@@ -15791,8 +15805,8 @@ to generate shorter and faster references to symbolic addresses.
@item -G @var{num} @item -G @var{num}
@opindex G @opindex G
Put definitions of externally-visible data in a small data section Put definitions of externally-visible data in a small data section
if that data is no bigger than @var{num} bytes. GCC can then access if that data is no bigger than @var{num} bytes. GCC can then generate
the data more efficiently; see @option{-mgpopt} for details. more efficient accesses to the data; see @option{-mgpopt} for details.
The default @option{-G} option depends on the configuration. The default @option{-G} option depends on the configuration.
...@@ -16049,7 +16063,7 @@ The workarounds for the division errata rely on special functions in ...@@ -16049,7 +16063,7 @@ The workarounds for the division errata rely on special functions in
@file{libgcc.a}. At present, these functions are only provided by @file{libgcc.a}. At present, these functions are only provided by
the @code{mips64vr*-elf} configurations. the @code{mips64vr*-elf} configurations.
Other VR4120 errata require a nop to be inserted between certain pairs of Other VR4120 errata require a NOP to be inserted between certain pairs of
instructions. These errata are handled by the assembler, not by GCC itself. instructions. These errata are handled by the assembler, not by GCC itself.
@item -mfix-vr4130 @item -mfix-vr4130
...@@ -16213,7 +16227,7 @@ resolve the destination at link-time and if the destination is within ...@@ -16213,7 +16227,7 @@ resolve the destination at link-time and if the destination is within
range for a direct call. range for a direct call.
@option{-mrelax-pic-calls} is the default if GCC was configured to use @option{-mrelax-pic-calls} is the default if GCC was configured to use
an assembler and a linker that supports the @code{.reloc} assembly an assembler and a linker that support the @code{.reloc} assembly
directive and @code{-mexplicit-relocs} is in effect. With directive and @code{-mexplicit-relocs} is in effect. With
@code{-mno-explicit-relocs}, this optimization can be performed by the @code{-mno-explicit-relocs}, this optimization can be performed by the
assembler and the linker alone without help from the compiler. assembler and the linker alone without help from the compiler.
...@@ -16769,11 +16783,11 @@ Generate VRSAVE instructions when generating AltiVec code. ...@@ -16769,11 +16783,11 @@ Generate VRSAVE instructions when generating AltiVec code.
@item -mgen-cell-microcode @item -mgen-cell-microcode
@opindex mgen-cell-microcode @opindex mgen-cell-microcode
Generate Cell microcode instructions Generate Cell microcode instructions.
@item -mwarn-cell-microcode @item -mwarn-cell-microcode
@opindex mwarn-cell-microcode @opindex mwarn-cell-microcode
Warning when a Cell microcode instruction is going to emitted. An example Warn when a Cell microcode instruction is emitted. An example
of a Cell microcode instruction is a variable shift. of a Cell microcode instruction is a variable shift.
@item -msecure-plt @item -msecure-plt
...@@ -17195,7 +17209,7 @@ separate groups. Insert @var{number} NOPs to force an insn to a new group. ...@@ -17195,7 +17209,7 @@ separate groups. Insert @var{number} NOPs to force an insn to a new group.
@item -mcall-sysv @item -mcall-sysv
@opindex mcall-sysv @opindex mcall-sysv
On System V.4 and embedded PowerPC systems compile code using calling On System V.4 and embedded PowerPC systems compile code using calling
conventions that adheres to the March 1995 draft of the System V conventions that adhere to the March 1995 draft of the System V
Application Binary Interface, PowerPC processor supplement. This is the Application Binary Interface, PowerPC processor supplement. This is the
default unless you configured GCC using @samp{powerpc-*-eabiaix}. default unless you configured GCC using @samp{powerpc-*-eabiaix}.
...@@ -17257,7 +17271,7 @@ ABI@. ...@@ -17257,7 +17271,7 @@ ABI@.
@item -mabi=no-spe @item -mabi=no-spe
@opindex mabi=no-spe @opindex mabi=no-spe
Disable Booke SPE ABI extensions for the current ABI@. Disable Book-E SPE ABI extensions for the current ABI@.
@item -mabi=ibmlongdouble @item -mabi=ibmlongdouble
@opindex mabi=ibmlongdouble @opindex mabi=ibmlongdouble
...@@ -17275,7 +17289,7 @@ This is a PowerPC 32-bit Linux ABI option. ...@@ -17275,7 +17289,7 @@ This is a PowerPC 32-bit Linux ABI option.
@opindex mno-prototype @opindex mno-prototype
On System V.4 and embedded PowerPC systems assume that all calls to On System V.4 and embedded PowerPC systems assume that all calls to
variable argument functions are properly prototyped. Otherwise, the variable argument functions are properly prototyped. Otherwise, the
compiler must insert an instruction before every non prototyped call to compiler must insert an instruction before every non-prototyped call to
set or clear bit 6 of the condition code register (@var{CR}) to set or clear bit 6 of the condition code register (@var{CR}) to
indicate whether floating-point values are passed in the floating-point indicate whether floating-point values are passed in the floating-point
registers in case the function takes variable arguments. With registers in case the function takes variable arguments. With
...@@ -17322,14 +17336,14 @@ header to indicate that @samp{eabi} extended relocations are used. ...@@ -17322,14 +17336,14 @@ header to indicate that @samp{eabi} extended relocations are used.
@opindex meabi @opindex meabi
@opindex mno-eabi @opindex mno-eabi
On System V.4 and embedded PowerPC systems do (do not) adhere to the On System V.4 and embedded PowerPC systems do (do not) adhere to the
Embedded Applications Binary Interface (eabi) which is a set of Embedded Applications Binary Interface (EABI), which is a set of
modifications to the System V.4 specifications. Selecting @option{-meabi} modifications to the System V.4 specifications. Selecting @option{-meabi}
means that the stack is aligned to an 8-byte boundary, a function means that the stack is aligned to an 8-byte boundary, a function
@code{__eabi} is called to from @code{main} to set up the eabi @code{__eabi} is called from @code{main} to set up the EABI
environment, and the @option{-msdata} option can use both @code{r2} and environment, and the @option{-msdata} option can use both @code{r2} and
@code{r13} to point to two separate small data areas. Selecting @code{r13} to point to two separate small data areas. Selecting
@option{-mno-eabi} means that the stack is aligned to a 16-byte boundary, @option{-mno-eabi} means that the stack is aligned to a 16-byte boundary,
do not call an initialization function from @code{main}, and the no EABI initialization function is called from @code{main}, and the
@option{-msdata} option only uses @code{r13} to point to a single @option{-msdata} option only uses @code{r13} to point to a single
small data area. The @option{-meabi} option is on by default if you small data area. The @option{-meabi} option is on by default if you
configured GCC using one of the @samp{powerpc*-*-eabi*} options. configured GCC using one of the @samp{powerpc*-*-eabi*} options.
...@@ -17391,8 +17405,8 @@ targets. The default value is target-specific. ...@@ -17391,8 +17405,8 @@ targets. The default value is target-specific.
@cindex smaller data references (PowerPC) @cindex smaller data references (PowerPC)
@cindex .sdata/.sdata2 references (PowerPC) @cindex .sdata/.sdata2 references (PowerPC)
On embedded PowerPC systems, put global and static items less than or On embedded PowerPC systems, put global and static items less than or
equal to @var{num} bytes into the small data or bss sections instead of equal to @var{num} bytes into the small data or BSS sections instead of
the normal data or bss section. By default, @var{num} is 8. The the normal data or BSS section. By default, @var{num} is 8. The
@option{-G @var{num}} switch is also passed to the linker. @option{-G @var{num}} switch is also passed to the linker.
All modules should be compiled with the same @option{-G @var{num}} value. All modules should be compiled with the same @option{-G @var{num}} value.
...@@ -17407,9 +17421,9 @@ names in the assembly language output using symbolic forms. ...@@ -17407,9 +17421,9 @@ names in the assembly language output using symbolic forms.
@itemx -mno-longcall @itemx -mno-longcall
@opindex mlongcall @opindex mlongcall
@opindex mno-longcall @opindex mno-longcall
By default assume that all calls are far away so that a longer more By default assume that all calls are far away so that a longer and more
expensive calling sequence is required. This is required for calls expensive calling sequence is required. This is required for calls
further than 32 megabytes (33,554,432 bytes) from the current location. farther than 32 megabytes (33,554,432 bytes) from the current location.
A short call is generated if the compiler knows A short call is generated if the compiler knows
the call cannot be that far away. This setting can be overridden by the call cannot be that far away. This setting can be overridden by
the @code{shortcall} function attribute, or by @code{#pragma the @code{shortcall} function attribute, or by @code{#pragma
...@@ -17466,13 +17480,13 @@ least @option{-funsafe-math-optimizations}, ...@@ -17466,13 +17480,13 @@ least @option{-funsafe-math-optimizations},
@option{-fno-trapping-math}). Note that while the throughput of the @option{-fno-trapping-math}). Note that while the throughput of the
sequence is generally higher than the throughput of the non-reciprocal sequence is generally higher than the throughput of the non-reciprocal
instruction, the precision of the sequence can be decreased by up to 2 instruction, the precision of the sequence can be decreased by up to 2
ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square ulp (i.e.@: the inverse of 1.0 equals 0.99999994) for reciprocal square
roots. 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 controls which reciprocal estimate instructions
may be used. @var{opt} is a comma separated list of options, which 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},
...@@ -17638,8 +17652,8 @@ actual register to hold the small data area pointer is chosen. ...@@ -17638,8 +17652,8 @@ actual register to hold the small data area pointer is chosen.
@itemx -mno-sim @itemx -mno-sim
@opindex msim @opindex msim
@opindex mno-sim @opindex mno-sim
Use the simulator runtime. The default is to use the libgloss board Use the simulator runtime. The default is to use the libgloss
specific runtime. board-specific runtime.
@item -mas100-syntax @item -mas100-syntax
@itemx -mno-as100-syntax @itemx -mno-as100-syntax
...@@ -17647,8 +17661,7 @@ specific runtime. ...@@ -17647,8 +17661,7 @@ specific runtime.
@opindex mno-as100-syntax @opindex mno-as100-syntax
When generating assembler output use a syntax that is compatible with When generating assembler output use a syntax that is compatible with
Renesas's AS100 assembler. This syntax can also be handled by the GAS Renesas's AS100 assembler. This syntax can also be handled by the GAS
assembler but it has some restrictions so generating it is not the assembler, but it has some restrictions so it is not generated by default.
default option.
@item -mmax-constant-size=@var{N} @item -mmax-constant-size=@var{N}
@opindex mmax-constant-size @opindex mmax-constant-size
...@@ -17912,14 +17925,14 @@ arrays. This is generally a bad idea with a limited stack size. ...@@ -17912,14 +17925,14 @@ arrays. This is generally a bad idea with a limited stack size.
@itemx -mstack-size=@var{stack-size} @itemx -mstack-size=@var{stack-size}
@opindex mstack-guard @opindex mstack-guard
@opindex mstack-size @opindex mstack-size
If these options are provided the s390 back end emits additional instructions in If these options are provided the S/390 back end emits additional instructions in
the function prologue which trigger a trap if the stack size is @var{stack-guard} the function prologue that trigger a trap if the stack size is @var{stack-guard}
bytes above the @var{stack-size} (remember that the stack on s390 grows downward). bytes above the @var{stack-size} (remember that the stack on S/390 grows downward).
If the @var{stack-guard} option is omitted the smallest power of 2 larger than If the @var{stack-guard} option is omitted the smallest power of 2 larger than
the frame size of the compiled function is chosen. the frame size of the compiled function is chosen.
These options are intended to be used to help debugging stack overflow problems. These options are intended to be used to help debugging stack overflow problems.
The additionally emitted code causes only little overhead and hence can also be The additionally emitted code causes only little overhead and hence can also be
used in production like systems without greater performance degradation. The given used in production-like systems without greater performance degradation. The given
values have to be exact powers of 2 and @var{stack-size} has to be greater than values have to be exact powers of 2 and @var{stack-size} has to be greater than
@var{stack-guard} without exceeding 64k. @var{stack-guard} without exceeding 64k.
In order to be efficient the extra code makes the assumption that the stack starts In order to be efficient the extra code makes the assumption that the stack starts
...@@ -17944,11 +17957,11 @@ Compile code for little-endian mode. ...@@ -17944,11 +17957,11 @@ Compile code for little-endian mode.
@item -mnhwloop @item -mnhwloop
@opindex mnhwloop @opindex mnhwloop
Disable generate bcnz instruction. Disable generation of @code{bcnz} instructions.
@item -muls @item -muls
@opindex muls @opindex muls
Enable generate unaligned load and store instruction. Enable generation of unaligned load and store instructions.
@item -mmac @item -mmac
@opindex mmac @opindex mmac
...@@ -18447,7 +18460,7 @@ Specify @option{-mapp-regs} to generate output using the global registers ...@@ -18447,7 +18460,7 @@ Specify @option{-mapp-regs} to generate output using the global registers
2 through 4, which the SPARC SVR4 ABI reserves for applications. This 2 through 4, which the SPARC SVR4 ABI reserves for applications. This
is the default. is the default.
To be fully SVR4 ABI compliant at the cost of some performance loss, To be fully SVR4 ABI-compliant at the cost of some performance loss,
specify @option{-mno-app-regs}. You should compile libraries and system specify @option{-mno-app-regs}. You should compile libraries and system
software with this option. software with this option.
...@@ -18830,7 +18843,7 @@ local copy of @code{argv} strings. ...@@ -18830,7 +18843,7 @@ local copy of @code{argv} strings.
@item -mfixed-range=@var{register-range} @item -mfixed-range=@var{register-range}
@opindex mfixed-range @opindex mfixed-range
Generate code treating the given register range as fixed registers. Generate code treating the given register range as fixed registers.
A fixed register is one that the register allocator can not use. This is A fixed register is one that the register allocator cannot use. This is
useful when compiling kernel code. A register range is specified as useful when compiling kernel code. A register range is specified as
two registers separated by a dash. Multiple register ranges can be two registers separated by a dash. Multiple register ranges can be
specified separated by a comma. specified separated by a comma.
...@@ -18841,7 +18854,7 @@ specified separated by a comma. ...@@ -18841,7 +18854,7 @@ specified separated by a comma.
@opindex mea64 @opindex mea64
Compile code assuming that pointers to the PPU address space accessed Compile code assuming that pointers to the PPU address space accessed
via the @code{__ea} named address space qualifier are either 32 or 64 via the @code{__ea} named address space qualifier are either 32 or 64
bits wide. The default is 32 bits. As this is an ABI changing option, bits wide. The default is 32 bits. As this is an ABI-changing option,
all object code in an executable must be compiled with the same setting. all object code in an executable must be compiled with the same setting.
@item -maddress-space-conversion @item -maddress-space-conversion
...@@ -19797,7 +19810,7 @@ using universal character names. ...@@ -19797,7 +19810,7 @@ using universal character names.
@opindex fstack-check @opindex fstack-check
Generate code to verify that you do not go beyond the boundary of the Generate code to verify that you do not go beyond the boundary of the
stack. You should specify this flag if you are running in an stack. You should specify this flag if you are running in an
environment with multiple threads, but only rarely need to specify it in environment with multiple threads, but you only rarely need to specify it in
a single-threaded environment since stack overflow is automatically a single-threaded environment since stack overflow is automatically
detected on nearly all systems if there is only one stack. detected on nearly all systems if there is only one stack.
...@@ -19825,7 +19838,7 @@ a warning is issued by the compiler. ...@@ -19825,7 +19838,7 @@ a warning is issued by the compiler.
@item @item
Inefficiency: because of both the modified allocation strategy and the Inefficiency: because of both the modified allocation strategy and the
generic implementation, the performances of the code are hampered. generic implementation, code performance is hampered.
@end enumerate @end enumerate
Note that old-style stack checking is also the fallback method for Note that old-style stack checking is also the fallback method for
...@@ -19913,7 +19926,7 @@ Shared Libraries'' by Ulrich Drepper (which can be found at ...@@ -19913,7 +19926,7 @@ Shared Libraries'' by Ulrich Drepper (which can be found at
@w{@uref{http://people.redhat.com/~drepper/}})---however a superior @w{@uref{http://people.redhat.com/~drepper/}})---however a superior
solution made possible by this option to marking things hidden when solution made possible by this option to marking things hidden when
the default is public is to make the default hidden and mark things the default is public is to make the default hidden and mark things
public. This is the norm with DLL's on Windows and with @option{-fvisibility=hidden} public. This is the norm with DLLs on Windows and with @option{-fvisibility=hidden}
and @code{__attribute__ ((visibility("default")))} instead of and @code{__attribute__ ((visibility("default")))} instead of
@code{__declspec(dllexport)} you get almost identical semantics with @code{__declspec(dllexport)} you get almost identical semantics with
identical syntax. This is a great boon to those working with identical syntax. This is a great boon to those working with
...@@ -19963,7 +19976,7 @@ structure fields, although the compiler usually honors those types ...@@ -19963,7 +19976,7 @@ structure fields, although the compiler usually honors those types
anyway) should use a single access of the width of the anyway) should use a single access of the width of the
field's type, aligned to a natural alignment if possible. For field's type, aligned to a natural alignment if possible. For
example, targets with memory-mapped peripheral registers might require example, targets with memory-mapped peripheral registers might require
all such accesses to be 16 bits wide; with this flag the user could all such accesses to be 16 bits wide; with this flag you can
declare all peripheral bit-fields as @code{unsigned short} (assuming short declare all peripheral bit-fields as @code{unsigned short} (assuming short
is 16 bits on these targets) to force GCC to use 16-bit accesses is 16 bits on these targets) to force GCC to use 16-bit accesses
instead of, perhaps, a more efficient 32-bit access. instead of, perhaps, a more efficient 32-bit access.
......
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