c-common.h (enum rid): Add RID_IS_TRIVIALLY_COPYABLE.
c-family/ * c-common.h (enum rid): Add RID_IS_TRIVIALLY_COPYABLE. * c-common.c (c_common_reswords): Add __is_trivially_copyable. cp/ * cp-tree.h (cp_trait_kind): Add CPTK_IS_TRIVIALLY_COPYABLE. * cxx-pretty-print.c (pp_cxx_trait_expression): Likewise. * parser.c (cp_parser_primary_expression): Likewise. (cp_parser_trait_expr): Likewise. * semantics.c (trait_expr_value): Likewise. (finish_trait_expr): Likewise. From-SVN: r215737
This commit is contained in:
parent
32f3d03254
commit
b752325e94
@ -1,5 +1,8 @@
|
||||
2014-09-30 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* c-common.h (enum rid): Add RID_IS_TRIVIALLY_COPYABLE.
|
||||
* c-common.c (c_common_reswords): Add __is_trivially_copyable.
|
||||
|
||||
* c-common.h (enum rid): Remove RID_IS_CONVERTIBLE_TO.
|
||||
* c-common.c (c_common_reswords): Remove __is_convertible_to.
|
||||
|
||||
|
@ -480,6 +480,7 @@ const struct c_common_resword c_common_reswords[] =
|
||||
{ "__is_polymorphic", RID_IS_POLYMORPHIC, D_CXXONLY },
|
||||
{ "__is_standard_layout", RID_IS_STD_LAYOUT, D_CXXONLY },
|
||||
{ "__is_trivial", RID_IS_TRIVIAL, D_CXXONLY },
|
||||
{ "__is_trivially_copyable", RID_IS_TRIVIALLY_COPYABLE, D_CXXONLY },
|
||||
{ "__is_union", RID_IS_UNION, D_CXXONLY },
|
||||
{ "__label__", RID_LABEL, 0 },
|
||||
{ "__null", RID_NULL, 0 },
|
||||
|
@ -143,6 +143,7 @@ enum rid
|
||||
RID_IS_FINAL, RID_IS_LITERAL_TYPE,
|
||||
RID_IS_POD, RID_IS_POLYMORPHIC,
|
||||
RID_IS_STD_LAYOUT, RID_IS_TRIVIAL,
|
||||
RID_IS_TRIVIALLY_COPYABLE,
|
||||
RID_IS_UNION, RID_UNDERLYING_TYPE,
|
||||
|
||||
/* C++11 */
|
||||
|
@ -1,5 +1,12 @@
|
||||
2014-09-30 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp-tree.h (cp_trait_kind): Add CPTK_IS_TRIVIALLY_COPYABLE.
|
||||
* cxx-pretty-print.c (pp_cxx_trait_expression): Likewise.
|
||||
* parser.c (cp_parser_primary_expression): Likewise.
|
||||
(cp_parser_trait_expr): Likewise.
|
||||
* semantics.c (trait_expr_value): Likewise.
|
||||
(finish_trait_expr): Likewise.
|
||||
|
||||
* method.c (build_stub_object): Use CONVERT_EXPR.
|
||||
* tree.c (build_dummy_object): Likewise.
|
||||
(is_dummy_object): Adjust.
|
||||
|
@ -653,6 +653,7 @@ typedef enum cp_trait_kind
|
||||
CPTK_IS_POLYMORPHIC,
|
||||
CPTK_IS_STD_LAYOUT,
|
||||
CPTK_IS_TRIVIAL,
|
||||
CPTK_IS_TRIVIALLY_COPYABLE,
|
||||
CPTK_IS_UNION,
|
||||
CPTK_UNDERLYING_TYPE
|
||||
} cp_trait_kind;
|
||||
|
@ -2393,6 +2393,9 @@ pp_cxx_trait_expression (cxx_pretty_printer *pp, tree t)
|
||||
case CPTK_IS_TRIVIAL:
|
||||
pp_cxx_ws_string (pp, "__is_trivial");
|
||||
break;
|
||||
case CPTK_IS_TRIVIALLY_COPYABLE:
|
||||
pp_cxx_ws_string (pp, "__is_trivially_copyable");
|
||||
break;
|
||||
case CPTK_IS_UNION:
|
||||
pp_cxx_ws_string (pp, "__is_union");
|
||||
break;
|
||||
|
@ -4490,6 +4490,7 @@ cp_parser_primary_expression (cp_parser *parser,
|
||||
case RID_IS_POLYMORPHIC:
|
||||
case RID_IS_STD_LAYOUT:
|
||||
case RID_IS_TRIVIAL:
|
||||
case RID_IS_TRIVIALLY_COPYABLE:
|
||||
case RID_IS_UNION:
|
||||
return cp_parser_trait_expr (parser, token->keyword);
|
||||
|
||||
@ -8724,6 +8725,9 @@ cp_parser_trait_expr (cp_parser* parser, enum rid keyword)
|
||||
case RID_IS_TRIVIAL:
|
||||
kind = CPTK_IS_TRIVIAL;
|
||||
break;
|
||||
case RID_IS_TRIVIALLY_COPYABLE:
|
||||
kind = CPTK_IS_TRIVIALLY_COPYABLE;
|
||||
break;
|
||||
case RID_IS_UNION:
|
||||
kind = CPTK_IS_UNION;
|
||||
break;
|
||||
|
@ -7379,6 +7379,9 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2)
|
||||
case CPTK_IS_TRIVIAL:
|
||||
return (trivial_type_p (type1));
|
||||
|
||||
case CPTK_IS_TRIVIALLY_COPYABLE:
|
||||
return (trivially_copyable_p (type1));
|
||||
|
||||
case CPTK_IS_UNION:
|
||||
return (type_code1 == UNION_TYPE);
|
||||
|
||||
@ -7442,6 +7445,7 @@ finish_trait_expr (cp_trait_kind kind, tree type1, tree type2)
|
||||
case CPTK_IS_POLYMORPHIC:
|
||||
case CPTK_IS_STD_LAYOUT:
|
||||
case CPTK_IS_TRIVIAL:
|
||||
case CPTK_IS_TRIVIALLY_COPYABLE:
|
||||
if (!check_trait_type (type1))
|
||||
return error_mark_node;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user