diff options
author | Ben Cheng <bccheng@google.com> | 2014-04-22 13:33:12 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2014-04-22 13:33:12 -0700 |
commit | e3cc64dec20832769406aa38cde83c7dd4194bf4 (patch) | |
tree | ef8e39be37cfe0cb69d850043b7924389ff17164 /gcc-4.9/gcc/doc/extend.texi | |
parent | f33c7b3122b1d7950efa88067c9a156229ba647b (diff) | |
download | toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.tar.gz toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.tar.bz2 toolchain_gcc-e3cc64dec20832769406aa38cde83c7dd4194bf4.zip |
[4.9] GCC 4.9.0 official release refresh
Change-Id: Ic99a7da8b44b789a48aeec93b33e93944d6e6767
Diffstat (limited to 'gcc-4.9/gcc/doc/extend.texi')
-rw-r--r-- | gcc-4.9/gcc/doc/extend.texi | 66 |
1 files changed, 60 insertions, 6 deletions
diff --git a/gcc-4.9/gcc/doc/extend.texi b/gcc-4.9/gcc/doc/extend.texi index 986cc94e3..347a94a3a 100644 --- a/gcc-4.9/gcc/doc/extend.texi +++ b/gcc-4.9/gcc/doc/extend.texi @@ -1592,6 +1592,18 @@ Jumping or breaking out of the scope of the array name deallocates the storage. Jumping into the scope is not allowed; you get an error message for it. +@cindex variable-length array in a structure +As an extension, GCC accepts variable-length arrays as a member of +a structure or a union. For example: + +@smallexample +void +foo (int n) +@{ + struct S @{ int x[n]; @}; +@} +@end smallexample + @cindex @code{alloca} vs variable-length arrays You can use the function @code{alloca} to get an effect much like variable-length arrays. The function @code{alloca} is available in @@ -1967,6 +1979,9 @@ Another syntax that has the same meaning, obsolete since GCC 2.5, is struct point p = @{ y: yvalue, x: xvalue @}; @end smallexample +Omitted field members are implicitly initialized the same as objects +that have static storage duration. + @cindex designators The @samp{[@var{index}]} or @samp{.@var{fieldname}} is known as a @dfn{designator}. You can also use a designator (or the obsolete colon @@ -6343,7 +6358,7 @@ int foo () int *y = &x; int result; asm ("magic stuff accessing an 'int' pointed to by '%1'" - : "=&d" (r) : "a" (y), "m" (*y)); + : "=&d" (result) : "a" (y), "m" (*y)); return result; @} @end smallexample @@ -8963,7 +8978,7 @@ Similar to @code{__builtin_nans}, except the return type is @code{float}. Similar to @code{__builtin_nans}, except the return type is @code{long double}. @end deftypefn -@deftypefn {Built-in Function} int __builtin_ffs (unsigned int x) +@deftypefn {Built-in Function} int __builtin_ffs (int x) Returns one plus the index of the least significant 1-bit of @var{x}, or if @var{x} is zero, returns zero. @end deftypefn @@ -8993,9 +9008,9 @@ Returns the parity of @var{x}, i.e.@: the number of 1-bits in @var{x} modulo 2. @end deftypefn -@deftypefn {Built-in Function} int __builtin_ffsl (unsigned long) +@deftypefn {Built-in Function} int __builtin_ffsl (long) Similar to @code{__builtin_ffs}, except the argument type is -@code{unsigned long}. +@code{long}. @end deftypefn @deftypefn {Built-in Function} int __builtin_clzl (unsigned long) @@ -9023,9 +9038,9 @@ Similar to @code{__builtin_parity}, except the argument type is @code{unsigned long}. @end deftypefn -@deftypefn {Built-in Function} int __builtin_ffsll (unsigned long long) +@deftypefn {Built-in Function} int __builtin_ffsll (long long) Similar to @code{__builtin_ffs}, except the argument type is -@code{unsigned long long}. +@code{long long}. @end deftypefn @deftypefn {Built-in Function} int __builtin_clzll (unsigned long long) @@ -14844,6 +14859,35 @@ void vec_vsx_st (vector unsigned char, int, unsigned char *); void vec_vsx_st (vector bool char, int, vector bool char *); void vec_vsx_st (vector bool char, int, unsigned char *); void vec_vsx_st (vector bool char, int, signed char *); + +vector double vec_xxpermdi (vector double, vector double, int); +vector float vec_xxpermdi (vector float, vector float, int); +vector long long vec_xxpermdi (vector long long, vector long long, int); +vector unsigned long long vec_xxpermdi (vector unsigned long long, + vector unsigned long long, int); +vector int vec_xxpermdi (vector int, vector int, int); +vector unsigned int vec_xxpermdi (vector unsigned int, + vector unsigned int, int); +vector short vec_xxpermdi (vector short, vector short, int); +vector unsigned short vec_xxpermdi (vector unsigned short, + vector unsigned short, int); +vector signed char vec_xxpermdi (vector signed char, vector signed char, int); +vector unsigned char vec_xxpermdi (vector unsigned char, + vector unsigned char, int); + +vector double vec_xxsldi (vector double, vector double, int); +vector float vec_xxsldi (vector float, vector float, int); +vector long long vec_xxsldi (vector long long, vector long long, int); +vector unsigned long long vec_xxsldi (vector unsigned long long, + vector unsigned long long, int); +vector int vec_xxsldi (vector int, vector int, int); +vector unsigned int vec_xxsldi (vector unsigned int, vector unsigned int, int); +vector short vec_xxsldi (vector short, vector short, int); +vector unsigned short vec_xxsldi (vector unsigned short, + vector unsigned short, int); +vector signed char vec_xxsldi (vector signed char, vector signed char, int); +vector unsigned char vec_xxsldi (vector unsigned char, + vector unsigned char, int); @end smallexample Note that the @samp{vec_ld} and @samp{vec_st} built-in functions always @@ -15031,6 +15075,9 @@ vector unsigned long long vec_vaddudm (vector bool unsigned long long, vector unsigned long long vec_vaddudm (vector unsigned long long, vector bool unsigned long long); +vector long long vec_vbpermq (vector signed char, vector signed char); +vector long long vec_vbpermq (vector unsigned char, vector unsigned char); + vector long long vec_vclz (vector long long); vector unsigned long long vec_vclz (vector unsigned long long); vector int vec_vclz (vector int); @@ -15052,6 +15099,9 @@ vector unsigned short vec_vclzh (vector unsigned short); vector int vec_vclzw (vector int); vector unsigned int vec_vclzw (vector int); +vector signed char vec_vgbbd (vector signed char); +vector unsigned char vec_vgbbd (vector unsigned char); + vector long long vec_vmaxsd (vector long long, vector long long); vector unsigned long long vec_vmaxud (vector unsigned long long, @@ -17495,6 +17545,10 @@ unimportant. A redeclaration of a function or class must not add new ABI tags, since doing so would change the mangled name. +The ABI tags apply to a name, so all instantiations and +specializations of a template have the same tags. The attribute will +be ignored if applied to an explicit specialization or instantiation. + The @option{-Wabi-tag} flag enables a warning about a class which does not have all the ABI tags used by its subobjects and virtual functions; for users with code that needs to coexist with an earlier ABI, using this option can help |