aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-04-27 21:45:00 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-04-27 21:45:00 -0400
commit012e6a1e049a8b2706203876ee1418140842fcb3 (patch)
treec2296c5c8b487ee3dbf8f77fa467e82918b66114 /gcc
parenta8ae19777a60d325671b8d0121eded97d0e82604 (diff)
downloadgcc-012e6a1e049a8b2706203876ee1418140842fcb3.zip
gcc-012e6a1e049a8b2706203876ee1418140842fcb3.tar.gz
gcc-012e6a1e049a8b2706203876ee1418140842fcb3.tar.bz2
* init.c (perform_member_init): Check CLASS_TYPE_P.
From-SVN: r158822
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/init.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3935cc2..6d09c80 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2010-04-27 Jason Merrill <jason@redhat.com>
+
+ * init.c (perform_member_init): Check CLASS_TYPE_P.
+
2010-04-27 Fabien ChĂȘne <fabien.chene@gmail.com>
PR c++/29043
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 57b874d..5f0f665 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -518,9 +518,11 @@ perform_member_init (tree member, tree init)
member, type);
core_type = strip_array_types (type);
- if (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type)
- || CLASSTYPE_REF_FIELDS_NEED_INIT (core_type))
- diagnose_uninitialized_cst_or_ref_member (core_type, /*using_new=*/false);
+ if (CLASS_TYPE_P (core_type)
+ && (CLASSTYPE_READONLY_FIELDS_NEED_INIT (core_type)
+ || CLASSTYPE_REF_FIELDS_NEED_INIT (core_type)))
+ diagnose_uninitialized_cst_or_ref_member (core_type,
+ /*using_new=*/false);
}
else if (TREE_CODE (init) == TREE_LIST)
/* There was an explicit member initialization. Do some work