C++ PATCHes to add __is_trivially_*
Tue Sep 30 17:34:00 GMT 2014
On 09/30/2014 07:13 PM, Jason Merrill wrote:
> Ville asked for help with the necessary compiler intrinsics for the
> is_trivially_* C++11 library traits.
> The first patch cleans up a few oddities I noticed with the existing
> intrinsics. __is_convertible_to was never implemented and isn't
> needed. There's no need for a second grokdeclarator in trait parsing
> since cp_parser_type_id already does a grokdeclarator. And the assert
> at the top of finish_trait_expr is redundant with the gcc_unreachable
> in the switch.
> The second patch adds __is_trivially_copyable, which just uses the
> existing trivially_copyable_p predicate in the compiler.
> The third patch adds __is_trivially_assignable and
> __is_trivially_constructible, which work by building up an expression
> representing assignment or object declaration and then scanning it for
> calls to functions other than trivial special member functions. Note
> that there are still bugs in trivial_fn_p that are exposed by this
Great. I think this can be as well marked as PR c++/26099.
By the way, if I remember correctly, the idea of having
__is_convertible_to leading to unimplemented instead of simply being not
recognized, goes back to this kind of idea:
and Intel too was in favor of somewhat standardizing those intrinsics.
In fact, both current icc and clang++ accept and implement
More information about the Gcc-patches