diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-03-31 08:40:39 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-03-31 08:40:39 +0200 |
commit | af88f55707d3373b94c02237af2863d2ad700063 (patch) | |
tree | cdd1f27aaae10888509d5ce06f0f1ca486071e92 /gcc/c-family | |
parent | 7d790165457c7c6912ed98da4a64d9b020c6f483 (diff) | |
download | gcc-af88f55707d3373b94c02237af2863d2ad700063.tar.gz |
re PR libstdc++/80251 (Is the is_aggregate meta function missing?)
PR libstdc++/80251
c-family/
* c-common.h (enum rid): Add RID_IS_AGGREGATE.
* c-common.c (c_common_reswords): Add __is_aggregate trait.
cp/
* cp-tree.h (enum cp_trait_kind): Add CPTK_IS_AGGREGATE.
* cxx-pretty-print.c (pp_cxx_trait_expression): Handle
CPTK_IS_AGGREGATE.
* semantics.c (trait_expr_value): Handle CPTK_IS_AGGREGATE.
Remove extraneous parens.
(finish_trait_expr): Handle CPTK_IS_AGGREGATE.
* parser.c (cp_parser_primary_expression): Handle RID_IS_AGGREGATE.
(cp_parser_trait_expr): Likewise.
testsuite/
* g++.dg/ext/is_aggregate.C: New test.
From-SVN: r246609
Diffstat (limited to 'gcc/c-family')
-rw-r--r-- | gcc/c-family/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 1 | ||||
-rw-r--r-- | gcc/c-family/c-common.h | 4 |
3 files changed, 9 insertions, 2 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 0b543ec52f6..a129f5def77 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2017-03-31 Jakub Jelinek <jakub@redhat.com> + + PR libstdc++/80251 + * c-common.h (enum rid): Add RID_IS_AGGREGATE. + * c-common.c (c_common_reswords): Add __is_aggregate trait. + 2017-03-27 Jakub Jelinek <jakub@redhat.com> PR middle-end/80162 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 07af384cd6b..824fdc71233 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -403,6 +403,7 @@ const struct c_common_resword c_common_reswords[] = { "__inline", RID_INLINE, 0 }, { "__inline__", RID_INLINE, 0 }, { "__is_abstract", RID_IS_ABSTRACT, D_CXXONLY }, + { "__is_aggregate", RID_IS_AGGREGATE, D_CXXONLY }, { "__is_base_of", RID_IS_BASE_OF, D_CXXONLY }, { "__is_class", RID_IS_CLASS, D_CXXONLY }, { "__is_empty", RID_IS_EMPTY, D_CXXONLY }, diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h index ac86712ceaf..b9333420434 100644 --- a/gcc/c-family/c-common.h +++ b/gcc/c-family/c-common.h @@ -162,8 +162,8 @@ enum rid RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR, RID_HAS_UNIQUE_OBJ_REPRESENTATIONS, RID_HAS_VIRTUAL_DESTRUCTOR, - RID_IS_ABSTRACT, RID_IS_BASE_OF, - RID_IS_CLASS, + RID_IS_ABSTRACT, RID_IS_AGGREGATE, + RID_IS_BASE_OF, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM, RID_IS_FINAL, RID_IS_LITERAL_TYPE, RID_IS_POD, RID_IS_POLYMORPHIC, |