summaryrefslogtreecommitdiff
path: root/gcc/c-family
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-03-31 08:40:39 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2017-03-31 08:40:39 +0200
commitaf88f55707d3373b94c02237af2863d2ad700063 (patch)
treecdd1f27aaae10888509d5ce06f0f1ca486071e92 /gcc/c-family
parent7d790165457c7c6912ed98da4a64d9b020c6f483 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/c-family/c-common.c1
-rw-r--r--gcc/c-family/c-common.h4
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,