mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-09 11:07:26 +08:00
c-tree.texi, [...]: Use two spaces after ends of sentences.
* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi, doc/gcc.texi, doc/install.texi, doc/invoke.texi, doc/objc.texi, doc/rtl.texi, doc/tm.texi: Use two spaces after ends of sentences. From-SVN: r43594
This commit is contained in:
parent
f6823cb5cd
commit
767094ddfd
@ -1,3 +1,9 @@
|
||||
2001-06-26 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi, doc/gcc.texi,
|
||||
doc/install.texi, doc/invoke.texi, doc/objc.texi, doc/rtl.texi,
|
||||
doc/tm.texi: Use two spaces after ends of sentences.
|
||||
|
||||
2001-06-26 Daniel Berlin <dan@cgsoftware.com>
|
||||
|
||||
* toplev.c (display_help): Fix param thinko.
|
||||
|
@ -401,7 +401,7 @@ This predicate holds for a pointer to function type.
|
||||
|
||||
@item TYPE_PTROB_P
|
||||
This predicate holds for a pointer to object type. Note however that it
|
||||
does not hold for the generic pointer to object type @code{void *}. You
|
||||
does not hold for the generic pointer to object type @code{void *}. You
|
||||
may use @code{TYPE_PTROBV_P} to test for a pointer to object type as
|
||||
well as @code{void *}.
|
||||
|
||||
@ -544,7 +544,7 @@ the type of @code{m}.
|
||||
@item TYPENAME_TYPE
|
||||
Used to represent a construct of the form @code{typename T::A}. The
|
||||
@code{TYPE_CONTEXT} is @code{T}; the @code{TYPE_NAME} is an
|
||||
@code{IDENTIFIER_NODE} for @code{A}. If the type is specified via a
|
||||
@code{IDENTIFIER_NODE} for @code{A}. If the type is specified via a
|
||||
template-id, then @code{TYPENAME_TYPE_FULLNAME} yields a
|
||||
@code{TEMPLATE_ID_EXPR}. The @code{TREE_TYPE} is non-@code{NULL} if the
|
||||
node is implicitly generated in support for the implicit typename
|
||||
@ -724,7 +724,7 @@ Almost all non-function members are available on the @code{TYPE_FIELDS}
|
||||
list. Given one member, the next can be found by following the
|
||||
@code{TREE_CHAIN}. You should not depend in any way on the order in
|
||||
which fields appear on this list. All nodes on this list will be
|
||||
@samp{DECL} nodes. A @code{FIELD_DECL} is used to represent a non-static
|
||||
@samp{DECL} nodes. A @code{FIELD_DECL} is used to represent a non-static
|
||||
data member, a @code{VAR_DECL} is used to represent a static data
|
||||
member, and a @code{TYPE_DECL} is used to represent a type. Note that
|
||||
the @code{CONST_DECL} for an enumeration constant will appear on this
|
||||
@ -930,7 +930,7 @@ analogous to @code{TYPE_SIZE} and @code{TYPE_ALIGN}. For a declaration,
|
||||
you should always use the @code{DECL_SIZE} and @code{DECL_ALIGN} rather
|
||||
than the @code{TYPE_SIZE} and @code{TYPE_ALIGN} given by the
|
||||
@code{TREE_TYPE}, since special attributes may have been applied to the
|
||||
variable to give it a particular size and alignment. You may use the
|
||||
variable to give it a particular size and alignment. You may use the
|
||||
predicates @code{DECL_THIS_STATIC} or @code{DECL_THIS_EXTERN} to test
|
||||
whether the storage class specifiers @code{static} or @code{extern} were
|
||||
used to declare a variable.
|
||||
@ -1640,8 +1640,8 @@ And, if an exception is thrown while the expression is executing,
|
||||
@code{terminate} must be called.
|
||||
|
||||
@item USING_STMT
|
||||
Used to represent a @code{using} directive. The namespace is given by
|
||||
@code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL. This node
|
||||
Used to represent a @code{using} directive. The namespace is given by
|
||||
@code{USING_STMT_NAMESPACE}, which will be a NAMESPACE_DECL. This node
|
||||
is needed inside template functions, to implement using directives
|
||||
during instantiation.
|
||||
|
||||
|
@ -424,7 +424,7 @@ Your program will be more portable this way, too.
|
||||
After the textual transformations are finished, the input file is
|
||||
converted into a sequence of @dfn{preprocessing tokens}. These mostly
|
||||
correspond to the syntactic tokens used by the C compiler, but there are
|
||||
a few differences. White space separates tokens; it is not itself a
|
||||
a few differences. White space separates tokens; it is not itself a
|
||||
token of any kind. Tokens do not have to be separated by white space,
|
||||
but it is often necessary to avoid ambiguities.
|
||||
|
||||
@ -575,7 +575,7 @@ have the same meaning.
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
(where @samp{^@@} is ASCII NUL). Within string or character constants,
|
||||
(where @samp{^@@} is ASCII NUL). Within string or character constants,
|
||||
NULs are preserved. In the latter two cases the preprocessor emits a
|
||||
warning message.
|
||||
|
||||
@ -1634,7 +1634,7 @@ eprintf("success!\n", );
|
||||
@expansion{} fprintf(stderr, "success!\n", );
|
||||
@end example
|
||||
|
||||
GNU CPP has a pair of extensions which deal with this problem. First,
|
||||
GNU CPP has a pair of extensions which deal with this problem. First,
|
||||
you are allowed to leave the variable argument out entirely:
|
||||
|
||||
@example
|
||||
@ -3092,8 +3092,8 @@ compilers. They are documented in the GCC manual.
|
||||
@ftable @code
|
||||
@item #pragma GCC dependency
|
||||
@code{#pragma GCC dependency} allows you to check the relative dates of
|
||||
the current file and another file. If the other file is more recent than
|
||||
the current file, a warning is issued. This is useful if the current
|
||||
the current file and another file. If the other file is more recent than
|
||||
the current file, a warning is issued. This is useful if the current
|
||||
file is derived from the other file, and should be regenerated. The
|
||||
other file is searched for using the normal include search path.
|
||||
Optional trailing text can be used to give more information in the
|
||||
@ -3502,7 +3502,7 @@ by available memory.
|
||||
|
||||
@item Number of parameters in a macro definition and arguments in a macro call.
|
||||
|
||||
We allow @code{USHRT_MAX}, which is no smaller than 65,535. The minimum
|
||||
We allow @code{USHRT_MAX}, which is no smaller than 65,535. The minimum
|
||||
required by the standard is 127.
|
||||
|
||||
@item Number of characters on a logical source line.
|
||||
@ -3559,7 +3559,7 @@ An assertion looks like this:
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
@var{predicate} must be a single identifier. @var{answer} can be any
|
||||
@var{predicate} must be a single identifier. @var{answer} can be any
|
||||
sequence of tokens; all characters are significant except for leading
|
||||
and trailing whitespace, and differences in internal whitespace
|
||||
sequences are ignored. (This is similar to the rules governing macro
|
||||
@ -3993,7 +3993,7 @@ $(objpfx)foo.o: foo.c
|
||||
@item -MQ @var{target}
|
||||
|
||||
Same as @option{-MT}, but it quotes any characters which are special to
|
||||
Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives
|
||||
Make. @option{@w{-MQ '$(objpfx)foo.o'}} gives
|
||||
|
||||
@example
|
||||
$$(objpfx)foo.o: foo.c
|
||||
@ -4233,13 +4233,13 @@ source line, since the first token on the line is no longer a @samp{#}.
|
||||
|
||||
@item -gcc
|
||||
Define the macros @sc{__gnuc__}, @sc{__gnuc_minor__} and
|
||||
@sc{__gnuc_patchlevel__}. These are defined automatically when you use
|
||||
@sc{__gnuc_patchlevel__}. These are defined automatically when you use
|
||||
@command{gcc -E}; you can turn them off in that case with
|
||||
@option{-no-gcc}.
|
||||
|
||||
@item -traditional
|
||||
Try to imitate the behavior of old-fashioned C, as opposed to ISO
|
||||
C@. @xref{Traditional Mode}.
|
||||
C@. @xref{Traditional Mode}.
|
||||
|
||||
@item -trigraphs
|
||||
Process trigraph sequences. @xref{Initial processing}.
|
||||
|
@ -2003,7 +2003,7 @@ slightly under 32kbytes of data.
|
||||
Use this option on the AVR to indicate that the specified
|
||||
function is an signal handler. The compiler will generate function
|
||||
entry and exit sequences suitable for use in an signal handler when this
|
||||
attribute is present. Interrupts will be disabled inside function.
|
||||
attribute is present. Interrupts will be disabled inside function.
|
||||
|
||||
@item naked
|
||||
@cindex function without a prologue/epilogue code
|
||||
@ -2561,7 +2561,7 @@ section, consider using the facilities of the linker instead.
|
||||
@cindex @code{shared} variable attribute
|
||||
On Windows NT, in addition to putting variable definitions in a named
|
||||
section, the section can also be shared among all running copies of an
|
||||
executable or DLL. For example, this small program defines shared data
|
||||
executable or DLL. For example, this small program defines shared data
|
||||
by putting it in a named section @code{shared} and marking the section
|
||||
shareable:
|
||||
|
||||
@ -3602,8 +3602,8 @@ This extension is not supported by GNU C++.
|
||||
@cindex @code{__func__} identifier
|
||||
|
||||
GCC predefines two magic identifiers to hold the name of the current
|
||||
function. The identifier @code{__FUNCTION__} holds the name of the function
|
||||
as it appears in the source. The identifier @code{__PRETTY_FUNCTION__}
|
||||
function. The identifier @code{__FUNCTION__} holds the name of the function
|
||||
as it appears in the source. The identifier @code{__PRETTY_FUNCTION__}
|
||||
holds the name of the function pretty printed in a language specific
|
||||
fashion.
|
||||
|
||||
@ -3642,10 +3642,10 @@ __PRETTY_FUNCTION__ = int a::sub (int)
|
||||
@end smallexample
|
||||
|
||||
The compiler automagically replaces the identifiers with a string
|
||||
literal containing the appropriate name. Thus, they are neither
|
||||
literal containing the appropriate name. Thus, they are neither
|
||||
preprocessor macros, like @code{__FILE__} and @code{__LINE__}, nor
|
||||
variables. This means that they catenate with other string literals, and
|
||||
that they can be used to initialize char arrays. For example
|
||||
variables. This means that they catenate with other string literals, and
|
||||
that they can be used to initialize char arrays. For example
|
||||
|
||||
@smallexample
|
||||
char here[] = "Function " __FUNCTION__ " in " __FILE__;
|
||||
@ -3668,7 +3668,7 @@ static const char __func__[] = "function-name";
|
||||
@end smallexample
|
||||
|
||||
appeared, where function-name is the name of the lexically-enclosing
|
||||
function. This name is the unadorned name of the function.
|
||||
function. This name is the unadorned name of the function.
|
||||
@end display
|
||||
|
||||
By this definition, @code{__func__} is a variable, not a string literal.
|
||||
@ -3991,24 +3991,24 @@ works correctly.
|
||||
@cindex volatile write
|
||||
@cindex volatile access
|
||||
|
||||
Both the C and C++ standard have the concept of volatile objects. These
|
||||
are normally accessed by pointers and used for accessing hardware. The
|
||||
Both the C and C++ standard have the concept of volatile objects. These
|
||||
are normally accessed by pointers and used for accessing hardware. The
|
||||
standards encourage compilers to refrain from optimizations
|
||||
concerning accesses to volatile objects that it might perform on
|
||||
non-volatile objects. The C standard leaves it implementation defined
|
||||
as to what constitutes a volatile access. The C++ standard omits to
|
||||
non-volatile objects. The C standard leaves it implementation defined
|
||||
as to what constitutes a volatile access. The C++ standard omits to
|
||||
specify this, except to say that C++ should behave in a similar manner
|
||||
to C with respect to volatiles, where possible. The minimum either
|
||||
to C with respect to volatiles, where possible. The minimum either
|
||||
standard specifies is that at a sequence point all previous accesses to
|
||||
volatile objects have stabilized and no subsequent accesses have
|
||||
occurred. Thus an implementation is free to reorder and combine
|
||||
occurred. Thus an implementation is free to reorder and combine
|
||||
volatile accesses which occur between sequence points, but cannot do so
|
||||
for accesses across a sequence point. The use of volatiles does not
|
||||
for accesses across a sequence point. The use of volatiles does not
|
||||
allow you to violate the restriction on updating objects multiple times
|
||||
within a sequence point.
|
||||
|
||||
In most expressions, it is intuitively obvious what is a read and what is
|
||||
a write. For instance
|
||||
a write. For instance
|
||||
|
||||
@example
|
||||
volatile int *dst = @var{somevalue};
|
||||
@ -4018,12 +4018,12 @@ volatile int *src = @var{someothervalue};
|
||||
|
||||
@noindent
|
||||
will cause a read of the volatile object pointed to by @var{src} and stores the
|
||||
value into the volatile object pointed to by @var{dst}. There is no
|
||||
value into the volatile object pointed to by @var{dst}. There is no
|
||||
guarantee that these reads and writes are atomic, especially for objects
|
||||
larger than @code{int}.
|
||||
|
||||
Less obvious expressions are where something which looks like an access
|
||||
is used in a void context. An example would be,
|
||||
is used in a void context. An example would be,
|
||||
|
||||
@example
|
||||
volatile int *src = @var{somevalue};
|
||||
@ -4032,15 +4032,15 @@ volatile int *src = @var{somevalue};
|
||||
|
||||
With C, such expressions are rvalues, and as rvalues cause a read of
|
||||
the object, GCC interprets this as a read of the volatile being pointed
|
||||
to. The C++ standard specifies that such expressions do not undergo
|
||||
to. The C++ standard specifies that such expressions do not undergo
|
||||
lvalue to rvalue conversion, and that the type of the dereferenced
|
||||
object may be incomplete. The C++ standard does not specify explicitly
|
||||
object may be incomplete. The C++ standard does not specify explicitly
|
||||
that it is this lvalue to rvalue conversion which is responsible for
|
||||
causing an access. However, there is reason to believe that it is,
|
||||
because otherwise certain simple expressions become undefined. However,
|
||||
causing an access. However, there is reason to believe that it is,
|
||||
because otherwise certain simple expressions become undefined. However,
|
||||
because it would surprise most programmers, G++ treats dereferencing a
|
||||
pointer to volatile object of complete type in a void context as a read
|
||||
of the object. When the object has incomplete type, G++ issues a
|
||||
of the object. When the object has incomplete type, G++ issues a
|
||||
warning.
|
||||
|
||||
@example
|
||||
@ -4053,16 +4053,16 @@ volatile T *ptr2 = @var{somevalue};
|
||||
@end example
|
||||
|
||||
In this example, a warning is issued for @code{*ptr1}, and @code{*ptr2}
|
||||
causes a read of the object pointed to. If you wish to force an error on
|
||||
causes a read of the object pointed to. If you wish to force an error on
|
||||
the first case, you must force a conversion to rvalue with, for instance
|
||||
a static cast, @code{static_cast<S>(*ptr1)}.
|
||||
|
||||
When using a reference to volatile, G++ does not treat equivalent
|
||||
expressions as accesses to volatiles, but instead issues a warning that
|
||||
no volatile is accessed. The rationale for this is that otherwise it
|
||||
no volatile is accessed. The rationale for this is that otherwise it
|
||||
becomes difficult to determine where volatile access occur, and not
|
||||
possible to ignore the return value from functions returning volatile
|
||||
references. Again, if you wish to force a read, cast the reference to
|
||||
references. Again, if you wish to force a read, cast the reference to
|
||||
an rvalue.
|
||||
|
||||
@node Restricted Pointers
|
||||
@ -4073,7 +4073,7 @@ an rvalue.
|
||||
|
||||
As with gcc, g++ understands the C99 feature of restricted pointers,
|
||||
specified with the @code{__restrict__}, or @code{__restrict} type
|
||||
qualifier. Because you cannot compile C++ by specifying the @option{-std=c99}
|
||||
qualifier. Because you cannot compile C++ by specifying the @option{-std=c99}
|
||||
language flag, @code{restrict} is not a keyword in C++.
|
||||
|
||||
In addition to allowing restricted pointers, you can specify restricted
|
||||
@ -4103,14 +4103,14 @@ void T::fn () __restrict__
|
||||
|
||||
@noindent
|
||||
Within the body of @code{T::fn}, @var{this} will have the effective
|
||||
definition @code{T *__restrict__ const this}. Notice that the
|
||||
definition @code{T *__restrict__ const this}. Notice that the
|
||||
interpretation of a @code{__restrict__} member function qualifier is
|
||||
different to that of @code{const} or @code{volatile} qualifier, in that it
|
||||
is applied to the pointer rather than the object. This is consistent with
|
||||
is applied to the pointer rather than the object. This is consistent with
|
||||
other compilers which implement restricted pointers.
|
||||
|
||||
As with all outermost parameter qualifiers, @code{__restrict__} is
|
||||
ignored in function definition matching. This means you only need to
|
||||
ignored in function definition matching. This means you only need to
|
||||
specify @code{__restrict__} in a function definition, rather than
|
||||
in a function prototype as well.
|
||||
|
||||
@ -4519,7 +4519,7 @@ fptr p = (fptr)(a.*fp);
|
||||
@end example
|
||||
|
||||
For PMF constants (i.e. expressions of the form @samp{&Klasse::Member}),
|
||||
no object is needed to obtain the address of the function. They can be
|
||||
no object is needed to obtain the address of the function. They can be
|
||||
converted to function pointers directly:
|
||||
|
||||
@example
|
||||
@ -4609,10 +4609,10 @@ versa, but there may be bugs in this area.
|
||||
@section Deprecated Features
|
||||
|
||||
In the past, the GNU C++ compiler was extended to experiment with new
|
||||
features, at a time when the C++ language was still evolving. Now that
|
||||
features, at a time when the C++ language was still evolving. Now that
|
||||
the C++ standard is complete, some of those features are superseded by
|
||||
superior alternatives. Using the old features might cause a warning in
|
||||
some cases that the feature will be dropped in the future. In other
|
||||
superior alternatives. Using the old features might cause a warning in
|
||||
some cases that the feature will be dropped in the future. In other
|
||||
cases, the feature might be gone already.
|
||||
|
||||
While the list below is not exhaustive, it documents some of the options
|
||||
@ -4622,16 +4622,16 @@ that are now deprecated:
|
||||
@item -fexternal-templates
|
||||
@itemx -falt-external-templates
|
||||
These are two of the many ways for g++ to implement template
|
||||
instantiation. @xref{Template Instantiation}. The C++ standard clearly
|
||||
instantiation. @xref{Template Instantiation}. The C++ standard clearly
|
||||
defines how template definitions have to be organized across
|
||||
implementation units. g++ has an implicit instantiation mechanism that
|
||||
implementation units. g++ has an implicit instantiation mechanism that
|
||||
should work just fine for standard-conforming code.
|
||||
|
||||
@item -fstrict-prototype
|
||||
@itemx -fno-strict-prototype
|
||||
Previously it was possible to use an empty prototype parameter list to
|
||||
indicate an unspecified number of parameters (like C), rather than no
|
||||
parameters, as C++ demands. This feature has been removed, except where
|
||||
parameters, as C++ demands. This feature has been removed, except where
|
||||
it is required for backwards compatibility @xref{Backwards Compatibility}.
|
||||
@end table
|
||||
|
||||
@ -4647,11 +4647,11 @@ and will be removed from g++ at some point.
|
||||
@cindex ARM [Annotated C++ Reference Manual]
|
||||
|
||||
Now that there is a definitive ISO standard C++, g++ has a specification
|
||||
to adhere to. The C++ language evolved over time, and features that
|
||||
to adhere to. The C++ language evolved over time, and features that
|
||||
used to be acceptable in previous drafts of the standard, such as the ARM
|
||||
[Annotated C++ Reference Manual], are no longer accepted. In order to allow
|
||||
[Annotated C++ Reference Manual], are no longer accepted. In order to allow
|
||||
compilation of C++ written to such drafts, g++ contains some backwards
|
||||
compatibilities. @emph{All such backwards compatibility features are
|
||||
compatibilities. @emph{All such backwards compatibility features are
|
||||
liable to disappear in future versions of g++.} They should be considered
|
||||
deprecated @xref{Deprecated Features}.
|
||||
|
||||
@ -4659,13 +4659,13 @@ deprecated @xref{Deprecated Features}.
|
||||
@item For scope
|
||||
If a variable is declared at for scope, it used to remain in scope until
|
||||
the end of the scope which contained the for statement (rather than just
|
||||
within the for scope). g++ retains this, but issues a warning, if such a
|
||||
within the for scope). g++ retains this, but issues a warning, if such a
|
||||
variable is accessed outside the for scope.
|
||||
|
||||
@item implicit C language
|
||||
Old C system header files did not contain an @code{extern "C" @{@dots{}@}}
|
||||
scope to set the language. On such systems, all header files are
|
||||
implicitly scoped inside a C language scope. Also, an empty prototype
|
||||
scope to set the language. On such systems, all header files are
|
||||
implicitly scoped inside a C language scope. Also, an empty prototype
|
||||
@code{()} will be treated as an unspecified number of arguments, rather
|
||||
than no arguments, as C++ demands.
|
||||
@end table
|
||||
|
@ -299,8 +299,8 @@ bugs. It corresponds to GCC version 3.1.
|
||||
@cindex CHILL
|
||||
Several versions of the compiler (C, C++, Objective-C, Fortran, Java
|
||||
and CHILL) are integrated; this is why we use the name
|
||||
``GNU Compiler Collection''. GCC can compile programs written in any of these
|
||||
languages. The Fortran, CHILL, and Java compilers are described in
|
||||
``GNU Compiler Collection''. GCC can compile programs written in any of these
|
||||
languages. The Fortran, CHILL, and Java compilers are described in
|
||||
separate manuals.
|
||||
|
||||
@cindex GCC
|
||||
@ -322,7 +322,7 @@ compiler. For example, we refer to the optimization options as
|
||||
affecting the behavior of ``GCC'' or sometimes just ``the compiler''.
|
||||
|
||||
Front ends for other languages, such as Ada 95 and Pascal exist but
|
||||
have not yet been integrated into GCC. These front ends, like that for C++,
|
||||
have not yet been integrated into GCC. These front ends, like that for C++,
|
||||
are built in subdirectories of GCC and link to it. The result is an
|
||||
integrated compiler that can compile programs written in C, C++,
|
||||
Objective-C, or any of the languages for which you have installed front
|
||||
@ -1603,9 +1603,9 @@ charfunc (tmp.c_str ());
|
||||
@subsection Implicit Copy-Assignment for Virtual Bases
|
||||
|
||||
When a base class is virtual, only one subobject of the base class
|
||||
belongs to each full object. Also, the constructors and destructors are
|
||||
invoked only once, and called from the most-derived class. However, such
|
||||
objects behave unspecified when being assigned. For example:
|
||||
belongs to each full object. Also, the constructors and destructors are
|
||||
invoked only once, and called from the most-derived class. However, such
|
||||
objects behave unspecified when being assigned. For example:
|
||||
|
||||
@example
|
||||
struct Base@{
|
||||
@ -1638,19 +1638,19 @@ void func(Derived &d1, Derived &d2)
|
||||
@end example
|
||||
|
||||
The C++ standard specifies that @samp{Base::Base} is only called once
|
||||
when constructing or copy-constructing a Derived object. It is
|
||||
when constructing or copy-constructing a Derived object. It is
|
||||
unspecified whether @samp{Base::operator=} is called more than once when
|
||||
the implicit copy-assignment for Derived objects is invoked (as it is
|
||||
inside @samp{func} in the example).
|
||||
|
||||
g++ implements the ``intuitive'' algorithm for copy-assignment: assign all
|
||||
direct bases, then assign all members. In that algorithm, the virtual
|
||||
base subobject can be encountered many times. In the example, copying
|
||||
direct bases, then assign all members. In that algorithm, the virtual
|
||||
base subobject can be encountered many times. In the example, copying
|
||||
proceeds in the following order: @samp{val}, @samp{name} (via
|
||||
@code{strdup}), @samp{bval}, and @samp{name} again.
|
||||
|
||||
If application code relies on copy-assignment, a user-defined
|
||||
copy-assignment operator removes any uncertainties. With such an
|
||||
copy-assignment operator removes any uncertainties. With such an
|
||||
operator, the application can define whether and how the virtual base
|
||||
subobject is assigned.
|
||||
|
||||
@ -2181,7 +2181,7 @@ requires. If the bug is in the compiler proper (@file{cc1}), send the
|
||||
preprocessor output generated by adding @option{-save-temps} to the
|
||||
compilation command (@pxref{Debugging Options}). When you do this, use
|
||||
the same @option{-I}, @option{-D} or @option{-U} options that you used in
|
||||
actual compilation. Then send the @var{input}.i or @var{input}.ii files
|
||||
actual compilation. Then send the @var{input}.i or @var{input}.ii files
|
||||
generated.
|
||||
|
||||
A single statement is not enough of an example. In order to compile it,
|
||||
@ -2389,15 +2389,15 @@ we should be able to reproduce the crash ourselves.
|
||||
@cindex gccbug script
|
||||
|
||||
To simplify creation of bug reports, and to allow better tracking of
|
||||
reports, we use the GNATS bug tracking system. Part of that system is
|
||||
the @code{gccbug} script. This is a Unix shell script, so you need a
|
||||
shell to run it. It is normally installed in the same directory where
|
||||
reports, we use the GNATS bug tracking system. Part of that system is
|
||||
the @code{gccbug} script. This is a Unix shell script, so you need a
|
||||
shell to run it. It is normally installed in the same directory where
|
||||
@code{gcc} is installed.
|
||||
|
||||
The gccbug script is derived from send-pr, @pxref{using
|
||||
send-pr,,Creating new Problem Reports,send-pr,Reporting Problems}. When
|
||||
send-pr,,Creating new Problem Reports,send-pr,Reporting Problems}. When
|
||||
invoked, it starts a text editor so you can fill out the various fields
|
||||
of the report. When the you quit the editor, the report is automatically
|
||||
of the report. When the you quit the editor, the report is automatically
|
||||
send to the bug reporting address.
|
||||
|
||||
A number of fields in this bug report form are specific to GCC, and are
|
||||
@ -3139,7 +3139,7 @@ closing files, and sequencing the passes.
|
||||
The parsing pass is invoked only once, to parse the entire input. A
|
||||
high level tree representation is then generated from the input,
|
||||
one function at a time. This tree code is then transformed into RTL
|
||||
intermediate code, and processed. The files involved in transforming
|
||||
intermediate code, and processed. The files involved in transforming
|
||||
the trees into RTL are @file{expr.c}, @file{expmed.c}, and
|
||||
@file{stmt.c}.
|
||||
@c Note, the above files aren't strictly the only files involved. It's
|
||||
@ -3342,7 +3342,7 @@ The source file of this pass is @file{sibcall.c}
|
||||
|
||||
@opindex di
|
||||
The option @option{-di} causes a debugging dump of the RTL code after
|
||||
this pass is run. This dump file's name is made by appending
|
||||
this pass is run. This dump file's name is made by appending
|
||||
@samp{.sibling} to the input file name.
|
||||
|
||||
@cindex jump optimization
|
||||
@ -3405,10 +3405,10 @@ the input file name.
|
||||
@cindex Single Static Assignment optimizations
|
||||
@opindex fssa
|
||||
@item
|
||||
Static Single Assignment (SSA) based optimization passes. The
|
||||
Static Single Assignment (SSA) based optimization passes. The
|
||||
SSA conversion passes (to/from) are turned on by the @option{-fssa}
|
||||
option (it is also done automatically if you enable an SSA optimization pass).
|
||||
These passes utilize a form called Static Single Assignment. In SSA form,
|
||||
These passes utilize a form called Static Single Assignment. In SSA form,
|
||||
each variable (pseudo register) is only set once, giving you def-use
|
||||
and use-def chains for free, and enabling a lot more optimization
|
||||
passes to be run in linear time.
|
||||
@ -3431,7 +3431,7 @@ is never executed. It operates in linear time.
|
||||
|
||||
@opindex dX
|
||||
The option @option{-dX} causes a debugging dump of the RTL code after
|
||||
this pass. This dump file's name is made by appending @samp{.dce} to
|
||||
this pass. This dump file's name is made by appending @samp{.dce} to
|
||||
the input file name.
|
||||
@end itemize
|
||||
@cindex global common subexpression elimination
|
||||
@ -3448,7 +3448,7 @@ invariants out of loops---that is left to the loop optimization pass.
|
||||
If MR PRE GCSE is done, code hoisting (aka unification) is also done, as
|
||||
well as load motion.
|
||||
If you are optimizing for speed, LCM (lazy code motion) based GCSE is
|
||||
done. LCM is based on the work of Knoop, Ruthing, and Steffen. LCM
|
||||
done. LCM is based on the work of Knoop, Ruthing, and Steffen. LCM
|
||||
based GCSE also does loop invariant code motion. We also perform load
|
||||
and store motion when optimizing for speed.
|
||||
Regardless of which type of GCSE is used, the GCSE pass also performs
|
||||
@ -3537,7 +3537,7 @@ the input file name.
|
||||
|
||||
@cindex register movement
|
||||
@item
|
||||
Register movement (@file{regmove.c}). This pass looks for cases where
|
||||
Register movement (@file{regmove.c}). This pass looks for cases where
|
||||
matching constraints would force an instruction to need a reload, and
|
||||
this reload would be a register to register move. It then attempts
|
||||
to change the registers used by the instruction to avoid the move
|
||||
@ -3628,15 +3628,15 @@ to the input file name.
|
||||
@cindex reordering, block
|
||||
@item
|
||||
Basic block reordering. This pass implements profile guided code
|
||||
positioning. If profile information is not available, various types of
|
||||
positioning. If profile information is not available, various types of
|
||||
static analysis are performed to make the predictions normally coming
|
||||
from the profile feedback (IE execution frequency, branch probability,
|
||||
etc). It is implemented in the file @file{bb-reorder.c}, and the
|
||||
etc). It is implemented in the file @file{bb-reorder.c}, and the
|
||||
various prediction routines are in @file{predict.c}.
|
||||
|
||||
@opindex dB
|
||||
The option @option{-dB} causes a debugging dump of the RTL code after
|
||||
this pass. This dump file's name is made by appending @samp{.bbro} to
|
||||
this pass. This dump file's name is made by appending @samp{.bbro} to
|
||||
the input file name.
|
||||
|
||||
@cindex cross-jumping
|
||||
@ -3992,8 +3992,8 @@ initialization when a compilation driver is being initialized.
|
||||
@item UPDATE_PATH_HOST_CANONICALIZE (@var{path}, @var{key})
|
||||
If defined, a C statement (sans semicolon) that performs host-dependent
|
||||
canonicalization when a path used in a compilation driver or preprocessor is
|
||||
canonicalized. @var{path} is the path to be canonicalized, and @var{key} is
|
||||
a translation prefix when its value isn't @code{NULL}. If the C statement
|
||||
canonicalized. @var{path} is the path to be canonicalized, and @var{key} is
|
||||
a translation prefix when its value isn't @code{NULL}. If the C statement
|
||||
does canonicalize @var{path}, the new path should be returned.
|
||||
@end table
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
@settitle Installing GCC: Binaries
|
||||
@end ifset
|
||||
|
||||
@comment $Id: install.texi,v 1.33 2001/06/23 23:41:59 jsm28 Exp $
|
||||
@comment $Id: install.texi,v 1.34 2001/06/25 00:21:28 jsm28 Exp $
|
||||
@c Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
|
||||
|
||||
@ -105,8 +105,8 @@ This document describes the generic installation procedure for GCC as well
|
||||
as detailing some target specific installation instructions.
|
||||
|
||||
GCC includes several components that previously were separate distributions
|
||||
with their own installation instructions. This document supersedes all
|
||||
package specific installation instructions. We provide the component
|
||||
with their own installation instructions. This document supersedes all
|
||||
package specific installation instructions. We provide the component
|
||||
specific installation information in the source distribution for historical
|
||||
reference purposes only.
|
||||
|
||||
@ -147,7 +147,7 @@ The installation procedure itself is broken into five steps.
|
||||
@end ifnotinfo
|
||||
|
||||
Please note that GCC does not support @samp{make uninstall} and probably
|
||||
won't do so in the near future as this would open a can of worms. Instead,
|
||||
won't do so in the near future as this would open a can of worms. Instead,
|
||||
we suggest that you install GCC into a directory of its own and simply
|
||||
remove that directory when you do not need that specific version of GCC
|
||||
any longer.
|
||||
@ -193,7 +193,7 @@ are also included in the full distribution.
|
||||
If you choose to download specific components, you must download the core
|
||||
gcc distribution plus any language specific distributions you wish to
|
||||
use. The core distribution includes the C language front end as well as the
|
||||
shared components. Each language has a tarball which includes the language
|
||||
shared components. Each language has a tarball which includes the language
|
||||
front end as well as the language runtime (when appropriate).
|
||||
|
||||
Unpack the core distribution as well as any language specific
|
||||
@ -401,7 +401,7 @@ argument, only @option{--enable-shared} does.
|
||||
|
||||
@item @anchor{with-gnu-as}--with-gnu-as
|
||||
Specify that the compiler should assume that the
|
||||
assembler it finds is the GNU assembler. However, this does not modify
|
||||
assembler it finds is the GNU assembler. However, this does not modify
|
||||
the rules to find an assembler and will result in confusion if found
|
||||
assembler is not actually the GNU assembler. (Confusion will also
|
||||
result if the compiler finds the GNU assembler but has not been
|
||||
@ -434,14 +434,14 @@ Check the
|
||||
@file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}}
|
||||
directory, where @var{exec_prefix} defaults to @var{prefix} which
|
||||
defaults to @file{/usr/local} unless overridden by the
|
||||
@option{--prefix=/pathname} switch described above. @var{target} is the
|
||||
@option{--prefix=/pathname} switch described above. @var{target} is the
|
||||
target system triple, such as @var{sparc-sun-solaris2.7}, and
|
||||
@var{version} denotes the GCC version, such as 2.95.2.
|
||||
@item
|
||||
Check operating system specific directories (e.g. @file{/usr/ccs/bin} on
|
||||
Sun Solaris).
|
||||
@end itemize
|
||||
Note that these rules do not check for the value of @env{PATH}. You may
|
||||
Note that these rules do not check for the value of @env{PATH}. You may
|
||||
want to use @option{--with-as} if no assembler is installed in the
|
||||
directories listed above, or if you have multiple assemblers installed
|
||||
and want to choose one that is not found by the above rules.
|
||||
@ -545,7 +545,7 @@ Microsoft Win32 API thread support.
|
||||
Specify which cpu variant the
|
||||
compiler should generate code for by default. This is currently
|
||||
only supported on the some ports, specifically arm, powerpc, and
|
||||
SPARC. If configure does not recognize the model name (e.g. arm700,
|
||||
SPARC. If configure does not recognize the model name (e.g. arm700,
|
||||
603e, or ultrasparc) you provide, please check the configure script
|
||||
for a complete list of supported models.
|
||||
|
||||
@ -564,10 +564,10 @@ in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
|
||||
@item --enable-maintainer-mode
|
||||
The build rules that
|
||||
regenerate the GCC master message catalog @file{gcc.pot} are normally
|
||||
disabled. This is because it can only be rebuilt if the complete source
|
||||
tree is present. If you have changed the sources and want to rebuild the
|
||||
disabled. This is because it can only be rebuilt if the complete source
|
||||
tree is present. If you have changed the sources and want to rebuild the
|
||||
catalog, configuring with @option{--enable-maintainer-mode} will enable
|
||||
this. Note that you need a recent version of the @code{gettext} tools
|
||||
this. Note that you need a recent version of the @code{gettext} tools
|
||||
to do so.
|
||||
|
||||
@item --enable-version-specific-runtime-libs
|
||||
@ -578,12 +578,12 @@ addition, libstdc++'s include files will be installed in
|
||||
@file{@var{libsubdir}/include/g++} unless you overruled it by using
|
||||
@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
|
||||
particularly useful if you intend to use several versions of GCC in
|
||||
parallel. This is currently supported by @samp{libf2c} and
|
||||
parallel. This is currently supported by @samp{libf2c} and
|
||||
@samp{libstdc++}.
|
||||
|
||||
@item --enable-languages=@var{lang1},@var{lang2},@dots{}
|
||||
Specify that only a particular subset of compilers and
|
||||
their runtime libraries should be built. For a list of valid values for
|
||||
their runtime libraries should be built. For a list of valid values for
|
||||
@var{langN} you can issue the following command in the
|
||||
@file{gcc} directory of your GCC source tree:@* @samp{grep language=
|
||||
*/config-lang.in}@* Currently, you can use any of the following:
|
||||
@ -624,10 +624,10 @@ to look up installations paths in the registry using the following key:
|
||||
@end smallexample
|
||||
|
||||
@var{KEY} defaults to GCC version number, and can be overridden by the
|
||||
@option{--enable-win32-registry=@var{KEY}} option. Vendors and distributors
|
||||
@option{--enable-win32-registry=@var{KEY}} option. Vendors and distributors
|
||||
who use custom installers are encouraged to provide a different key,
|
||||
perhaps one comprised of vendor name and GCC version number, to
|
||||
avoid conflict with existing installations. This feature is enabled
|
||||
avoid conflict with existing installations. This feature is enabled
|
||||
by default, and can be disabled by @option{--disable-win32-registry}
|
||||
option. This option has no effect on the other hosts.
|
||||
|
||||
@ -654,8 +654,8 @@ checks @samp{rtl} and @samp{gcac} are very expensive.
|
||||
@itemx --disable-nls
|
||||
The @option{--enable-nls} option enables Native Language Support (NLS),
|
||||
which lets GCC output diagnostics in languages other than American
|
||||
English. Native Language Support is enabled by default if not doing a
|
||||
canadian cross build. The @option{--disable-nls} option disables NLS.
|
||||
English. Native Language Support is enabled by default if not doing a
|
||||
canadian cross build. The @option{--disable-nls} option disables NLS.
|
||||
|
||||
@item --with-included-gettext
|
||||
If NLS is enabled, the @option{--with-included-gettext} option causes the build
|
||||
@ -819,7 +819,7 @@ bootstrap4} to increase the number of stages of bootstrap.
|
||||
|
||||
If you used the flag @option{--enable-languages=@dots{}} to restrict
|
||||
the compilers to be built, only those you've actually enabled will be
|
||||
built. This will of course only build those runtime libraries, for
|
||||
built. This will of course only build those runtime libraries, for
|
||||
which the particular compiler has been built. Please note,
|
||||
that re-defining LANGUAGES when calling @samp{make bootstrap}
|
||||
@strong{does not} work anymore!
|
||||
@ -907,7 +907,7 @@ the number of processors in your machine.
|
||||
to current development versions of GCC and GCC 3.0 or later.
|
||||
GCC 2.95.x does not come with a testsuite.}
|
||||
|
||||
Before you install GCC, you might wish to run the testsuite. This
|
||||
Before you install GCC, you might wish to run the testsuite. This
|
||||
step is optional and may require you to download additional software.
|
||||
|
||||
First, you must have @uref{download.html,,downloaded the testsuites}.
|
||||
@ -959,7 +959,7 @@ compilers as well as the C++ and Java runtime libraries.
|
||||
|
||||
As a first possibility to cut down the number of tests that are run it is
|
||||
possible to use @samp{make check-gcc} or @samp{make check-g++}
|
||||
in the gcc subdirectory of the object directory. To further cut down the
|
||||
in the gcc subdirectory of the object directory. To further cut down the
|
||||
tests the following is possible:
|
||||
|
||||
@example
|
||||
@ -985,9 +985,9 @@ output of @samp{make check} into a file and look at the
|
||||
@section How to interpret test results
|
||||
|
||||
After the testsuite has run you'll find various @file{*.sum} and @file{*.log}
|
||||
files in the testsuite subdirectories. The @file{*.log} files contain a
|
||||
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 list
|
||||
results, the @file{*.sum} files summarize the results. These summaries list
|
||||
all the tests that have been run with a corresponding status code:
|
||||
|
||||
@itemize @bullet
|
||||
@ -1016,7 +1016,7 @@ problem in future releases.
|
||||
@section Submitting test results
|
||||
|
||||
If you want to report the results to the GCC project, use the
|
||||
@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
|
||||
@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
|
||||
|
||||
@example
|
||||
@var{srcdir}/contrib/test_summary -p your_commentary.txt \
|
||||
@ -1024,14 +1024,14 @@ If you want to report the results to the GCC project, use the
|
||||
@end example
|
||||
|
||||
This script uses the @command{Mail} program to send the results, so
|
||||
make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
|
||||
make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
|
||||
prepended to the testsuite summary and should contain any special
|
||||
remarks you have on your results or your build environment. Please
|
||||
remarks you have on your results or your build environment. Please
|
||||
do not edit the testsuite result block or the subject line, as these
|
||||
messages are automatically parsed and presented at the
|
||||
@uref{http://gcc.gnu.org/testresults/,,GCC testresults} web
|
||||
page. Here you can also gather information on how specific tests
|
||||
behave on different platforms and compare them with your results. A
|
||||
behave on different platforms and compare them with your results. A
|
||||
few failing testcases are possible even on released versions and you
|
||||
should look here first if you think your results are unreasonable.
|
||||
|
||||
@ -1110,7 +1110,7 @@ recent version of GCC.
|
||||
@cindex Binaries
|
||||
@cindex Installing GCC: Binaries
|
||||
|
||||
We are often asked about pre-compiled versions of GCC. While we cannot
|
||||
We are often asked about pre-compiled versions of GCC. While we cannot
|
||||
provide these for all platforms, below you'll find links to binaries for
|
||||
various platforms where creating them by yourself is not easy due to various
|
||||
reasons.
|
||||
@ -1172,9 +1172,9 @@ In addition to those specific offerings, you can get a binary
|
||||
distribution CD-ROM from the
|
||||
@uref{http://www.fsf.org/order/order.html,,Free Software Foundation}.
|
||||
It contains binaries for a number of platforms, and
|
||||
includes not only GCC, but other stuff as well. The current CD does
|
||||
includes not only GCC, but other stuff as well. The current CD does
|
||||
not contain the latest version of GCC, but it should allow
|
||||
bootstrapping the compiler. An updated version of that disk is in the
|
||||
bootstrapping the compiler. An updated version of that disk is in the
|
||||
works.
|
||||
|
||||
@html
|
||||
@ -1411,7 +1411,7 @@ MIL-STD-1750A processors.
|
||||
|
||||
The MIL-STD-1750A cross configuration produces output for
|
||||
@code{as1750}, an assembler/linker available under the GNU Public
|
||||
License for the 1750A. @code{as1750} can be obtained at
|
||||
License for the 1750A. @code{as1750} can be obtained at
|
||||
@uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}.
|
||||
A similarly licensed simulator for
|
||||
the 1750A is available from same address.
|
||||
@ -1902,7 +1902,7 @@ glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc
|
||||
@heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld
|
||||
Use this configuration to generate @file{a.out} binaries on Linux-based
|
||||
GNU systems if you do not have gas/binutils version 2.5.2 or later
|
||||
installed. This is an obsolete configuration.
|
||||
installed. This is an obsolete configuration.
|
||||
|
||||
@html
|
||||
</p>
|
||||
@ -1910,7 +1910,7 @@ installed. This is an obsolete configuration.
|
||||
@end html
|
||||
@heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout
|
||||
Use this configuration to generate @file{a.out} binaries on Linux-based
|
||||
GNU systems. This configuration is being superseded. You must use
|
||||
GNU systems. This configuration is being superseded. You must use
|
||||
gas/binutils version 2.5.2 or later.
|
||||
|
||||
@html
|
||||
@ -1965,7 +1965,7 @@ native compiler.}
|
||||
|
||||
Use of the @option{-march-pentiumpro} flag can result in
|
||||
unrecognized opcodes when using the native assembler on OS versions before
|
||||
5.0.6. (Support for P6 opcodes was added to the native ELF assembler in
|
||||
5.0.6. (Support for P6 opcodes was added to the native ELF assembler in
|
||||
that version.) While it's rather rare to see these emitted by GCC yet,
|
||||
errors of the basic form:
|
||||
|
||||
@ -2322,11 +2322,11 @@ bootstrap. Binaries are available from the OSU-CIS archive, at
|
||||
<hr>
|
||||
@end html
|
||||
@heading @anchor{m68k-bull-sysv}m68k-bull-sysv
|
||||
Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works
|
||||
either with native assembler or GNU assembler. You can use
|
||||
Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works
|
||||
either with native assembler or GNU assembler. You can use
|
||||
GNU assembler with native coff generation by providing @option{--with-gnu-as} to
|
||||
the configure script or use GNU assembler with dbx-in-coff encapsulation
|
||||
by providing @samp{--with-gnu-as --stabs}. For any problem with native
|
||||
by providing @samp{--with-gnu-as --stabs}. For any problem with native
|
||||
assembler or for availability of the DPX/2 port of GAS, contact
|
||||
@email{F.Pierresteguy@@frcl.bull.fr}.
|
||||
|
||||
@ -2710,7 +2710,7 @@ and use the @option{--with-gnu-as} configure option when configuring gcc.
|
||||
GNU as is distributed as part of the binutils package.
|
||||
|
||||
You must use GAS on these platforms, as the native assembler can not handle
|
||||
the code for exception handling support. Either of these messages indicates
|
||||
the code for exception handling support. Either of these messages indicates
|
||||
that you are using the MIPS assembler when instead you should be using GAS:
|
||||
|
||||
@samp{ as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
|
||||
@ -2780,10 +2780,10 @@ with O32 ABI only support by configuring it for the mips-sgi-irix5
|
||||
target. See the link below for details.
|
||||
|
||||
GCC does not correctly pass/return structures which are
|
||||
smaller than 16 bytes and which are not 8 bytes. The problem is very
|
||||
involved and difficult to fix. It affects a number of other targets also,
|
||||
smaller than 16 bytes and which are not 8 bytes. The problem is very
|
||||
involved and difficult to fix. It affects a number of other targets also,
|
||||
but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte
|
||||
structures are common. The exact problem is that structures are being padded
|
||||
structures are common. The exact problem is that structures are being padded
|
||||
at the wrong end, e.g. a 4 byte structure is loaded into the lower 4 bytes
|
||||
of the register when it should be loaded into the upper 4 bytes of the
|
||||
register.
|
||||
@ -2791,7 +2791,7 @@ register.
|
||||
GCC is consistent with itself, but not consistent with the SGI C compiler
|
||||
(and the SGI supplied runtime libraries), so the only failures that can
|
||||
happen are when there are library functions that take/return such
|
||||
structures. There are very few such library functions. I can only recall
|
||||
structures. There are very few such library functions. I can only recall
|
||||
seeing two of them: inet_ntoa, and semctl.
|
||||
|
||||
See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more
|
||||
@ -2860,7 +2860,7 @@ switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
|
||||
|
||||
You will need
|
||||
@uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils-2.9.4.0.8}
|
||||
or newer for a working GCC. It is strongly recommended to recompile binutils
|
||||
or newer for a working GCC. It is strongly recommended to recompile binutils
|
||||
if you initially built it with gcc-2.7.2.x.
|
||||
|
||||
You can specify a default version for the @option{-mcpu=@var{cpu_type}}
|
||||
@ -2955,7 +2955,7 @@ can be safely ignored; the stage 3 compiler is correct.
|
||||
@end html
|
||||
@heading @anchor{*-*-solaris*}*-*-solaris*
|
||||
|
||||
Starting with Solaris, Sun does not ship a C compiler any more. To
|
||||
Starting with Solaris, Sun does not ship a C compiler any more. To
|
||||
bootstrap and install GCC you first have to install a pre-built
|
||||
compiler, see our @uref{binaries.html,,binaries page} for
|
||||
details.
|
||||
@ -3026,13 +3026,13 @@ For example, the linker may hang indefinitely. The fix is to remove
|
||||
@file{/usr/ucb} from your @code{PATH}.
|
||||
|
||||
All releases of GNU binutils prior to 2.11.1 have known bugs on this
|
||||
platform. We recommend the use of GNU binutils 2.11.1 or the vendor
|
||||
platform. We recommend the use of GNU binutils 2.11.1 or the vendor
|
||||
tools (Sun as, Sun ld).
|
||||
|
||||
Unfortunately, C++ shared libraries, including libstdc++, won't work
|
||||
properly if assembled with Sun as: the linker will complain about
|
||||
relocations in read-only sections, in the definition of virtual
|
||||
tables. Also, Sun as fails to process long symbols resulting from
|
||||
tables. Also, Sun as fails to process long symbols resulting from
|
||||
mangling template-heavy C++ function names.
|
||||
|
||||
@html
|
||||
|
@ -1352,7 +1352,7 @@ otherwise be invalid, or have different behavior.
|
||||
@item -fno-gnu-keywords
|
||||
@opindex fno-gnu-keywords
|
||||
Do not recognize @code{typeof} as a keyword, so that code can use this
|
||||
word as an identifier. You can use the keyword @code{__typeof__} instead.
|
||||
word as an identifier. You can use the keyword @code{__typeof__} instead.
|
||||
@option{-ansi} implies @option{-fno-gnu-keywords}.
|
||||
|
||||
@item -fno-honor-std
|
||||
@ -1440,7 +1440,7 @@ This information is generally only useful to the G++ development team.
|
||||
@opindex ftemplate-depth
|
||||
Set the maximum instantiation depth for template classes to @var{n}.
|
||||
A limit on the template instantiation depth is needed to detect
|
||||
endless recursions during template class instantiation. ANSI/ISO C++
|
||||
endless recursions during template class instantiation. ANSI/ISO C++
|
||||
conforming programs must not rely on a maximum depth greater than 17.
|
||||
|
||||
@item -fuse-cxa-atexit
|
||||
@ -1531,18 +1531,18 @@ you can use @samp{grep -v} to filter out those warnings.
|
||||
|
||||
@item -Wno-deprecated (C++ only)
|
||||
@opindex Wno-deprecated
|
||||
Do not warn about usage of deprecated features. @xref{Deprecated Features}.
|
||||
Do not warn about usage of deprecated features. @xref{Deprecated Features}.
|
||||
|
||||
@item -Wno-non-template-friend (C++ only)
|
||||
@opindex Wno-non-template-friend
|
||||
Disable warnings when non-templatized friend functions are declared
|
||||
within a template. With the advent of explicit template specification
|
||||
within a template. With the advent of explicit template specification
|
||||
support in g++, if the name of the friend is an unqualified-id (i.e.,
|
||||
@samp{friend foo(int)}), the C++ language specification demands that the
|
||||
friend declare or define an ordinary, nontemplate function. (Section
|
||||
14.5.3). Before g++ implemented explicit specification, unqualified-ids
|
||||
friend declare or define an ordinary, nontemplate function. (Section
|
||||
14.5.3). Before g++ implemented explicit specification, unqualified-ids
|
||||
could be interpreted as a particular specialization of a templatized
|
||||
function. Because this non-conforming behavior is no longer the default
|
||||
function. Because this non-conforming behavior is no longer the default
|
||||
behavior for g++, @option{-Wnon-template-friend} allows the compiler to
|
||||
check existing code for potential trouble spots, and is on by default.
|
||||
This new compiler behavior can be turned off with
|
||||
@ -2003,7 +2003,7 @@ Warn whenever a function is defined with a return-type that defaults to
|
||||
return-value in a function whose return-type is not @code{void}.
|
||||
|
||||
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
|
||||
exceptions are @samp{main} and functions defined in system headers.
|
||||
|
||||
@item -Wswitch
|
||||
@ -2991,16 +2991,16 @@ options, in particular with and without @option{-g}.
|
||||
@item -fdump-translation-unit-@var{number} (C and C++ only)
|
||||
@opindex fdump-translation-unit
|
||||
Dump a representation of the tree structure for the entire translation
|
||||
unit to a file. The file name is made by appending @file{.tu} to the
|
||||
source file name. If the @samp{-@var{number}} form is used, @var{number}
|
||||
unit to a file. The file name is made by appending @file{.tu} to the
|
||||
source file name. If the @samp{-@var{number}} form is used, @var{number}
|
||||
controls the details of the dump as described for the @option{-fdump-tree} options.
|
||||
|
||||
@item -fdump-class-hierarchy (C++ only)
|
||||
@item -fdump-class-hierarchy-@var{number} (C++ only)
|
||||
@opindex fdump-class-hierarchy
|
||||
Dump a representation of each class's hierarchy and virtual function
|
||||
table layout to a file. The file name is made by appending @file{.class}
|
||||
to the source file name. If the @samp{-@var{number}} form is used, @var{number}
|
||||
table layout to a file. The file name is made by appending @file{.class}
|
||||
to the source file name. If the @samp{-@var{number}} form is used, @var{number}
|
||||
controls the details of the dump as described for the @option{-fdump-tree}
|
||||
options.
|
||||
|
||||
@ -3008,15 +3008,15 @@ options.
|
||||
@item -fdump-ast-@var{switch}-@var{number} (C++ only)
|
||||
@opindex fdump-ast
|
||||
Control the dumping at various stages of processing the abstract syntax
|
||||
tree to a file. The file name is generated by appending a switch
|
||||
specific suffix to the source file name. If the @samp{-@var{number}} form is
|
||||
tree to a file. The file name is generated by appending a switch
|
||||
specific suffix to the source file name. If the @samp{-@var{number}} form is
|
||||
used, @var{number} is a bit mask which controls the details of the
|
||||
dump. The following bits are meaningful (these are not set symbolically,
|
||||
dump. The following bits are meaningful (these are not set symbolically,
|
||||
as the primary function of these dumps is for debugging gcc itself):
|
||||
|
||||
@table @samp
|
||||
@item bit0 (1)
|
||||
Print the address of each node. Usually this is not meaningful as it
|
||||
Print the address of each node. Usually this is not meaningful as it
|
||||
changes according to the environment and source file.
|
||||
@item bit1 (2)
|
||||
Inhibit dumping of members of a scope or body of a function, unless they
|
||||
@ -3458,14 +3458,14 @@ This pass also performs global constant and copy propagation.
|
||||
@item -fgcse-lm
|
||||
@opindex fgcse-lm
|
||||
When @option{-fgcse-lm} is enabled, global common subexpression elimination will
|
||||
attempt to move loads which are only killed by stores into themselves. This
|
||||
attempt to move loads which are only killed by stores into themselves. This
|
||||
allows a loop containing a load/store sequence to be changed to a load outside
|
||||
the loop, and a copy/store within the loop.
|
||||
|
||||
@item -fgcse-sm
|
||||
@opindex fgcse-sm
|
||||
When @option{-fgcse-sm} is enabled, A store motion pass is run after global common
|
||||
subexpression elimination. This pass will attempt to move stores out of loops.
|
||||
subexpression elimination. This pass will attempt to move stores out of loops.
|
||||
When used in conjunction with @option{-fgcse-lm}, loops containing a load/store sequence
|
||||
can be changed to a load before the loop and a store after the loop.
|
||||
|
||||
@ -3906,7 +3906,7 @@ file. The preprocessor outputs one @code{make} rule containing the
|
||||
object file name for that source file, a colon, and the names of all the
|
||||
included files. Unless overridden explicitly, the object file name
|
||||
consists of the basename of the source file with any suffix replaced with
|
||||
object file suffix. If there are many included files then the
|
||||
object file suffix. If there are many included files then the
|
||||
rule is split into several lines using @samp{\}-newline.
|
||||
|
||||
@option{-M} implies @option{-E}.
|
||||
@ -4217,7 +4217,7 @@ mechanism when this option is specified.
|
||||
@opindex nostdlib
|
||||
Do not use the standard system startup files or libraries when linking.
|
||||
No startup files and only the libraries you specify will be passed to
|
||||
the linker. The compiler may generate calls to memcmp, memset, and memcpy
|
||||
the linker. The compiler may generate calls to memcmp, memset, and memcpy
|
||||
for System V (and ISO C) environments or to bcopy and bzero for
|
||||
BSD environments. These entries are usually resolved by entries in
|
||||
libc. These entry points should be supplied through some other
|
||||
@ -4264,10 +4264,10 @@ form an executable. Not all systems support this option. For predictable
|
||||
results, you must also specify the same set of options that were used to
|
||||
generate code (@option{-fpic}, @option{-fPIC}, or model suboptions)
|
||||
when you specify this option.@footnote{On some systems, @samp{gcc -shared}
|
||||
needs to build supplementary stub code for constructors to work. On
|
||||
needs to build supplementary stub code for constructors to work. On
|
||||
multi-libbed systems, @samp{gcc -shared} must select the correct support
|
||||
libraries to link against. Failing to supply the correct flags may lead
|
||||
to subtle defects. Supplying them in cases where they are not necessary
|
||||
to subtle defects. Supplying them in cases where they are not necessary
|
||||
is innocuous.}
|
||||
|
||||
@item -shared-libgcc
|
||||
@ -4345,7 +4345,7 @@ searched for header files. This can be used to override a system header
|
||||
file, substituting your own version, since these directories are
|
||||
searched before the system header file directories. However, you should
|
||||
not use this option to add directories that contain vendor-supplied
|
||||
system header files (use @option{-isystem} for that). If you use more than
|
||||
system header files (use @option{-isystem} for that). If you use more than
|
||||
one @option{-I} option, the directories are scanned in left-to-right
|
||||
order; the standard system directories come after.
|
||||
|
||||
@ -4627,7 +4627,7 @@ disposal mechanism.
|
||||
|
||||
@item %.@var{SUFFIX}
|
||||
Substitutes @var{.SUFFIX} for the suffixes of a matched switch's args
|
||||
when it is subsequently output with @samp{%*}. @var{SUFFIX} is
|
||||
when it is subsequently output with @samp{%*}. @var{SUFFIX} is
|
||||
terminated by the next space or %.
|
||||
|
||||
@item %w
|
||||
@ -5093,7 +5093,7 @@ does not have code to emulate those instructions.
|
||||
|
||||
@item -mcpu32
|
||||
@opindex mcpu32
|
||||
Generate output for a CPU32. This is the default
|
||||
Generate output for a CPU32. This is the default
|
||||
when the compiler is configured for CPU32-based systems.
|
||||
|
||||
Use this option for microcontrollers with a
|
||||
@ -5417,7 +5417,7 @@ Cypress CY7C602 chip, as used in the SparcStation/SparcServer 3xx series.
|
||||
This is also appropriate for the older SparcStation 1, 2, IPX etc.
|
||||
|
||||
With @option{-msupersparc} the compiler optimizes code for the SuperSparc cpu, as
|
||||
used in the SparcStation 10, 1000 and 2000 series. This flag also enables use
|
||||
used in the SparcStation 10, 1000 and 2000 series. This flag also enables use
|
||||
of the full SPARC v8 instruction set.
|
||||
|
||||
These options are deprecated and will be deleted in a future GCC release.
|
||||
@ -6338,7 +6338,7 @@ SVr4.
|
||||
@end enumerate
|
||||
|
||||
@option{-msvr4} is the default for the m88k-motorola-sysv4 and
|
||||
m88k-dg-dgux m88k configurations. @option{-msvr3} is the default for all
|
||||
m88k-dg-dgux m88k configurations. @option{-msvr3} is the default for all
|
||||
other m88k configurations.
|
||||
|
||||
@item -mversion-03.00
|
||||
@ -7379,7 +7379,7 @@ in ordinary CPU registers instead.
|
||||
@opindex mno-fancy-math-387
|
||||
Some 387 emulators do not support the @code{sin}, @code{cos} and
|
||||
@code{sqrt} instructions for the 387. Specify this option to avoid
|
||||
generating those instructions. This option is the default on FreeBSD.
|
||||
generating those instructions. This option is the default on FreeBSD.
|
||||
As of revision 2.6.1, these instructions are not generated unless you
|
||||
also use the @option{-funsafe-math-optimizations} switch.
|
||||
|
||||
@ -7497,37 +7497,37 @@ may want to reduce the preferred alignment to
|
||||
|
||||
@item -mpush-args
|
||||
@opindex mpush-args
|
||||
Use PUSH operations to store outgoing parameters. This method is shorter
|
||||
Use PUSH operations to store outgoing parameters. This method is shorter
|
||||
and usually equally fast as method using SUB/MOV operations and is enabled
|
||||
by default. In some cases disabling it may improve performance because of
|
||||
by default. In some cases disabling it may improve performance because of
|
||||
improved scheduling and reduced dependencies.
|
||||
|
||||
@item -maccumulate-outgoing-args
|
||||
@opindex maccumulate-outgoing-args
|
||||
If enabled, the maximum amount of space required for outgoing arguments will be
|
||||
computed in the function prologue. This in faster on most modern CPUs
|
||||
computed in the function prologue. This in faster on most modern CPUs
|
||||
because of reduced dependencies, improved scheduling and reduced stack usage
|
||||
when preferred stack boundary is not equal to 2. The drawback is a notable
|
||||
increase in code size. This switch implies @option{-mno-push-args}.
|
||||
increase in code size. This switch implies @option{-mno-push-args}.
|
||||
|
||||
@item -mthreads
|
||||
@opindex mthreads
|
||||
Support thread-safe exception handling on @samp{Mingw32}. Code that relies
|
||||
Support thread-safe exception handling on @samp{Mingw32}. Code that relies
|
||||
on thread-safe exception handling must compile and link all code with the
|
||||
@option{-mthreads} option. When compiling, @option{-mthreads} defines
|
||||
@option{-mthreads} option. When compiling, @option{-mthreads} defines
|
||||
@option{-D_MT}; when linking, it links in a special thread helper library
|
||||
@option{-lmingwthrd} which cleans up per thread exception handling data.
|
||||
|
||||
@item -mno-align-stringops
|
||||
@opindex mno-align-stringops
|
||||
Do not align destination of inlined string operations. This switch reduces
|
||||
Do not align destination of inlined string operations. This switch reduces
|
||||
code size and improves performance in case the destination is already aligned,
|
||||
but gcc don't know about it.
|
||||
|
||||
@item -minline-all-stringops
|
||||
@opindex minline-all-stringops
|
||||
By default GCC inlines string operations only when destination is known to be
|
||||
aligned at least to 4 byte boundary. This enables more inlining, increase code
|
||||
aligned at least to 4 byte boundary. This enables more inlining, increase code
|
||||
size, but may improve performance of code that depends on fast memcpy, strlen
|
||||
and memset for short lengths.
|
||||
|
||||
@ -8043,7 +8043,7 @@ These @samp{-m} options are defined for the Clipper implementations:
|
||||
@table @gcctabopt
|
||||
@item -mc300
|
||||
@opindex mc300
|
||||
Produce code for a C300 Clipper processor. This is the default.
|
||||
Produce code for a C300 Clipper processor. This is the default.
|
||||
|
||||
@item -mc400
|
||||
@opindex mc400
|
||||
@ -8531,14 +8531,14 @@ This is the default for all systems.
|
||||
@item -m32381
|
||||
@opindex m32381
|
||||
Generate output containing 32381 instructions for floating point. This
|
||||
also implies @option{-m32081}. The 32381 is only compatible with the 32332
|
||||
and 32532 cpus. This is the default for the pc532-netbsd configuration.
|
||||
also implies @option{-m32081}. The 32381 is only compatible with the 32332
|
||||
and 32532 cpus. This is the default for the pc532-netbsd configuration.
|
||||
|
||||
@item -mmulti-add
|
||||
@opindex mmulti-add
|
||||
Try and generate multiply-add floating point instructions @code{polyF}
|
||||
and @code{dotF}. This option is only available if the @option{-m32381}
|
||||
option is in effect. Using these instructions requires changes to to
|
||||
and @code{dotF}. This option is only available if the @option{-m32381}
|
||||
option is in effect. Using these instructions requires changes to to
|
||||
register allocation which generally has a negative impact on
|
||||
performance. This option should only be enabled when compiling code
|
||||
particularly likely to make heavy use of multiply-add instructions.
|
||||
@ -8546,7 +8546,7 @@ particularly likely to make heavy use of multiply-add instructions.
|
||||
@item -mnomulti-add
|
||||
@opindex mnomulti-add
|
||||
Do not try and generate multiply-add floating point instructions
|
||||
@code{polyF} and @code{dotF}. This is the default on all platforms.
|
||||
@code{polyF} and @code{dotF}. This is the default on all platforms.
|
||||
|
||||
@item -msoft-float
|
||||
@opindex msoft-float
|
||||
@ -8555,12 +8555,12 @@ Generate output containing library calls for floating point.
|
||||
|
||||
@item -mnobitfield
|
||||
@opindex mnobitfield
|
||||
Do not use the bit-field instructions. On some machines it is faster to
|
||||
use shifting and masking operations. This is the default for the pc532.
|
||||
Do not use the bit-field instructions. On some machines it is faster to
|
||||
use shifting and masking operations. This is the default for the pc532.
|
||||
|
||||
@item -mbitfield
|
||||
@opindex mbitfield
|
||||
Do use the bit-field instructions. This is the default for all platforms
|
||||
Do use the bit-field instructions. This is the default for all platforms
|
||||
except the pc532.
|
||||
|
||||
@item -mrtd
|
||||
@ -8596,19 +8596,19 @@ compiled with the Unix compiler.
|
||||
|
||||
@item -mnoregparam
|
||||
@opindex mnoregparam
|
||||
Do not pass any arguments in registers. This is the default for all
|
||||
Do not pass any arguments in registers. This is the default for all
|
||||
targets.
|
||||
|
||||
@item -msb
|
||||
@opindex msb
|
||||
It is OK to use the sb as an index register which is always loaded with
|
||||
zero. This is the default for the pc532-netbsd target.
|
||||
zero. This is the default for the pc532-netbsd target.
|
||||
|
||||
@item -mnosb
|
||||
@opindex mnosb
|
||||
The sb register is not available for use or has not been initialized to
|
||||
zero by the run time system. This is the default for all targets except
|
||||
the pc532-netbsd. It is also implied whenever @option{-mhimem} or
|
||||
zero by the run time system. This is the default for all targets except
|
||||
the pc532-netbsd. It is also implied whenever @option{-mhimem} or
|
||||
@option{-fpic} is set.
|
||||
|
||||
@item -mhimem
|
||||
@ -8672,7 +8672,7 @@ Code size will be smaller.
|
||||
@item -mcall-prologues
|
||||
@opindex mcall-prologues
|
||||
Functions prologues/epilogues expanded as call to appropriate
|
||||
subroutines. Code size will be smaller.
|
||||
subroutines. Code size will be smaller.
|
||||
|
||||
@item -mno-tablejump
|
||||
@opindex mno-tablejump
|
||||
@ -8924,7 +8924,7 @@ it.
|
||||
@table @gcctabopt
|
||||
@item -fexceptions
|
||||
@opindex fexceptions
|
||||
Enable exception handling. Generates extra code needed to propagate
|
||||
Enable exception handling. Generates extra code needed to propagate
|
||||
exceptions. For some targets, this implies GCC will generate frame
|
||||
unwind information for all functions, which can produce significant data
|
||||
size overhead, although it does not affect execution. If you do not
|
||||
@ -9311,7 +9311,7 @@ option, and that not all targets provide complete support for it.
|
||||
|
||||
This section describes several environment variables that affect how GCC
|
||||
operates. Some of them work by specifying directories or prefixes to use
|
||||
when searching for various kinds of files. Some are used to specify other
|
||||
when searching for various kinds of files. Some are used to specify other
|
||||
aspects of the compilation environment.
|
||||
|
||||
@ifclear INTERNALS
|
||||
@ -9459,7 +9459,7 @@ file @var{file} using @var{target} as the target name.
|
||||
@item LANG
|
||||
@findex LANG
|
||||
@cindex locale definition
|
||||
This variable is used to pass locale information to the compiler. One way in
|
||||
This variable is used to pass locale information to the compiler. One way in
|
||||
which this information is used is to determine the character set to be used
|
||||
when character literals, string literals and comments are parsed in C and C++.
|
||||
When the compiler is configured to allow multibyte characters,
|
||||
|
@ -9,7 +9,7 @@
|
||||
@chapter GNU Objective-C runtime features
|
||||
|
||||
This document is meant to describe some of the GNU Objective-C runtime
|
||||
features. It is not intended to teach you Objective-C, there are several
|
||||
features. It is not intended to teach you Objective-C, there are several
|
||||
resources on the Internet that present the language. Questions and
|
||||
comments about this document to Ovidiu Predescu
|
||||
@email{ovidiu@@cup.hp.com}.
|
||||
@ -28,12 +28,12 @@ comments about this document to Ovidiu Predescu
|
||||
|
||||
The GNU Objective-C runtime provides a way that allows you to execute
|
||||
code before the execution of the program enters the @code{main}
|
||||
function. The code is executed on a per-class and a per-category basis,
|
||||
function. The code is executed on a per-class and a per-category basis,
|
||||
through a special class method @code{+load}.
|
||||
|
||||
This facility is very useful if you want to initialize global variables
|
||||
which can be accessed by the program directly, without sending a message
|
||||
to the class first. The usual way to initialize global variables, in the
|
||||
to the class first. The usual way to initialize global variables, in the
|
||||
@code{+initialize} method, might not be useful because
|
||||
@code{+initialize} is only called when the first message is sent to a
|
||||
class object, which in some cases could be too late.
|
||||
@ -63,12 +63,12 @@ FileStream *Stderr = nil;
|
||||
@end example
|
||||
|
||||
In this example, the initialization of @code{Stdin}, @code{Stdout} and
|
||||
@code{Stderr} in @code{+initialize} occurs too late. The programmer can
|
||||
@code{Stderr} in @code{+initialize} occurs too late. The programmer can
|
||||
send a message to one of these objects before the variables are actually
|
||||
initialized, thus sending messages to the @code{nil} object. The
|
||||
initialized, thus sending messages to the @code{nil} object. The
|
||||
@code{+initialize} method which actually initializes the global
|
||||
variables is not invoked until the first message is sent to the class
|
||||
object. The solution would require these variables to be initialized
|
||||
object. The solution would require these variables to be initialized
|
||||
just before entering @code{main}.
|
||||
|
||||
The correct solution of the above problem is to use the @code{+load}
|
||||
@ -90,7 +90,7 @@ method instead of @code{+initialize}:
|
||||
|
||||
@end example
|
||||
|
||||
The @code{+load} is a method that is not overridden by categories. If a
|
||||
The @code{+load} is a method that is not overridden by categories. If a
|
||||
class and a category of it both implement @code{+load}, both methods are
|
||||
invoked. This allows some additional initializations to be performed in
|
||||
a category.
|
||||
@ -147,23 +147,23 @@ category implemented in the same file;
|
||||
@end itemize
|
||||
|
||||
You should make no assumptions about receiving @code{+load} in sibling
|
||||
classes when you write @code{+load} of a class. The order in which
|
||||
classes when you write @code{+load} of a class. The order in which
|
||||
sibling classes receive @code{+load} is not guaranteed.
|
||||
|
||||
The order in which @code{+load} and @code{+initialize} are called could
|
||||
be problematic if this matters. If you don't allocate objects inside
|
||||
be problematic if this matters. If you don't allocate objects inside
|
||||
@code{+load}, it is guaranteed that @code{+load} is called before
|
||||
@code{+initialize}. If you create an object inside @code{+load} the
|
||||
@code{+initialize}. If you create an object inside @code{+load} the
|
||||
@code{+initialize} method of object's class is invoked even if
|
||||
@code{+load} was not invoked. Note if you explicitly call @code{+load}
|
||||
on a class, @code{+initialize} will be called first. To avoid possible
|
||||
@code{+load} was not invoked. Note if you explicitly call @code{+load}
|
||||
on a class, @code{+initialize} will be called first. To avoid possible
|
||||
problems try to implement only one of these methods.
|
||||
|
||||
The @code{+load} method is also invoked when a bundle is dynamically
|
||||
loaded into your running program. This happens automatically without any
|
||||
intervening operation from you. When you write bundles and you need to
|
||||
loaded into your running program. This happens automatically without any
|
||||
intervening operation from you. When you write bundles and you need to
|
||||
write @code{+load} you can safely create and send messages to objects whose
|
||||
classes already exist in the running program. The same restrictions as
|
||||
classes already exist in the running program. The same restrictions as
|
||||
above apply to classes defined in bundle.
|
||||
|
||||
|
||||
@ -172,7 +172,7 @@ above apply to classes defined in bundle.
|
||||
@section Type encoding
|
||||
|
||||
The Objective-C compiler generates type encodings for all the
|
||||
types. These type encodings are used at runtime to find out information
|
||||
types. These type encodings are used at runtime to find out information
|
||||
about selectors and methods and about objects and classes.
|
||||
|
||||
The types are encoded in the following way:
|
||||
@ -224,12 +224,12 @@ The types are encoded in the following way:
|
||||
|
||||
The encoding of bit-fields has changed to allow bit-fields to be properly
|
||||
handled by the runtime functions that compute sizes and alignments of
|
||||
types that contain bit-fields. The previous encoding contained only the
|
||||
size of the bit-field. Using only this information it is not possible to
|
||||
reliably compute the size occupied by the bit-field. This is very
|
||||
types that contain bit-fields. The previous encoding contained only the
|
||||
size of the bit-field. Using only this information it is not possible to
|
||||
reliably compute the size occupied by the bit-field. This is very
|
||||
important in the presence of the Boehm's garbage collector because the
|
||||
objects are allocated using the typed memory facility available in this
|
||||
collector. The typed memory allocation requires information about where
|
||||
collector. The typed memory allocation requires information about where
|
||||
the pointers are located inside the object.
|
||||
|
||||
The position in the bit-field is the position, counting in bits, of the
|
||||
@ -279,7 +279,7 @@ struct @{
|
||||
@sp 1
|
||||
|
||||
In addition to the types the compiler also encodes the type
|
||||
specifiers. The table below describes the encoding of the current
|
||||
specifiers. The table below describes the encoding of the current
|
||||
Objective-C type specifiers:
|
||||
|
||||
@sp 1
|
||||
@ -303,7 +303,7 @@ Objective-C type specifiers:
|
||||
|
||||
@sp 1
|
||||
|
||||
The type specifiers are encoded just before the type. Unlike types
|
||||
The type specifiers are encoded just before the type. Unlike types
|
||||
however, the type specifiers are only encoded when they appear in method
|
||||
argument types.
|
||||
|
||||
@ -313,34 +313,34 @@ argument types.
|
||||
|
||||
Support for a new memory management policy has been added by using a
|
||||
powerful conservative garbage collector, known as the
|
||||
Boehm-Demers-Weiser conservative garbage collector. It is available from
|
||||
Boehm-Demers-Weiser conservative garbage collector. It is available from
|
||||
@w{@uref{http://www.hpl.hp.com/personal/Hans_Boehm/gc/}}.
|
||||
|
||||
To enable the support for it you have to configure the compiler using an
|
||||
additional argument, @w{@option{--enable-objc-gc}}. You need to have
|
||||
garbage collector installed before building the compiler. This will
|
||||
additional argument, @w{@option{--enable-objc-gc}}. You need to have
|
||||
garbage collector installed before building the compiler. This will
|
||||
build an additional runtime library which has several enhancements to
|
||||
support the garbage collector. The new library has a new name,
|
||||
support the garbage collector. The new library has a new name,
|
||||
@file{libobjc_gc.a} to not conflict with the non-garbage-collected
|
||||
library.
|
||||
|
||||
When the garbage collector is used, the objects are allocated using the
|
||||
so-called typed memory allocation mechanism available in the
|
||||
Boehm-Demers-Weiser collector. This mode requires precise information on
|
||||
where pointers are located inside objects. This information is computed
|
||||
Boehm-Demers-Weiser collector. This mode requires precise information on
|
||||
where pointers are located inside objects. This information is computed
|
||||
once per class, immediately after the class has been initialized.
|
||||
|
||||
There is a new runtime function @code{class_ivar_set_gcinvisible()}
|
||||
which can be used to declare a so-called @dfn{weak pointer}
|
||||
reference. Such a pointer is basically hidden for the garbage collector;
|
||||
reference. Such a pointer is basically hidden for the garbage collector;
|
||||
this can be useful in certain situations, especially when you want to
|
||||
keep track of the allocated objects, yet allow them to be
|
||||
collected. This kind of pointers can only be members of objects, you
|
||||
cannot declare a global pointer as a weak reference. Every type which is
|
||||
collected. This kind of pointers can only be members of objects, you
|
||||
cannot declare a global pointer as a weak reference. Every type which is
|
||||
a pointer type can be declared a weak pointer, including @code{id},
|
||||
@code{Class} and @code{SEL}.
|
||||
|
||||
Here is an example of how to use this feature. Suppose you want to
|
||||
Here is an example of how to use this feature. Suppose you want to
|
||||
implement a class whose instances hold a weak pointer reference; the
|
||||
following class does this:
|
||||
|
||||
@ -379,7 +379,7 @@ following class does this:
|
||||
@end example
|
||||
|
||||
Weak pointers are supported through a new type character specifier
|
||||
represented by the @samp{!} character. The
|
||||
represented by the @samp{!} character. The
|
||||
@code{class_ivar_set_gcinvisible()} function adds or removes this
|
||||
specifier to the string type description of the instance variable named
|
||||
as argument.
|
||||
@ -389,7 +389,7 @@ as argument.
|
||||
@section Constant string objects
|
||||
|
||||
GNU Objective-C provides constant string objects that are generated
|
||||
directly by the compiler. You declare a constant string object by
|
||||
directly by the compiler. You declare a constant string object by
|
||||
prefixing a C constant string with the character @samp{@@}:
|
||||
|
||||
@example
|
||||
@ -398,11 +398,11 @@ prefixing a C constant string with the character @samp{@@}:
|
||||
|
||||
The constant string objects are usually instances of the
|
||||
@code{NXConstantString} class which is provided by the GNU Objective-C
|
||||
runtime. To get the definition of this class you must include the
|
||||
runtime. To get the definition of this class you must include the
|
||||
@file{objc/NXConstStr.h} header file.
|
||||
|
||||
User defined libraries may want to implement their own constant string
|
||||
class. To be able to support them, the GNU Objective-C compiler provides
|
||||
class. To be able to support them, the GNU Objective-C compiler provides
|
||||
a new command line options @option{-fconstant-string-class=@var{class-name}}.
|
||||
The provided class should adhere to a strict structure, the same
|
||||
as @code{NXConstantString}'s structure:
|
||||
@ -419,12 +419,12 @@ as @code{NXConstantString}'s structure:
|
||||
@end example
|
||||
|
||||
User class libraries may choose to inherit the customized constant
|
||||
string class from a different class than @code{Object}. There is no
|
||||
string class from a different class than @code{Object}. There is no
|
||||
requirement in the methods the constant string class has to implement.
|
||||
|
||||
When a file is compiled with the @option{-fconstant-string-class} option,
|
||||
all the constant string objects will be instances of the class specified
|
||||
as argument to this option. It is possible to have multiple compilation
|
||||
as argument to this option. It is possible to have multiple compilation
|
||||
units referring to different constant string classes, neither the
|
||||
compiler nor the linker impose any restrictions in doing this.
|
||||
|
||||
|
@ -160,7 +160,7 @@ An RTX code for other three input operations. Currently only
|
||||
|
||||
@item i
|
||||
An RTX code for an entire instruction: @code{INSN}, @code{JUMP_INSN}, and
|
||||
@code{CALL_INSN}. @xref{Insns}.
|
||||
@code{CALL_INSN}. @xref{Insns}.
|
||||
|
||||
@item m
|
||||
An RTX code for something that matches in insns, such as
|
||||
@ -1345,8 +1345,8 @@ by incrementing it, but there is no need to mention this in the RTL.
|
||||
@item (mem:@var{m} @var{addr} @var{alias})
|
||||
This RTX represents a reference to main memory at an address
|
||||
represented by the expression @var{addr}. @var{m} specifies how large
|
||||
a unit of memory is accessed. @var{alias} specifies an alias set for the
|
||||
reference. In general two items are in different alias sets if they cannot
|
||||
a unit of memory is accessed. @var{alias} specifies an alias set for the
|
||||
reference. In general two items are in different alias sets if they cannot
|
||||
reference the same memory address.
|
||||
|
||||
@findex addressof
|
||||
@ -1432,7 +1432,7 @@ However, they can pretend to do so when only the sign of the result will
|
||||
be used, which is the case when the result is stored in the condition
|
||||
code. And that is the @emph{only} way this kind of expression may
|
||||
validly be used: as a value to be stored in the condition codes, either
|
||||
@code{(cc0)} or a register. @xref{Comparisons}.
|
||||
@code{(cc0)} or a register. @xref{Comparisons}.
|
||||
|
||||
The mode @var{m} is not related to the modes of @var{x} and @var{y}, but
|
||||
instead is the mode of the condition code value. If @code{(cc0)} is
|
||||
|
@ -1909,7 +1909,7 @@ The byte offset.
|
||||
The mode of a top level SUBREG (or what may become one).
|
||||
@end table
|
||||
The default function can be found in rtlanal.c, function
|
||||
@code{subreg_regno_offset}. Normally this does not need to be defined.
|
||||
@code{subreg_regno_offset}. Normally this does not need to be defined.
|
||||
@end table
|
||||
|
||||
@node Leaf Functions
|
||||
@ -3008,7 +3008,7 @@ header files, it defaults to 0.
|
||||
|
||||
@findex PUSH_ARGS
|
||||
@item PUSH_ARGS
|
||||
A C expression. If nonzero, push insns will be used to pass
|
||||
A C expression. If nonzero, push insns will be used to pass
|
||||
outgoing arguments.
|
||||
If the target machine does not have a push instruction, set it to zero.
|
||||
That directs GCC to use an alternate strategy: to
|
||||
@ -3039,7 +3039,7 @@ alignment. Then the definition should be
|
||||
@findex ACCUMULATE_OUTGOING_ARGS
|
||||
@findex current_function_outgoing_args_size
|
||||
@item ACCUMULATE_OUTGOING_ARGS
|
||||
A C expression. If nonzero, the maximum amount of space required for outgoing arguments
|
||||
A C expression. If nonzero, the maximum amount of space required for outgoing arguments
|
||||
will be computed and placed into the variable
|
||||
@code{current_function_outgoing_args_size}. No space will be pushed
|
||||
onto the stack for each call; instead, the function prologue should
|
||||
@ -4179,7 +4179,7 @@ values accessed by @code{__builtin_args_info}.
|
||||
@item __builtin_next_arg (@var{lastarg})
|
||||
This is the equivalent of @code{__builtin_args_info}, for stack
|
||||
arguments. It returns the address of the first anonymous stack
|
||||
argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it
|
||||
argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it
|
||||
returns the address of the location above the first anonymous stack
|
||||
argument. Use it in @code{va_start} to initialize the pointer for
|
||||
fetching arguments from the stack. Also use it in @code{va_start} to
|
||||
@ -4523,7 +4523,7 @@ not define this macro, the default name is used, which is
|
||||
@findex INIT_TARGET_OPTABS
|
||||
@item INIT_TARGET_OPTABS
|
||||
Define this macro as a C statement that declares additional library
|
||||
routines renames existing ones. @code{init_optabs} calls this macro after
|
||||
routines renames existing ones. @code{init_optabs} calls this macro after
|
||||
initializing all the normal library routines.
|
||||
|
||||
@findex FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison})
|
||||
@ -5406,7 +5406,7 @@ If defined, a C statement that calls the function named as the sole
|
||||
argument of this macro. This is used in @file{crtstuff.c} if
|
||||
@code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls to
|
||||
initialization and finalization functions from the init and fini
|
||||
sections. By default, this macro is a simple function call. Some
|
||||
sections. By default, this macro is a simple function call. Some
|
||||
ports need hand-crafted assembly code to avoid dependencies on
|
||||
registers initialized in the function prologue or to ensure that
|
||||
constant pools don't end up too far way in the text section.
|
||||
@ -8585,7 +8585,7 @@ Expand a call to a machine specific built-in function that was set up by
|
||||
@samp{MD_INIT_BUILTINS}. @var{exp} is the expression for the function call;
|
||||
the result should go to @var{target} if that is convenient, and have mode
|
||||
@var{mode} if that is convenient. @var{subtarget} may be used as the target
|
||||
for computing one of @var{exp}'s operands. @var{ignore} is nonzero if the value
|
||||
for computing one of @var{exp}'s operands. @var{ignore} is nonzero if the value
|
||||
is to be ignored.
|
||||
This macro should return the result of the call to the built-in function.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user