c-tree.texi, [...]: Remove trailing whitespace.
* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi, doc/frontends.texi, doc/gcov.texi, doc/gty.texi, doc/install.texi, doc/invoke.texi, doc/libgcc.texi, doc/md.texi, doc/rtl.texi, doc/sourcebuild.texi, doc/standards.texi, doc/tm.texi, doc/trouble.texi: Remove trailing whitespace. From-SVN: r76098
This commit is contained in:
parent
bbad4221ec
commit
daf2f1299b
@ -1,3 +1,11 @@
|
||||
2004-01-18 Joseph S. Myers <jsm@polyomino.org.uk>
|
||||
|
||||
* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi,
|
||||
doc/frontends.texi, doc/gcov.texi, doc/gty.texi, doc/install.texi,
|
||||
doc/invoke.texi, doc/libgcc.texi, doc/md.texi, doc/rtl.texi,
|
||||
doc/sourcebuild.texi, doc/standards.texi, doc/tm.texi,
|
||||
doc/trouble.texi: Remove trailing whitespace.
|
||||
|
||||
2004-01-18 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
PR target/7618
|
||||
|
@ -1024,7 +1024,7 @@ To determine the scope of a function, you can use the
|
||||
@code{NAMESPACE_DECL}) of which the function is a member. For a virtual
|
||||
function, this macro returns the class in which the function was
|
||||
actually defined, not the base class in which the virtual declaration
|
||||
occurred.
|
||||
occurred.
|
||||
|
||||
If a friend function is defined in a class scope, the
|
||||
@code{DECL_FRIEND_CONTEXT} macro can be used to determine the class in
|
||||
@ -1549,7 +1549,7 @@ is the type of exception that will be caught by this handler; it is
|
||||
equal (by pointer equality) to @code{NULL} if this handler is for all
|
||||
types. @code{HANDLER_PARMS} is the @code{DECL_STMT} for the catch
|
||||
parameter, and @code{HANDLER_BODY} is the @code{COMPOUND_STMT} for the
|
||||
block itself.
|
||||
block itself.
|
||||
|
||||
@item IF_STMT
|
||||
|
||||
|
@ -258,7 +258,7 @@ At present, GNU CPP does not implement conversion from arbitrary file
|
||||
encodings to the source character set. Use of any encoding other than
|
||||
plain ASCII or UTF-8, except in comments, will cause errors. Use of
|
||||
encodings that are not strict supersets of ASCII, such as Shift JIS,
|
||||
may cause errors even if non-ASCII characters appear only in comments.
|
||||
may cause errors even if non-ASCII characters appear only in comments.
|
||||
We plan to fix this in the near future.
|
||||
|
||||
All preprocessing work (the subject of the rest of this manual) is
|
||||
@ -422,7 +422,7 @@ comment.
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
Comments are not recognized within string literals.
|
||||
Comments are not recognized within string literals.
|
||||
@t{@w{"/* blah */"}} is the string constant @samp{@w{/* blah */}}, not
|
||||
an empty string.
|
||||
|
||||
@ -2067,7 +2067,7 @@ this macro directly; instead, include the appropriate headers.
|
||||
@itemx __INT_MAX__
|
||||
@itemx __LONG_MAX__
|
||||
@itemx __LONG_LONG_MAX__
|
||||
Defined to the maximum value of the @code{signed char}, @code{wchar_t},
|
||||
Defined to the maximum value of the @code{signed char}, @code{wchar_t},
|
||||
@code{signed short},
|
||||
@code{signed int}, @code{signed long}, and @code{signed long long} types
|
||||
respectively. They exist to make the standard header given numerical limits
|
||||
@ -4135,7 +4135,7 @@ cpp [@option{-D}@var{macro}[=@var{defn}]@dots{}] [@option{-U}@var{macro}]
|
||||
[@option{-M}|@option{-MM}] [@option{-MG}] [@option{-MF} @var{filename}]
|
||||
[@option{-MP}] [@option{-MQ} @var{target}@dots{}]
|
||||
[@option{-MT} @var{target}@dots{}]
|
||||
[@option{-P}] [@option{-fno-working-directory}]
|
||||
[@option{-P}] [@option{-fno-working-directory}]
|
||||
[@option{-x} @var{language}] [@option{-std=}@var{standard}]
|
||||
@var{infile} @var{outfile}
|
||||
|
||||
@ -4188,7 +4188,7 @@ Note that you can also specify places to search using options such as
|
||||
@option{-M} (@pxref{Invocation}). These take precedence over
|
||||
environment variables, which in turn take precedence over the
|
||||
configuration of GCC@.
|
||||
|
||||
|
||||
@include cppenv.texi
|
||||
@c man end
|
||||
|
||||
|
@ -253,7 +253,7 @@ The @code{register} specifier affects code generation only in these ways:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
When used as part of the register variable extension, see
|
||||
When used as part of the register variable extension, see
|
||||
@ref{Explicit Reg Vars}.
|
||||
|
||||
@item
|
||||
@ -594,7 +594,7 @@ bug.)
|
||||
GCC allows you to declare @dfn{local labels} in any nested block
|
||||
scope. A local label is just like an ordinary label, but you can
|
||||
only reference it (with a @code{goto} statement, or by taking its
|
||||
address) within the block in which it was declared.
|
||||
address) within the block in which it was declared.
|
||||
|
||||
A local label declaration looks like this:
|
||||
|
||||
@ -2394,7 +2394,7 @@ See the ELF gABI for complete details, but the short story is:
|
||||
|
||||
@table @dfn
|
||||
@item default
|
||||
Default visibility is the normal case for ELF. This value is
|
||||
Default visibility is the normal case for ELF. This value is
|
||||
available for the visibility attribute to override other options
|
||||
that may change the assumed visibility of symbols.
|
||||
|
||||
@ -2451,7 +2451,7 @@ pass arguments, unless it takes a variable number of arguments.
|
||||
@cindex functions that pop the argument stack on the 386
|
||||
On the Intel 386, the @code{fastcall} attribute causes the compiler to
|
||||
pass the first two arguments in the registers ECX and EDX. Subsequent
|
||||
arguments are passed on the stack. The called function will pop the
|
||||
arguments are passed on the stack. The called function will pop the
|
||||
arguments off the stack. If the number of arguments is variable all
|
||||
arguments are pushed on the stack.
|
||||
|
||||
@ -2647,7 +2647,7 @@ attribute is applied to a symbol @emph{definition}, an error is reported.
|
||||
If a symbol previously declared @code{dllimport} is later defined, the
|
||||
attribute is ignored in subsequent references, and a warning is emitted.
|
||||
The attribute is also overridden by a subsequent declaration as
|
||||
@code{dllexport}.
|
||||
@code{dllexport}.
|
||||
|
||||
When applied to C++ classes, the attribute marks non-inlined
|
||||
member functions and static data members as imports. However, the
|
||||
@ -2663,7 +2663,7 @@ but provides a small performance benefit by eliminating a thunk in the
|
||||
dll. The use of the @code{dllimport} attribute on imported variables was
|
||||
required on older versions of GNU ld, but can now be avoided by passing
|
||||
the @option{--enable-auto-import} switch to ld. As with functions, using
|
||||
the attribute for a variable eliminates a thunk in the dll.
|
||||
the attribute for a variable eliminates a thunk in the dll.
|
||||
|
||||
One drawback to using this attribute is that a pointer to a function or
|
||||
variable marked as dllimport cannot be used as a constant address. The
|
||||
@ -3196,7 +3196,7 @@ The @code{common} attribute requests GCC to place a variable in
|
||||
``common'' storage. The @code{nocommon} attribute requests the
|
||||
opposite -- to allocate space for it directly.
|
||||
|
||||
These attributes override the default chosen by the
|
||||
These attributes override the default chosen by the
|
||||
@option{-fno-common} and @option{-fcommon} flags respectively.
|
||||
|
||||
@item deprecated
|
||||
@ -5501,7 +5501,7 @@ do not implement, a description of the parsing is in order. The string
|
||||
is parsed as by @code{strtol}; that is, the base is recognized by
|
||||
leading @samp{0} or @samp{0x} prefixes. The number parsed is placed
|
||||
in the significand such that the least significant bit of the number
|
||||
is at the least significant bit of the significand. The number is
|
||||
is at the least significant bit of the significand. The number is
|
||||
truncated to fit the significand field provided. The significand is
|
||||
forced to be a quiet NaN.
|
||||
|
||||
@ -5518,7 +5518,7 @@ Similar to @code{__builtin_nan}, except the return type is @code{long double}.
|
||||
@end deftypefn
|
||||
|
||||
@deftypefn {Built-in Function} double __builtin_nans (const char *str)
|
||||
Similar to @code{__builtin_nan}, except the significand is forced
|
||||
Similar to @code{__builtin_nan}, except the significand is forced
|
||||
to be a signaling NaN. The @code{nans} function is proposed by
|
||||
@uref{http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n965.htm,,WG14 N965}.
|
||||
@end deftypefn
|
||||
|
@ -11,7 +11,7 @@
|
||||
@cindex Java
|
||||
@cindex Ada
|
||||
@cindex treelang
|
||||
Several versions of the compiler (C, C++, Objective-C, Ada,
|
||||
Several versions of the compiler (C, C++, Objective-C, Ada,
|
||||
Fortran, Java and treelang) are integrated; this is why we use the name
|
||||
``GNU Compiler Collection''. GCC can compile programs written in any of these
|
||||
languages. The Ada, Fortran, Java and treelang compilers are described in
|
||||
|
@ -211,12 +211,12 @@ Unconditional branches are normally not interesting.
|
||||
|
||||
@end table
|
||||
|
||||
@command{gcov} should be run with the current directory the same as that
|
||||
when you invoked the compiler. Otherwise it will not be able to locate
|
||||
the source files. @command{gcov} produces files called
|
||||
@file{@var{mangledname}.gcov} in the current directory. These contain
|
||||
the coverage information of the source file they correspond to.
|
||||
One @file{.gcov} file is produced for each source file containing code,
|
||||
@command{gcov} should be run with the current directory the same as that
|
||||
when you invoked the compiler. Otherwise it will not be able to locate
|
||||
the source files. @command{gcov} produces files called
|
||||
@file{@var{mangledname}.gcov} in the current directory. These contain
|
||||
the coverage information of the source file they correspond to.
|
||||
One @file{.gcov} file is produced for each source file containing code,
|
||||
which was compiled to produce the data files. The @var{mangledname} part
|
||||
of the output file name is usually simply the source file name, but can
|
||||
be something more complicated if the @samp{-l} or @samp{-p} options are
|
||||
@ -280,12 +280,12 @@ Here is a sample:
|
||||
function main called 1 returned 1 blocks executed 75%
|
||||
1: 4:@{
|
||||
1: 5: int i, total;
|
||||
-: 6:
|
||||
-: 6:
|
||||
1: 7: total = 0;
|
||||
-: 8:
|
||||
-: 8:
|
||||
11: 9: for (i = 0; i < 10; i++)
|
||||
10: 10: total += i;
|
||||
-: 11:
|
||||
-: 11:
|
||||
1: 12: if (total != 45)
|
||||
#####: 13: printf ("Failure\n");
|
||||
-: 14: else
|
||||
@ -310,14 +310,14 @@ function main called 1 returned 1 blocks executed 75%
|
||||
1: 4:@{
|
||||
1: 4-block 0
|
||||
1: 5: int i, total;
|
||||
-: 6:
|
||||
-: 6:
|
||||
1: 7: total = 0;
|
||||
-: 8:
|
||||
-: 8:
|
||||
11: 9: for (i = 0; i < 10; i++)
|
||||
11: 9-block 0
|
||||
10: 10: total += i;
|
||||
10: 10-block 0
|
||||
-: 11:
|
||||
-: 11:
|
||||
1: 12: if (total != 45)
|
||||
1: 12-block 0
|
||||
#####: 13: printf ("Failure\n");
|
||||
@ -369,14 +369,14 @@ Here is a sample of a resulting @file{tmp.c.gcov} file:
|
||||
function main called 1 returned 1 blocks executed 75%
|
||||
1: 4:@{
|
||||
1: 5: int i, total;
|
||||
-: 6:
|
||||
-: 6:
|
||||
1: 7: total = 0;
|
||||
-: 8:
|
||||
-: 8:
|
||||
11: 9: for (i = 0; i < 10; i++)
|
||||
branch 0 taken 91% (fallthrough)
|
||||
branch 1 taken 9%
|
||||
10: 10: total += i;
|
||||
-: 11:
|
||||
-: 11:
|
||||
1: 12: if (total != 45)
|
||||
branch 0 taken 0% (fallthrough)
|
||||
branch 1 taken 100%
|
||||
|
@ -48,7 +48,7 @@ These markers can be placed:
|
||||
@item
|
||||
In a structure definition, before the open brace;
|
||||
@item
|
||||
In a global variable declaration, after the keyword @code{static} or
|
||||
In a global variable declaration, after the keyword @code{static} or
|
||||
@code{extern}; and
|
||||
@item
|
||||
In a structure field definition, before the name of the field.
|
||||
@ -311,19 +311,19 @@ things you need to do:
|
||||
@enumerate
|
||||
@item
|
||||
You need to add the file to the list of source files the type
|
||||
machinery scans. There are three cases:
|
||||
machinery scans. There are three cases:
|
||||
|
||||
@enumerate a
|
||||
@item
|
||||
For a back-end file, this is usually done
|
||||
automatically; if not, you should add it to @code{target_gtfiles} in
|
||||
the appropriate port's entries in @file{config.gcc}.
|
||||
the appropriate port's entries in @file{config.gcc}.
|
||||
|
||||
@item
|
||||
For files shared by all front ends, this is done by adding the
|
||||
filename to the @code{GTFILES} variable in @file{Makefile.in}.
|
||||
|
||||
@item
|
||||
@item
|
||||
For any other file used by a front end, this is done by adding the
|
||||
filename to the @code{gtfiles} variable defined in
|
||||
@file{config-lang.in}. For C, the file is @file{c-config-lang.in}.
|
||||
@ -342,7 +342,7 @@ header file, this should be done automatically. For a front-end header
|
||||
file, it needs to be included by the same file that includes
|
||||
@file{gtype-@var{lang}.h}. For other header files, it needs to be
|
||||
included in @file{gtype-desc.c}, which is a generated file, so add it to
|
||||
@code{ifiles} in @code{open_base_file} in @file{gengtype.c}.
|
||||
@code{ifiles} in @code{open_base_file} in @file{gengtype.c}.
|
||||
|
||||
For source files that aren't header files, the machinery will generate a
|
||||
header file that should be included in the source file you just changed.
|
||||
|
@ -152,7 +152,7 @@ We recommend you browse the entire generic installation instructions before
|
||||
you proceed.
|
||||
|
||||
Lists of successful builds for released versions of GCC are
|
||||
available at @uref{http://gcc.gnu.org/buildstat.html}.
|
||||
available at @uref{http://gcc.gnu.org/buildstat.html}.
|
||||
These lists are updated as new information becomes available.
|
||||
|
||||
The installation procedure itself is broken into five steps.
|
||||
@ -256,7 +256,7 @@ use @command{bash} to be sure. Then set @env{CONFIG_SHELL} in your
|
||||
environment to your ``good'' shell prior to running
|
||||
@command{configure}/@command{make}.
|
||||
|
||||
@command{zsh} is not a fully compliant POSIX shell and will not
|
||||
@command{zsh} is not a fully compliant POSIX shell and will not
|
||||
work when configuring GCC.
|
||||
|
||||
@item GNU binutils
|
||||
@ -980,7 +980,7 @@ If you configure with @option{--enable-generated-files-in-srcdir} then those
|
||||
generated files will go into the source directory. This is mainly intended
|
||||
for generating release or prerelease tarballs of the GCC sources, since it
|
||||
is not a requirement that the users of source releases to have flex, bison, or
|
||||
makeinfo.
|
||||
makeinfo.
|
||||
|
||||
@item --enable-version-specific-runtime-libs
|
||||
Specify
|
||||
@ -1091,7 +1091,7 @@ without optimization.
|
||||
@item --enable-gather-detailed-mem-stats
|
||||
When this option is specified more detailed information on memory
|
||||
allocation is gathered. This information is printed when using
|
||||
@option{-fmem-report}.
|
||||
@option{-fmem-report}.
|
||||
|
||||
@item --enable-nls
|
||||
@itemx --disable-nls
|
||||
@ -1205,7 +1205,7 @@ corresponding @option{--without} option.
|
||||
Now that GCC is configured, you are ready to build the compiler and
|
||||
runtime libraries.
|
||||
|
||||
We @strong{highly} recommend that GCC be built using GNU make;
|
||||
We @strong{highly} recommend that GCC be built using GNU make;
|
||||
other versions may work, then again they might not.
|
||||
GNU make is required for compiling GNAT (the Ada compiler) and the Java
|
||||
runtime library.
|
||||
@ -1537,7 +1537,7 @@ Finally, you can run the testsuite (which may take a long time):
|
||||
This will test various components of GCC, such as compiler
|
||||
front ends and runtime libraries. While running the testsuite, DejaGnu
|
||||
might emit some harmless messages resembling
|
||||
@samp{WARNING: Couldn't find the global config file.} or
|
||||
@samp{WARNING: Couldn't find the global config file.} or
|
||||
@samp{WARNING: Couldn't find tool init file} that can be ignored.
|
||||
|
||||
@section How can I run the test suite on selected tests?
|
||||
@ -1662,8 +1662,8 @@ the libjava testsuite at @file{libjava/testsuite/libjava.jacks/jacks}.
|
||||
The result of running the testsuite are various @file{*.sum} and @file{*.log}
|
||||
files in the testsuite subdirectories. The @file{*.log} files contain a
|
||||
detailed log of the compiler invocations and the corresponding
|
||||
results, the @file{*.sum} files summarize the results. These summaries
|
||||
contain status codes for all tests:
|
||||
results, the @file{*.sum} files summarize the results. These summaries
|
||||
contain status codes for all tests:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
@ -1915,7 +1915,7 @@ OpenServer/Unixware}.
|
||||
|
||||
@item
|
||||
Sinix/Reliant Unix---@uref{ftp://ftp.fujitsu-siemens.com/pub/pd/gnu/gcc/,,Siemens}.
|
||||
|
||||
|
||||
@item
|
||||
Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
|
||||
|
||||
@ -2690,7 +2690,7 @@ A modern bintuils (as well as a plethora of other development related
|
||||
GNU utilities) can be found in Support Level Supplement OSS658A, the
|
||||
"GNU Development Tools" package. See the SCO web and ftp sites for details.
|
||||
That package also contains the currently "officially supported" version of
|
||||
GCC, version 2.95.3. It is useful for bootstrapping this version.
|
||||
GCC, version 2.95.3. It is useful for bootstrapping this version.
|
||||
|
||||
@html
|
||||
<hr />
|
||||
@ -3234,7 +3234,7 @@ zSeries system (64-bit) running GNU/Linux for zSeries@.
|
||||
<hr />
|
||||
@end html
|
||||
@heading @anchor{s390x-ibm-tpf*}s390x-ibm-tpf*
|
||||
zSeries system (64-bit) running TPF. This platform is
|
||||
zSeries system (64-bit) running TPF. This platform is
|
||||
supported as cross-compilation target only.
|
||||
|
||||
@html
|
||||
@ -3495,7 +3495,7 @@ to do so.
|
||||
GCC's exception handling runtime requires a special ``configlette''
|
||||
module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in
|
||||
that file to add the module to your kernel build. (Future versions of
|
||||
VxWorks will incorporate this module.)
|
||||
VxWorks will incorporate this module.)
|
||||
|
||||
@html
|
||||
<hr />
|
||||
|
@ -1460,7 +1460,7 @@ inlined by default.
|
||||
@opindex Wabi
|
||||
Warn when G++ generates code that is probably not compatible with the
|
||||
vendor-neutral C++ ABI. Although an effort has been made to warn about
|
||||
all such cases, there are probably some cases that are not warned about,
|
||||
all such cases, there are probably some cases that are not warned about,
|
||||
even though G++ is generating incompatible code. There may also be
|
||||
cases where warnings are emitted even though the code that is generated
|
||||
will be compatible.
|
||||
@ -1484,7 +1484,7 @@ struct B : public A @{ int f2 : 1; @};
|
||||
|
||||
@noindent
|
||||
In this case, G++ will place @code{B::f2} into the same byte
|
||||
as@code{A::f1}; other compilers will not. You can avoid this problem
|
||||
as@code{A::f1}; other compilers will not. You can avoid this problem
|
||||
by explicitly padding @code{A} so that its size is a multiple of the
|
||||
byte size on your platform; that will cause G++ and other compilers to
|
||||
layout @code{B} identically.
|
||||
@ -1521,7 +1521,7 @@ union too small by the number of bits in an @code{int}.
|
||||
|
||||
@item
|
||||
Empty classes can be placed at incorrect offsets. For example:
|
||||
|
||||
|
||||
@smallexample
|
||||
struct A @{@};
|
||||
|
||||
@ -1614,7 +1614,7 @@ Item 23: Don't try to return a reference when you must return an object.
|
||||
|
||||
@end itemize
|
||||
|
||||
Also warn about violations of the following style guidelines from
|
||||
Also warn about violations of the following style guidelines from
|
||||
Scott Meyers' @cite{More Effective C++} book:
|
||||
|
||||
@itemize @bullet
|
||||
@ -1772,17 +1772,17 @@ used.
|
||||
|
||||
@item -fno-nil-receivers
|
||||
@opindex -fno-nil-receivers
|
||||
Assume that all Objective-C message dispatches (e.g.,
|
||||
@code{[receiver message:arg]}) in this translation unit ensure that the receiver
|
||||
is not @code{nil}. This allows for more efficient entry points in the runtime to be
|
||||
used. Currently, this option is only available in conjunction with
|
||||
Assume that all Objective-C message dispatches (e.g.,
|
||||
@code{[receiver message:arg]}) in this translation unit ensure that the receiver
|
||||
is not @code{nil}. This allows for more efficient entry points in the runtime to be
|
||||
used. Currently, this option is only available in conjunction with
|
||||
the NeXT runtime on Mac OS X 10.3 and later.
|
||||
|
||||
@item -fobjc-exceptions
|
||||
@opindex -fobjc-exceptions
|
||||
Enable syntactic support for structured exception handling in Objective-C,
|
||||
similar to what is offered by C++ and Java. Currently, this option is only
|
||||
available in conjunction with the NeXT runtime on Mac OS X 10.3 and later.
|
||||
Enable syntactic support for structured exception handling in Objective-C,
|
||||
similar to what is offered by C++ and Java. Currently, this option is only
|
||||
available in conjunction with the NeXT runtime on Mac OS X 10.3 and later.
|
||||
|
||||
@smallexample
|
||||
@@try @{
|
||||
@ -1811,15 +1811,15 @@ available in conjunction with the NeXT runtime on Mac OS X 10.3 and later.
|
||||
@end smallexample
|
||||
|
||||
The @code{@@throw} statement may appear anywhere in an Objective-C or
|
||||
Objective-C++ program; when used inside of a @code{@@catch} block, the
|
||||
@code{@@throw} may appear without an argument (as shown above), in which case
|
||||
Objective-C++ program; when used inside of a @code{@@catch} block, the
|
||||
@code{@@throw} may appear without an argument (as shown above), in which case
|
||||
the object caught by the @code{@@catch} will be rethrown.
|
||||
|
||||
Note that only (pointers to) Objective-C objects may be thrown and
|
||||
caught using this scheme. When an object is thrown, it will be caught
|
||||
by the nearest @code{@@catch} clause capable of handling objects of that type,
|
||||
analogously to how @code{catch} blocks work in C++ and Java. A
|
||||
@code{@@catch(id @dots{})} clause (as shown above) may also be provided to catch
|
||||
analogously to how @code{catch} blocks work in C++ and Java. A
|
||||
@code{@@catch(id @dots{})} clause (as shown above) may also be provided to catch
|
||||
any and all Objective-C exceptions not caught by previous @code{@@catch}
|
||||
clauses (if any).
|
||||
|
||||
@ -1833,7 +1833,7 @@ There are several caveats to using the new exception mechanism:
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Although currently designed to be binary compatible with @code{NS_HANDLER}-style
|
||||
Although currently designed to be binary compatible with @code{NS_HANDLER}-style
|
||||
idioms provided by the @code{NSException} class, the new
|
||||
exceptions can only be used on Mac OS X 10.3 (Panther) and later
|
||||
systems, due to additional functionality needed in the (NeXT) Objective-C
|
||||
@ -1841,13 +1841,13 @@ runtime.
|
||||
|
||||
@item
|
||||
As mentioned above, the new exceptions do not support handling
|
||||
types other than Objective-C objects. Furthermore, when used from
|
||||
types other than Objective-C objects. Furthermore, when used from
|
||||
Objective-C++, the Objective-C exception model does not interoperate with C++
|
||||
exceptions at this time. This means you cannot @code{@@throw} an exception
|
||||
from Objective-C and @code{catch} it in C++, or vice versa
|
||||
from Objective-C and @code{catch} it in C++, or vice versa
|
||||
(i.e., @code{throw @dots{} @@catch}).
|
||||
@end itemize
|
||||
|
||||
|
||||
The @option{-fobjc-exceptions} switch also enables the use of synchronization
|
||||
blocks for thread-safe execution:
|
||||
|
||||
@ -1860,7 +1860,7 @@ blocks for thread-safe execution:
|
||||
Upon entering the @code{@@synchronized} block, a thread of execution shall
|
||||
first check whether a lock has been placed on the corresponding @code{guard}
|
||||
object by another thread. If it has, the current thread shall wait until
|
||||
the other thread relinquishes its lock. Once @code{guard} becomes available,
|
||||
the other thread relinquishes its lock. Once @code{guard} becomes available,
|
||||
the current thread will place its own lock on it, execute the code contained in
|
||||
the @code{@@synchronized} block, and finally relinquish the lock (thereby
|
||||
making @code{guard} available to other threads).
|
||||
@ -1875,10 +1875,10 @@ to be unlocked properly.
|
||||
Emit a special marker instructing @command{ld(1)} not to statically link in
|
||||
the resulting object file, and allow @command{dyld(1)} to load it in at
|
||||
run time instead. This is used in conjunction with the Fix-and-Continue
|
||||
debugging mode, where the object file in question may be recompiled and
|
||||
debugging mode, where the object file in question may be recompiled and
|
||||
dynamically reloaded in the course of program execution, without the need
|
||||
to restart the program itself. Currently, Fix-and-Continue functionality
|
||||
is only available in conjunction with the NeXT runtime on Mac OS X 10.3
|
||||
is only available in conjunction with the NeXT runtime on Mac OS X 10.3
|
||||
and later.
|
||||
|
||||
@item -fzero-link
|
||||
@ -1888,7 +1888,7 @@ to @code{objc_getClass("@dots{}")} (when the name of the class is known at
|
||||
compile time) with static class references that get initialized at load time,
|
||||
which improves run-time performance. Specifying the @option{-fzero-link} flag
|
||||
suppresses this behavior and causes calls to @code{objc_getClass("@dots{}")}
|
||||
to be retained. This is useful in Zero-Link debugging mode, since it allows
|
||||
to be retained. This is useful in Zero-Link debugging mode, since it allows
|
||||
for individual class implementations to be modified during program execution.
|
||||
|
||||
@item -gen-decls
|
||||
@ -1923,7 +1923,7 @@ being used.
|
||||
@opindex Wundeclared-selector
|
||||
Warn if a @code{@@selector(@dots{})} expression referring to an
|
||||
undeclared selector is found. A selector is considered undeclared if no
|
||||
method with that name has been declared before the
|
||||
method with that name has been declared before the
|
||||
@code{@@selector(@dots{})} expression, either explicitly in an
|
||||
@code{@@interface} or @code{@@protocol} declaration, or implicitly in
|
||||
an @code{@@implementation} section. This option always performs its
|
||||
@ -2158,7 +2158,7 @@ requiring a non-null value by the @code{nonnull} function attribute.
|
||||
@option{-Wnonnull} is included in @option{-Wall} and @option{-Wformat}. It
|
||||
can be disabled with the @option{-Wno-nonnull} option.
|
||||
|
||||
@item -Winit-self @r{(C, C++, and Objective-C only)}
|
||||
@item -Winit-self @r{(C, C++, and Objective-C only)}
|
||||
@opindex Winit-self
|
||||
Warn about uninitialized variables which are initialized with themselves.
|
||||
Note this option can only be used with the @option{-Wuninitialized} option,
|
||||
@ -2940,7 +2940,7 @@ code is to provide behavior which is selectable at compile-time.
|
||||
@opindex Winline
|
||||
Warn if a function can not be inlined and it was declared as inline.
|
||||
Even with this option, the compiler will not warn about failures to
|
||||
inline functions declared in system headers.
|
||||
inline functions declared in system headers.
|
||||
|
||||
The compiler uses a variety of heuristics to determine whether or not
|
||||
to inline a function. For example, the compiler takes into account
|
||||
@ -3600,7 +3600,7 @@ With @option{-O}, the compiler tries to reduce code size and execution
|
||||
time, without performing any optimizations that take a great deal of
|
||||
compilation time.
|
||||
|
||||
@option{-O} turns on the following optimization flags:
|
||||
@option{-O} turns on the following optimization flags:
|
||||
@gccoptlist{-fdefer-pop @gol
|
||||
-fmerge-constants @gol
|
||||
-fthread-jumps @gol
|
||||
@ -3774,7 +3774,7 @@ use inlining heavily such as those based on recursive templates with C++.
|
||||
|
||||
Inlining is actually controlled by a number of parameters, which may be
|
||||
specified individually by using @option{--param @var{name}=@var{value}}.
|
||||
The @option{-finline-limit=@var{n}} option sets some of these parameters
|
||||
The @option{-finline-limit=@var{n}} option sets some of these parameters
|
||||
as follows:
|
||||
|
||||
@table @gcctabopt
|
||||
@ -4085,9 +4085,9 @@ of stalled insns into the ready list, during the second scheduling pass.
|
||||
|
||||
@item -fsched-stalled-insns-dep=@var{n}
|
||||
@opindex fsched-stalled-insns-dep
|
||||
Define how many insn groups (cycles) will be examined for a dependency
|
||||
on a stalled insn that is candidate for premature removal from the queue
|
||||
of stalled insns. Has an effect only during the second scheduling pass,
|
||||
Define how many insn groups (cycles) will be examined for a dependency
|
||||
on a stalled insn that is candidate for premature removal from the queue
|
||||
of stalled insns. Has an effect only during the second scheduling pass,
|
||||
and only if @option{-fsched-stalled-insns} is used and its value is not zero.
|
||||
|
||||
@item -fsched2-use-superblocks
|
||||
@ -4096,7 +4096,7 @@ When scheduling after register allocation, do use superblock scheduling
|
||||
algorithm. Superblock scheduling allows motion across basic block boundaries
|
||||
resulting on faster schedules. This option is experimental, as not all machine
|
||||
descriptions used by GCC model the CPU closely enough to avoid unreliable
|
||||
results from the algorithm.
|
||||
results from the algorithm.
|
||||
|
||||
This only makes sense when scheduling after register allocation, i.e.@: with
|
||||
@option{-fschedule-insns2} or at @option{-O2} or higher.
|
||||
@ -4513,7 +4513,7 @@ 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
|
||||
and the same optimization options for both compilations.
|
||||
|
||||
With @option{-fbranch-probabilities}, GCC puts a
|
||||
With @option{-fbranch-probabilities}, GCC puts a
|
||||
@samp{REG_BR_PROB} note on each @samp{JUMP_INSN} and @samp{CALL_INSN}.
|
||||
These can be used to improve optimization. Currently, they are only
|
||||
used in one place: in @file{reorg.c}, instead of guessing which path a
|
||||
@ -4598,7 +4598,7 @@ the loop is entered. This is done using the old loop unroller whose loop
|
||||
recognition is based on notes from frontend. This usually makes programs run more slowly.
|
||||
@option{-fold-unroll-all-loops} implies the same options as
|
||||
@option{-fold-unroll-loops}.
|
||||
|
||||
|
||||
@item -funswitch-loops
|
||||
@opindex funswitch-loops
|
||||
Move branches with loop invariant conditions out of the loop, with duplicates
|
||||
@ -4704,7 +4704,7 @@ needlessly consume memory and resources.
|
||||
@item max-inline-insns-single
|
||||
Several parameters control the tree inliner used in gcc.
|
||||
This number sets the maximum number of instructions (counted in gcc's
|
||||
internal representation) in a single function that the tree inliner
|
||||
internal representation) in a single function that the tree inliner
|
||||
will consider for inlining. This only affects functions declared
|
||||
inline and methods implemented in a class declaration (C++).
|
||||
The default value is 500.
|
||||
@ -4737,7 +4737,7 @@ The default value is 150.
|
||||
|
||||
@item max-inline-insns-rtl
|
||||
For languages that use the RTL inliner (this happens at a later stage
|
||||
than tree inlining), you can set the maximum allowable size (counted
|
||||
than tree inlining), you can set the maximum allowable size (counted
|
||||
in RTL instructions) for the RTL inliner with this parameter.
|
||||
The default value is 600.
|
||||
|
||||
@ -5644,12 +5644,12 @@ returns the pathname. If it does not exist, it returns the second argument.
|
||||
This way, @code{if-exists-else} can be used to select one file or another,
|
||||
based on the existence of the first. Here is a small example of its usage:
|
||||
|
||||
@smallexample
|
||||
@smallexample
|
||||
*startfile:
|
||||
crt0%O%s %:if-exists(crti%O%s) \
|
||||
%:if-exists-else(crtbeginT%O%s crtbegin%O%s)
|
||||
@end smallexample
|
||||
@end table
|
||||
@end table
|
||||
|
||||
@item %@{@code{S}@}
|
||||
Substitutes the @code{-S} switch, if that switch was given to GCC@.
|
||||
@ -5724,7 +5724,7 @@ jim.d -bar -boggle
|
||||
|
||||
If @code{S} was given to GCC, substitutes @code{X}; else if @code{T} was
|
||||
given to GCC, substitutes @code{Y}; else substitutes @code{D}. There can
|
||||
be as many clauses as you need. This may be combined with @code{.},
|
||||
be as many clauses as you need. This may be combined with @code{.},
|
||||
@code{!}, @code{|}, and @code{*} as needed.
|
||||
|
||||
|
||||
@ -6081,7 +6081,7 @@ when the compiler is configured for 68HC12-based systems.
|
||||
@itemx -m68hcs12
|
||||
@opindex m68S12
|
||||
@opindex m68hcs12
|
||||
Generate output for a 68HCS12.
|
||||
Generate output for a 68HCS12.
|
||||
|
||||
@item -mauto-incdec
|
||||
@opindex mauto-incdec
|
||||
@ -6245,7 +6245,7 @@ the rules of the ABI@.
|
||||
@option{-mimpure-text}, used in addition to @option{-shared}, tells
|
||||
the compiler to not pass @option{-z text} to the linker when linking a
|
||||
shared object. Using this option, you can link position-dependent
|
||||
code into a shared object.
|
||||
code into a shared object.
|
||||
|
||||
@option{-mimpure-text} suppresses the ``relocations remain against
|
||||
allocatable but non-writable sections'' linker error message.
|
||||
@ -7310,10 +7310,10 @@ libraries.
|
||||
|
||||
@item -mprioritize-restricted-insns=@var{priority}
|
||||
@opindex mprioritize-restricted-insns
|
||||
This option controls the priority that is assigned to
|
||||
dispatch-slot restricted instructions during the second scheduling
|
||||
pass. The argument @var{priority} takes the value @var{0/1/2} to assign
|
||||
@var{no/highest/second-highest} priority to dispatch slot restricted
|
||||
This option controls the priority that is assigned to
|
||||
dispatch-slot restricted instructions during the second scheduling
|
||||
pass. The argument @var{priority} takes the value @var{0/1/2} to assign
|
||||
@var{no/highest/second-highest} priority to dispatch slot restricted
|
||||
instructions.
|
||||
|
||||
@item -msched-costly-dep=@var{dependence_type}
|
||||
@ -7321,12 +7321,12 @@ instructions.
|
||||
This option controls which dependences are considered costly
|
||||
by the target during instruction scheduling. The argument
|
||||
@var{dependence_type} takes one of the following values:
|
||||
@var{no}: no dependence is costly,
|
||||
@var{all}: all dependences are costly,
|
||||
@var{no}: no dependence is costly,
|
||||
@var{all}: all dependences are costly,
|
||||
@var{true_store_to_load}: a true dependence from store to load is costly,
|
||||
@var{store_to_load}: any dependence from store to load is costly,
|
||||
@var{number}: any dependence which latency >= @var{number} is costly.
|
||||
|
||||
|
||||
@item -minsert-sched-nops=@var{scheme}
|
||||
@opindex minsert-sched-nops
|
||||
This option controls which nop insertion scheme will be used during
|
||||
@ -7338,7 +7338,7 @@ according to the scheduler's grouping.
|
||||
@var{regroup_exact}: Insert nops to force costly dependent insns into
|
||||
separate groups. Insert exactly as many nops as needed to force an insn
|
||||
to a new group, according to the estimated processor grouping.
|
||||
@var{number}: Insert nops to force costly dependent insns into
|
||||
@var{number}: Insert nops to force costly dependent insns into
|
||||
separate groups. Insert @var{number} nops to force an insn to a new group.
|
||||
|
||||
@item -mcall-sysv
|
||||
@ -7563,8 +7563,8 @@ These options are defined for all architectures running the Darwin operating
|
||||
system. They are useful for compatibility with other Mac OS compilers.
|
||||
|
||||
@table @gcctabopt
|
||||
@item -all_load
|
||||
@opindex all_load
|
||||
@item -all_load
|
||||
@opindex all_load
|
||||
Loads all members of static archive libraries.
|
||||
See man ld(1) for more information.
|
||||
|
||||
@ -7578,7 +7578,7 @@ to be fatal.
|
||||
Causes the output file to be marked such that the dynamic linker will
|
||||
bind all undefined references when the file is loaded or launched.
|
||||
|
||||
@item -bundle
|
||||
@item -bundle
|
||||
@opindex bundle
|
||||
Produce a Mach-o bundle format file.
|
||||
See man ld(1) for more information.
|
||||
@ -7591,63 +7591,63 @@ output file being linked. See man ld(1) for more information.
|
||||
@item -allowable_client @var{client_name}
|
||||
@itemx -arch_only
|
||||
|
||||
@itemx -client_name
|
||||
@itemx -client_name
|
||||
@itemx -compatibility_version
|
||||
@itemx -current_version
|
||||
@itemx -current_version
|
||||
@itemx -dependency-file
|
||||
@itemx -dylib_file
|
||||
@itemx -dylib_file
|
||||
@itemx -dylinker_install_name
|
||||
@itemx -dynamic
|
||||
@itemx -dynamiclib
|
||||
@itemx -exported_symbols_list
|
||||
@itemx -dynamiclib
|
||||
@itemx -exported_symbols_list
|
||||
@itemx -filelist
|
||||
@itemx -flat_namespace
|
||||
@itemx -flat_namespace
|
||||
@itemx -force_cpusubtype_ALL
|
||||
@itemx -force_flat_namespace
|
||||
@itemx -force_flat_namespace
|
||||
@itemx -headerpad_max_install_names
|
||||
@itemx -image_base
|
||||
@itemx -image_base
|
||||
@itemx -init
|
||||
@itemx -install_name
|
||||
@itemx -keep_private_externs
|
||||
@itemx -multi_module
|
||||
@itemx -multiply_defined
|
||||
@itemx -multiply_defined_unused
|
||||
@itemx -noall_load
|
||||
@itemx -multiply_defined
|
||||
@itemx -multiply_defined_unused
|
||||
@itemx -noall_load
|
||||
@itemx -nofixprebinding
|
||||
@itemx -nomultidefs
|
||||
@itemx -noprebind
|
||||
@itemx -noprebind
|
||||
@itemx -noseglinkedit
|
||||
@itemx -pagezero_size
|
||||
@itemx -pagezero_size
|
||||
@itemx -prebind
|
||||
@itemx -prebind_all_twolevel_modules
|
||||
@itemx -private_bundle
|
||||
@itemx -read_only_relocs
|
||||
@itemx -sectalign
|
||||
@itemx -sectobjectsymbols
|
||||
@itemx -sectalign
|
||||
@itemx -sectobjectsymbols
|
||||
@itemx -whyload
|
||||
@itemx -seg1addr
|
||||
@itemx -seg1addr
|
||||
@itemx -sectcreate
|
||||
@itemx -sectobjectsymbols
|
||||
@itemx -sectorder
|
||||
@itemx -seg_addr_table
|
||||
@itemx -seg_addr_table_filename
|
||||
@itemx -seglinkedit
|
||||
@itemx -segprot
|
||||
@itemx -segprot
|
||||
@itemx -segs_read_only_addr
|
||||
@itemx -segs_read_write_addr
|
||||
@itemx -single_module
|
||||
@itemx -single_module
|
||||
@itemx -static
|
||||
@itemx -sub_library
|
||||
@itemx -sub_umbrella
|
||||
@itemx -sub_umbrella
|
||||
@itemx -twolevel_namespace
|
||||
@itemx -umbrella
|
||||
@itemx -undefined
|
||||
@itemx -unexported_symbols_list
|
||||
@itemx -weak_reference_mismatches
|
||||
@itemx -whatsloaded
|
||||
@itemx -whatsloaded
|
||||
|
||||
@opindex allowable_client
|
||||
@opindex arch_only
|
||||
@opindex arch_only
|
||||
@opindex client_name
|
||||
@opindex compatibility_version
|
||||
@opindex current_version
|
||||
@ -7657,35 +7657,35 @@ output file being linked. See man ld(1) for more information.
|
||||
@opindex dynamic
|
||||
@opindex dynamiclib
|
||||
@opindex exported_symbols_list
|
||||
@opindex filelist
|
||||
@opindex flat_namespace
|
||||
@opindex filelist
|
||||
@opindex flat_namespace
|
||||
@opindex force_cpusubtype_ALL
|
||||
@opindex force_flat_namespace
|
||||
@opindex headerpad_max_install_names
|
||||
@opindex image_base
|
||||
@opindex init
|
||||
@opindex init
|
||||
@opindex install_name
|
||||
@opindex keep_private_externs
|
||||
@opindex multi_module
|
||||
@opindex multi_module
|
||||
@opindex multiply_defined
|
||||
@opindex multiply_defined_unused
|
||||
@opindex noall_load
|
||||
@opindex multiply_defined_unused
|
||||
@opindex noall_load
|
||||
@opindex nofixprebinding
|
||||
@opindex nomultidefs
|
||||
@opindex nomultidefs
|
||||
@opindex noprebind
|
||||
@opindex noseglinkedit
|
||||
@opindex noseglinkedit
|
||||
@opindex pagezero_size
|
||||
@opindex prebind
|
||||
@opindex prebind_all_twolevel_modules
|
||||
@opindex private_bundle
|
||||
@opindex private_bundle
|
||||
@opindex read_only_relocs
|
||||
@opindex sectalign
|
||||
@opindex sectobjectsymbols
|
||||
@opindex whyload
|
||||
@opindex sectalign
|
||||
@opindex sectobjectsymbols
|
||||
@opindex whyload
|
||||
@opindex seg1addr
|
||||
@opindex sectcreate
|
||||
@opindex sectobjectsymbols
|
||||
@opindex sectorder
|
||||
@opindex sectcreate
|
||||
@opindex sectobjectsymbols
|
||||
@opindex sectorder
|
||||
@opindex seg_addr_table
|
||||
@opindex seg_addr_table_filename
|
||||
@opindex seglinkedit
|
||||
@ -8213,7 +8213,7 @@ Use all SSE extensions enabled by @option{-msse2} as well as the new
|
||||
SSE extensions in Prescott New Instructions. @option{-mpni} also
|
||||
enables 2 builtin functions, @code{__builtin_ia32_monitor} and
|
||||
@code{__builtin_ia32_mwait}, for new instructions @code{monitor} and
|
||||
@code{mwait}.
|
||||
@code{mwait}.
|
||||
|
||||
@item sse,387
|
||||
Attempt to utilize both instruction sets at once. This effectively double the
|
||||
@ -8292,22 +8292,22 @@ without that switch.
|
||||
@itemx -m128bit-long-double
|
||||
@opindex m96bit-long-double
|
||||
@opindex m128bit-long-double
|
||||
These switches control the size of @code{long double} type. The i386
|
||||
application binary interface specifies the size to be 96 bits,
|
||||
These switches control the size of @code{long double} type. The i386
|
||||
application binary interface specifies the size to be 96 bits,
|
||||
so @option{-m96bit-long-double} is the default in 32 bit mode.
|
||||
|
||||
Modern architectures (Pentium and newer) would prefer @code{long double}
|
||||
to be aligned to an 8 or 16 byte boundary. In arrays or structures
|
||||
conforming to the ABI, this would not be possible. So specifying a
|
||||
to be aligned to an 8 or 16 byte boundary. In arrays or structures
|
||||
conforming to the ABI, this would not be possible. So specifying a
|
||||
@option{-m128bit-long-double} will align @code{long double}
|
||||
to a 16 byte boundary by padding the @code{long double} with an additional
|
||||
32 bit zero.
|
||||
32 bit zero.
|
||||
|
||||
In the x86-64 compiler, @option{-m128bit-long-double} is the default choice as
|
||||
its ABI specifies that @code{long double} is to be aligned on 16 byte boundary.
|
||||
|
||||
|
||||
Notice that neither of these options enable any extra precision over the x87
|
||||
standard of 80 bits for a @code{long double}.
|
||||
standard of 80 bits for a @code{long double}.
|
||||
|
||||
@strong{Warning:} if you override the default value for your target ABI, the
|
||||
structures and arrays containing @code{long double} will change their size as
|
||||
@ -9569,7 +9569,7 @@ the compiler. This setting is the default.
|
||||
@item -mno-app-regs
|
||||
@opindex mno-app-regs
|
||||
This option will cause r2 and r5 to be treated as fixed registers.
|
||||
|
||||
|
||||
@item -mv850e1
|
||||
@opindex mv850e1
|
||||
Specify that the target processor is the V850E1. The preprocessor
|
||||
@ -10116,9 +10116,9 @@ targets default to @option{-m64}.
|
||||
@itemx -mesa
|
||||
@opindex mzarch
|
||||
@opindex mesa
|
||||
When @option{-mzarch} is specified, generate code using the
|
||||
instructions available on z/Architecture.
|
||||
When @option{-mesa} is specified, generate code using the
|
||||
When @option{-mzarch} is specified, generate code using the
|
||||
instructions available on z/Architecture.
|
||||
When @option{-mesa} is specified, generate code using the
|
||||
instructions available on ESA/390. Note that @option{-mesa} is
|
||||
not possible with @option{-m64}.
|
||||
When generating code compliant to the GNU/Linux for S/390 ABI,
|
||||
|
@ -40,7 +40,7 @@ and @code{@w{unsigned int}} correspond to @code{SImode}; @code{long} and
|
||||
* Integer library routines::
|
||||
* Soft float library routines::
|
||||
* Exception handling routines::
|
||||
* Miscellaneous routines::
|
||||
* Miscellaneous routines::
|
||||
@end menu
|
||||
|
||||
@node Integer library routines
|
||||
|
@ -1256,7 +1256,7 @@ instruction is defined:
|
||||
@dots{})
|
||||
@end smallexample
|
||||
@end ifset
|
||||
GCC can only handle one commutative pair in an asm; if you use more,
|
||||
GCC can only handle one commutative pair in an asm; if you use more,
|
||||
the compiler may fail.
|
||||
|
||||
@cindex @samp{#} in constraint
|
||||
@ -3429,7 +3429,7 @@ built. It is intended to handle non-trivial actions needed along
|
||||
the abnormal return path.
|
||||
|
||||
The address of the exception handler to which the function should return
|
||||
is passed as operand to this pattern. It will normally need to copied by
|
||||
is passed as operand to this pattern. It will normally need to copied by
|
||||
the pattern to some special register or memory location.
|
||||
If the pattern needs to determine the location of the target call
|
||||
frame in order to do so, it may use @code{EH_RETURN_STACKADJ_RTX},
|
||||
@ -3871,7 +3871,7 @@ first operand.
|
||||
@item
|
||||
In combinations of @code{neg}, @code{mult}, @code{plus}, and
|
||||
@code{minus}, the @code{neg} operations (if any) will be moved inside
|
||||
the operations as far as possible. For instance,
|
||||
the operations as far as possible. For instance,
|
||||
@code{(neg (mult A B))} is canonicalized as @code{(mult (neg A) B)}, but
|
||||
@code{(plus (mult (neg A) B) C)} is canonicalized as
|
||||
@code{(minus A (mult B C))}.
|
||||
@ -5482,13 +5482,13 @@ processors.
|
||||
The task of exploiting more processor parallelism is solved by an
|
||||
instruction scheduler. For a better solution to this problem, the
|
||||
instruction scheduler has to have an adequate description of the
|
||||
processor parallelism (or @dfn{pipeline description}). Currently GCC
|
||||
processor parallelism (or @dfn{pipeline description}). Currently GCC
|
||||
provides two alternative ways to describe processor parallelism,
|
||||
both described below. The first method is outlined in the next section;
|
||||
it was once the only method provided by GCC, and thus is used in a number
|
||||
of exiting ports. The second, and preferred method, specifies functional
|
||||
unit reservations for groups of instructions with the aid of @dfn{regular
|
||||
expressions}. This is called the @dfn{automaton based description}.
|
||||
expressions}. This is called the @dfn{automaton based description}.
|
||||
|
||||
The GCC instruction scheduler uses a @dfn{pipeline hazard recognizer} to
|
||||
figure out the possibility of the instruction issue by the processor
|
||||
@ -5657,7 +5657,7 @@ The following optional construction describes names of automata
|
||||
generated and used for the pipeline hazards recognition. Sometimes
|
||||
the generated finite state automaton used by the pipeline hazard
|
||||
recognizer is large. If we use more than one automaton and bind functional
|
||||
units to the automata, the total size of the automata is usually
|
||||
units to the automata, the total size of the automata is usually
|
||||
less than the size of the single automaton. If there is no one such
|
||||
construction, only one finite state automaton is generated.
|
||||
|
||||
@ -5771,7 +5771,7 @@ expression according to the following syntax:
|
||||
|
||||
allof = allof "+" repeat
|
||||
| repeat
|
||||
|
||||
|
||||
repeat = element "*" number
|
||||
| element
|
||||
|
||||
@ -6078,7 +6078,7 @@ construction
|
||||
The old instruction level parallelism description and the pipeline
|
||||
hazards recognizer based on it have the following drawbacks in
|
||||
comparison with the @acronym{DFA}-based ones:
|
||||
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Each functional unit is believed to be reserved at the instruction
|
||||
|
@ -2378,7 +2378,7 @@ rest of the register receives an undefined value. Likewise, if
|
||||
the mode of the register, the rest of the register can be changed in
|
||||
an undefined way.
|
||||
|
||||
If @var{lval} is a @code{strict_low_part} or @code{zero_extract}
|
||||
If @var{lval} is a @code{strict_low_part} or @code{zero_extract}
|
||||
of a @code{subreg}, then the part of the register specified by the
|
||||
machine mode of the @code{subreg} is given the value @var{x} and
|
||||
the rest of the register is not changed.
|
||||
@ -2462,7 +2462,7 @@ trouble to describe the values that are stored, but it is essential to
|
||||
inform the compiler that the registers will be altered, lest it
|
||||
attempt to keep data in them across the string instruction.
|
||||
|
||||
If @var{x} is @code{(mem:BLK (const_int 0))} or
|
||||
If @var{x} is @code{(mem:BLK (const_int 0))} or
|
||||
@code{(mem:BLK (scratch))}, it means that all memory
|
||||
locations must be presumed clobbered. If @var{x} is a @code{parallel},
|
||||
it has the same meaning as a @code{parallel} in a @code{set} expression.
|
||||
|
@ -192,8 +192,8 @@ files, kept in the top level directory, are used. FIXME: when is the
|
||||
the top level one) used?
|
||||
|
||||
@item The file @file{config.gcc} is used to handle configuration
|
||||
specific to the particular target machine. The file
|
||||
@file{config.build} is used to handle configuration specific to the
|
||||
specific to the particular target machine. The file
|
||||
@file{config.build} is used to handle configuration specific to the
|
||||
particular build machine. The file @file{config.host} is used to handle
|
||||
configuration specific to the particular host machine. (In general,
|
||||
these should only be used for features that cannot reasonably be tested in
|
||||
@ -276,7 +276,7 @@ headers to work with GCC, some other headers may also be installed in
|
||||
@file{config} to be installed on some systems.
|
||||
|
||||
GCC installs its own version of @code{<float.h>}, from @file{ginclude/float.h}.
|
||||
This is done to cope with command-line options that change the
|
||||
This is done to cope with command-line options that change the
|
||||
representation of floating point numbers.
|
||||
|
||||
GCC also installs its own version of @code{<limits.h>}; this is generated
|
||||
@ -901,13 +901,13 @@ GCC contains the following C language test suites, in the
|
||||
|
||||
@table @file
|
||||
@item gcc.dg
|
||||
This contains tests of particular features of the C compiler, using the
|
||||
This contains tests of particular features of the C compiler, using the
|
||||
more modern @samp{dg} harness. Correctness tests for various compiler
|
||||
features should go here if possible.
|
||||
|
||||
Magic comments determine whether the file
|
||||
is preprocessed, compiled, linked or run. In these tests, error and warning
|
||||
message texts are compared against expected texts or regular expressions
|
||||
Magic comments determine whether the file
|
||||
is preprocessed, compiled, linked or run. In these tests, error and warning
|
||||
message texts are compared against expected texts or regular expressions
|
||||
given in comments. These tests are run with the options @samp{-ansi -pedantic}
|
||||
unless other options are given in the test. Except as noted below they
|
||||
are not run with multiple optimization options.
|
||||
@ -936,7 +936,7 @@ FIXME: describe this.
|
||||
This contains particular code fragments which have historically broken easily.
|
||||
These tests are run with multiple optimization options, so tests for features
|
||||
which only break at some optimization levels belong here. This also contains
|
||||
tests to check that certain optimizations occur. It might be worthwhile to
|
||||
tests to check that certain optimizations occur. It might be worthwhile to
|
||||
separate the correctness tests cleanly from the code quality tests, but
|
||||
it hasn't been done yet.
|
||||
|
||||
|
@ -145,10 +145,10 @@ GNU C library). @xref{Standard Libraries,,Standard Libraries}.
|
||||
Most of the compiler support routines used by GCC are present in
|
||||
@file{libgcc}, but there are a few exceptions. GCC requires the
|
||||
freestanding environment provide @code{memcpy}, @code{memmove},
|
||||
@code{memset} and @code{memcmp}. Some older ports of GCC are
|
||||
@code{memset} and @code{memcmp}. Some older ports of GCC are
|
||||
configured to use the BSD @code{bcopy}, @code{bzero} and @code{bcmp}
|
||||
functions instead, but this is deprecated for new ports.
|
||||
Finally, if @code{__builtin_trap} is used, and the target does
|
||||
Finally, if @code{__builtin_trap} is used, and the target does
|
||||
not implement the @code{trap} pattern, then GCC will emit a call
|
||||
to @code{abort}.
|
||||
|
||||
|
@ -5666,23 +5666,23 @@ insns with indexes greater than given index.
|
||||
|
||||
@deftypefn {Target Hook} bool IS_COSTLY_DEPENDENCE (rtx @var{insn1}, rtx @var{insn2}, rtx @var{dep_link}, int @var{dep_cost}, int @var{distance})
|
||||
This hook is used to define which dependences are considered costly by
|
||||
the target, so costly that it is not advisable to schedule the insns that
|
||||
the target, so costly that it is not advisable to schedule the insns that
|
||||
are involved in the dependence too close to one another. The parameters
|
||||
to this hook are as follows: The second parameter @var{insn2} is dependent
|
||||
upon the first parameter @var{insn1}. The dependence between @var{insn1}
|
||||
and @var{insn2} is represented by the third parameter @var{dep_link}. The
|
||||
fourth parameter @var{cost} is the cost of the dependence, and the fifth
|
||||
parameter @var{distance} is the distance in cycles between the two insns.
|
||||
to this hook are as follows: The second parameter @var{insn2} is dependent
|
||||
upon the first parameter @var{insn1}. The dependence between @var{insn1}
|
||||
and @var{insn2} is represented by the third parameter @var{dep_link}. The
|
||||
fourth parameter @var{cost} is the cost of the dependence, and the fifth
|
||||
parameter @var{distance} is the distance in cycles between the two insns.
|
||||
The hook returns @code{true} if considering the distance between the two
|
||||
insns the dependence between them is considered costly by the target,
|
||||
and @code{false} otherwise.
|
||||
|
||||
Defining this hook can be useful in multiple-issue out-of-order machines,
|
||||
where (a) it's practically hopeless to predict the actual data/resource
|
||||
where (a) it's practically hopeless to predict the actual data/resource
|
||||
delays, however: (b) there's a better chance to predict the actual grouping
|
||||
that will be formed, and (c) correctly emulating the grouping can be very
|
||||
that will be formed, and (c) correctly emulating the grouping can be very
|
||||
important. In such targets one may want to allow issuing dependent insns
|
||||
closer to one another - i.e, closer than the dependence distance; however,
|
||||
closer to one another - i.e, closer than the dependence distance; however,
|
||||
not in cases of "costly dependences", which this hooks allows to define.
|
||||
@end deftypefn
|
||||
|
||||
|
@ -974,7 +974,7 @@ type @code{Derived<T>*}, so is obviously dependent), or using
|
||||
into scope by a @code{using}-declaration.
|
||||
|
||||
Another, similar example involves calling member functions of a base
|
||||
class:
|
||||
class:
|
||||
|
||||
@smallexample
|
||||
template <typename T> struct Base @{
|
||||
|
Loading…
Reference in New Issue
Block a user