Commit 905e8651 by Richard Henderson Committed by Richard Henderson

* doc/extend.texi (Variable Attributes): Re-sort table and tidy.

From-SVN: r66510
parent e8115463
2003-05-05 Richard Henderson <rth@redhat.com>
* doc/extend.texi (Variable Attributes): Re-sort table and tidy.
2003-05-05 David O'Brien <obrien@FreeBSD.org> 2003-05-05 David O'Brien <obrien@FreeBSD.org>
* config/rs6000/sysv4.h (CPP_OS_FREEBSD_SPEC): Add __ELF__ to mirror * config/rs6000/sysv4.h (CPP_OS_FREEBSD_SPEC): Add __ELF__ to mirror
......
...@@ -2367,15 +2367,6 @@ since it is known that the calling function loaded the correct value. ...@@ -2367,15 +2367,6 @@ since it is known that the calling function loaded the correct value.
Not all ELF targets support this attribute. Not all ELF targets support this attribute.
@item tls_model ("@var{tls_model}")
@cindex @code{tls_model} attribute
The @code{tls_model} attribute sets thread-local storage model
(@pxref{Thread-Local}) of a particular @code{__thread} variable,
overriding @code{-ftls-model=} command line switch on a per-variable
basis.
The @var{tls_model} argument should be one of @code{global-dynamic},
@code{local-dynamic}, @code{initial-exec} or @code{local-exec}.
@item regparm (@var{number}) @item regparm (@var{number})
@cindex functions that are passed arguments in registers on the 386 @cindex functions that are passed arguments in registers on the 386
On the Intel 386, the @code{regparm} attribute causes the compiler to On the Intel 386, the @code{regparm} attribute causes the compiler to
...@@ -2958,15 +2949,13 @@ It is an error to ask for the alignment of an incomplete type. ...@@ -2958,15 +2949,13 @@ It is an error to ask for the alignment of an incomplete type.
The keyword @code{__attribute__} allows you to specify special The keyword @code{__attribute__} allows you to specify special
attributes of variables or structure fields. This keyword is followed attributes of variables or structure fields. This keyword is followed
by an attribute specification inside double parentheses. Ten by an attribute specification inside double parentheses. Some
attributes are currently defined for variables: @code{aligned}, attributes are currently defined generically for variables.
@code{mode}, @code{nocommon}, @code{packed}, @code{section}, Other attributes are defined for variables on particular target
@code{transparent_union}, @code{unused}, @code{deprecated}, systems. Other attributes are available for functions
@code{vector_size}, and @code{weak}. Some other attributes are defined (@pxref{Function Attributes}) and for types (@pxref{Type Attributes}).
for variables on particular target systems. Other attributes are Other front ends might define more attributes
available for functions (@pxref{Function Attributes}) and for types (@pxref{C++ Extensions,,Extensions to the C++ Language}).
(@pxref{Type Attributes}). Other front ends might define more
attributes (@pxref{C++ Extensions,,Extensions to the C++ Language}).
You may also specify attributes with @samp{__} preceding and following You may also specify attributes with @samp{__} preceding and following
each keyword. This allows you to use them in header files without each keyword. This allows you to use them in header files without
...@@ -3034,6 +3023,40 @@ up to a maximum of 8 byte alignment, then specifying @code{aligned(16)} ...@@ -3034,6 +3023,40 @@ up to a maximum of 8 byte alignment, then specifying @code{aligned(16)}
in an @code{__attribute__} will still only provide you with 8 byte in an @code{__attribute__} will still only provide you with 8 byte
alignment. See your linker documentation for further information. alignment. See your linker documentation for further information.
@item common
@itemx nocommon
@cindex @code{common} attribute
@cindex @code{nocommon} attribute
@opindex fcommon
@opindex fno-common
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
@option{-fno-common} and @option{-fcommon} flags respectively.
@item deprecated
@cindex @code{deprecated} attribute
The @code{deprecated} attribute results in a warning if the variable
is used anywhere in the source file. This is useful when identifying
variables that are expected to be removed in a future version of a
program. The warning also includes the location of the declaration
of the deprecated variable, to enable users to easily find further
information about why the variable is deprecated, or what they should
do instead. Note that the warnings only occurs for uses:
@smallexample
extern int old_var __attribute__ ((deprecated));
extern int old_var;
int new_fn () @{ return old_var; @}
@end smallexample
results in a warning on line 3 but not line 2.
The @code{deprecated} attribute can also be used for functions and
types (@pxref{Function Attributes}, @pxref{Type Attributes}.)
@item mode (@var{mode}) @item mode (@var{mode})
@cindex @code{mode} attribute @cindex @code{mode} attribute
This attribute specifies the data type for the declaration---whichever This attribute specifies the data type for the declaration---whichever
...@@ -3045,18 +3068,6 @@ indicate the mode corresponding to a one-byte integer, @samp{word} or ...@@ -3045,18 +3068,6 @@ indicate the mode corresponding to a one-byte integer, @samp{word} or
@samp{__word__} for the mode of a one-word integer, and @samp{pointer} @samp{__word__} for the mode of a one-word integer, and @samp{pointer}
or @samp{__pointer__} for the mode used to represent pointers. or @samp{__pointer__} for the mode used to represent pointers.
@item nocommon
@cindex @code{nocommon} attribute
@opindex fno-common
This attribute specifies requests GCC not to place a variable
``common'' but instead to allocate space for it directly. If you
specify the @option{-fno-common} flag, GCC will do this for all
variables.
Specifying the @code{nocommon} attribute for a variable provides an
initialization of zeros. A variable may only be initialized in one
source file.
@item packed @item packed
@cindex @code{packed} attribute @cindex @code{packed} attribute
The @code{packed} attribute specifies that a variable or structure field The @code{packed} attribute specifies that a variable or structure field
...@@ -3150,6 +3161,17 @@ linkers work. See @code{section} attribute for more information. ...@@ -3150,6 +3161,17 @@ linkers work. See @code{section} attribute for more information.
The @code{shared} attribute is only available on Windows NT@. The @code{shared} attribute is only available on Windows NT@.
@item tls_model ("@var{tls_model}")
@cindex @code{tls_model} attribute
The @code{tls_model} attribute sets thread-local storage model
(@pxref{Thread-Local}) of a particular @code{__thread} variable,
overriding @code{-ftls-model=} command line switch on a per-variable
basis.
The @var{tls_model} argument should be one of @code{global-dynamic},
@code{local-dynamic}, @code{initial-exec} or @code{local-exec}.
Not all targets support this attribute.
@item transparent_union @item transparent_union
This attribute, attached to a function parameter which is a union, means This attribute, attached to a function parameter which is a union, means
that the corresponding argument may have the type of any union member, that the corresponding argument may have the type of any union member,
...@@ -3163,26 +3185,6 @@ This attribute, attached to a variable, means that the variable is meant ...@@ -3163,26 +3185,6 @@ This attribute, attached to a variable, means that the variable is meant
to be possibly unused. GCC will not produce a warning for this to be possibly unused. GCC will not produce a warning for this
variable. variable.
@item deprecated
The @code{deprecated} attribute results in a warning if the variable
is used anywhere in the source file. This is useful when identifying
variables that are expected to be removed in a future version of a
program. The warning also includes the location of the declaration
of the deprecated variable, to enable users to easily find further
information about why the variable is deprecated, or what they should
do instead. Note that the warnings only occurs for uses:
@smallexample
extern int old_var __attribute__ ((deprecated));
extern int old_var;
int new_fn () @{ return old_var; @}
@end smallexample
results in a warning on line 3 but not line 2.
The @code{deprecated} attribute can also be used for functions and
types (@pxref{Function Attributes}, @pxref{Type Attributes}.)
@item vector_size (@var{bytes}) @item vector_size (@var{bytes})
This attribute specifies the vector size for the variable, measured in This attribute specifies the vector size for the variable, measured in
bytes. For example, the declaration: bytes. For example, the declaration:
...@@ -3214,7 +3216,13 @@ the @code{int}. ...@@ -3214,7 +3216,13 @@ the @code{int}.
@item weak @item weak
The @code{weak} attribute is described in @xref{Function Attributes}. The @code{weak} attribute is described in @xref{Function Attributes}.
@end table
@subsection M32R/D Variable Attributes
One attribute is currently defined for the M32R/D.
@table @code
@item model (@var{model-name}) @item model (@var{model-name})
@cindex variable addressability on the M32R/D @cindex variable addressability on the M32R/D
Use this attribute on the M32R/D to set the addressability of an object. Use this attribute on the M32R/D to set the addressability of an object.
...@@ -3227,16 +3235,18 @@ addresses can be loaded with the @code{ld24} instruction). ...@@ -3227,16 +3235,18 @@ addresses can be loaded with the @code{ld24} instruction).
Medium and large model objects may live anywhere in the 32-bit address space Medium and large model objects may live anywhere in the 32-bit address space
(the compiler will generate @code{seth/add3} instructions to load their (the compiler will generate @code{seth/add3} instructions to load their
addresses). addresses).
@end table
@subsection i386 Variable Attributes @subsection i386 Variable Attributes
Two attributes are currently defined for i386 configurations: Two attributes are currently defined for i386 configurations:
@code{ms_struct} and @code{gcc_struct} @code{ms_struct} and @code{gcc_struct}
@table @code
@item ms_struct @item ms_struct
@itemx gcc_struct @itemx gcc_struct
@cindex @code{ms_struct} @cindex @code{ms_struct} attribute
@cindex @code{gcc_struct} @cindex @code{gcc_struct} attribute
If @code{packed} is used on a structure, or if bit-fields are used If @code{packed} is used on a structure, or if bit-fields are used
it may be that the Microsoft ABI packs them differently it may be that the Microsoft ABI packs them differently
...@@ -3247,13 +3257,8 @@ either format. ...@@ -3247,13 +3257,8 @@ either format.
Currently @option{-m[no-]ms-bitfields} is provided for the Windows X86 Currently @option{-m[no-]ms-bitfields} is provided for the Windows X86
compilers to match the native Microsoft compiler. compilers to match the native Microsoft compiler.
@end table @end table
To specify multiple attributes, separate them by commas within the
double parentheses: for example, @samp{__attribute__ ((aligned (16),
packed))}.
@node Type Attributes @node Type Attributes
@section Specifying Attributes of Types @section Specifying Attributes of Types
@cindex attribute of types @cindex attribute of types
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment