Message ID | 20150311180911.GB4981@redhat.com |
---|---|
State | New |
Headers | show |
On Wed, Mar 11, 2015 at 06:09:11PM +0000, Jonathan Wakely wrote: > This is a slightly-modified version of Ed's patch from > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg02357.html which I plan > to commit to CVS tomorrow. > > Index: changes.html > =================================================================== > RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v > retrieving revision 1.88 > diff -u -r1.88 changes.html > --- changes.html 10 Mar 2015 17:34:36 -0000 1.88 > +++ changes.html 11 Mar 2015 18:06:52 -0000 > @@ -189,6 +189,29 @@ > of the standard directive <code>#include</code> > and the extension <code>#include_next</code> respectively. > </li> > + <li>A new built-in function to detect the existence of an attribute, Can you please instead write built-in function-like macro? > + <code>__has_attribute</code>, has been added. The equivalent built-in > + function <code>__has_cpp_attribute</code> was added to C++ to support > + <a href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations"> > + Feature-testing recommendations for C++</a>. > + The function <code>__has_attribute</code> is added to all C-like > + languages as an extension: > +<blockquote><pre> > +int > +#ifdef __has_attribute > +# if __has_attribute(__noinline__) > + __attribute__((__noinline__)) > +# endif > +#endif > +foo(int x); > +</pre></blockquote> > + If an attribute exists a nonzero constant integer is returned. > + For standardized C++ attributes a date is returned, otherwise the > + constant returned is 1. > + The has_attribute macros will add underscores to an attribute name > + if necessary to resolve the name. > + For C++11 and onwards the attribute may be scoped. > + </li> > <li>A new set of built-in functions for arithmetics with overflow checking > has been added: <code>__builtin_add_overflow</code>, > <code>__builtin_sub_overflow</code> and <code>__builtin_mul_overflow</code> Jakub
Index: changes.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-5/changes.html,v retrieving revision 1.88 diff -u -r1.88 changes.html --- changes.html 10 Mar 2015 17:34:36 -0000 1.88 +++ changes.html 11 Mar 2015 18:06:52 -0000 @@ -189,6 +189,29 @@ of the standard directive <code>#include</code> and the extension <code>#include_next</code> respectively. </li> + <li>A new built-in function to detect the existence of an attribute, + <code>__has_attribute</code>, has been added. The equivalent built-in + function <code>__has_cpp_attribute</code> was added to C++ to support + <a href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations"> + Feature-testing recommendations for C++</a>. + The function <code>__has_attribute</code> is added to all C-like + languages as an extension: +<blockquote><pre> +int +#ifdef __has_attribute +# if __has_attribute(__noinline__) + __attribute__((__noinline__)) +# endif +#endif +foo(int x); +</pre></blockquote> + If an attribute exists a nonzero constant integer is returned. + For standardized C++ attributes a date is returned, otherwise the + constant returned is 1. + The has_attribute macros will add underscores to an attribute name + if necessary to resolve the name. + For C++11 and onwards the attribute may be scoped. + </li> <li>A new set of built-in functions for arithmetics with overflow checking has been added: <code>__builtin_add_overflow</code>, <code>__builtin_sub_overflow</code> and <code>__builtin_mul_overflow</code>