+2014-06-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ DR 178
+ PR c++/49132
+ * typeck2.c (process_init_constructor_record): Do not complain about
+ uninitialized const members, because within aggregate-initialization,
+ members without explicit initializers are value-initialized.
+
2014-06-25 Jakub Jelinek <jakub@redhat.com>
* semantics.c (finish_omp_clauses): Make sure
2014-06-24 Jan Hubicka <hubicka@ucw.cz>
* class.c (check_methods, create_vtable_ptr, determine_key_method,
- add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by FUNCTION_DECL check.
+ add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by
+ FUNCTION_DECL check.
* cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
(DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
next = massage_init_elt (TREE_TYPE (field), next, complain);
/* Warn when some struct elements are implicitly initialized. */
- warning (OPT_Wmissing_field_initializers,
- "missing initializer for member %qD", field);
+ if (complain & tf_warning)
+ warning (OPT_Wmissing_field_initializers,
+ "missing initializer for member %qD", field);
}
else
{
- if (TREE_READONLY (field))
+ if (TREE_CODE (TREE_TYPE (field)) == REFERENCE_TYPE)
{
if (complain & tf_error)
- error ("uninitialized const member %qD", field);
- else
- return PICFLAG_ERRONEOUS;
- }
- else if (CLASSTYPE_READONLY_FIELDS_NEED_INIT (TREE_TYPE (field)))
- {
- if (complain & tf_error)
- error ("member %qD with uninitialized const fields", field);
+ error ("member %qD is uninitialized reference", field);
else
return PICFLAG_ERRONEOUS;
}
- else if (TREE_CODE (TREE_TYPE (field)) == REFERENCE_TYPE)
+ else if (CLASSTYPE_REF_FIELDS_NEED_INIT (TREE_TYPE (field)))
{
if (complain & tf_error)
- error ("member %qD is uninitialized reference", field);
+ error ("member %qD with uninitialized reference fields", field);
else
return PICFLAG_ERRONEOUS;
}
/* Warn when some struct elements are implicitly initialized
to zero. */
- warning (OPT_Wmissing_field_initializers,
- "missing initializer for member %qD", field);
+ if (complain & tf_warning)
+ warning (OPT_Wmissing_field_initializers,
+ "missing initializer for member %qD", field);
if (!zero_init_p (TREE_TYPE (field)))
next = build_zero_init (TREE_TYPE (field), /*nelts=*/NULL_TREE,
+2014-06-25 Paolo Carlini <paolo.carlini@oracle.com>
+
+ DR 178
+ PR c++/49132
+ * g++.dg/cpp0x/aggr1.C: New.
+ * g++.dg/cpp0x/aggr2.C: Likewise.
+ * g++.dg/init/aggr11.C: Likewise.
+ * g++.dg/init/aggr12.C: Likewise.
+
2014-06-25 Martin Jambor <mjambor@suse.cz>
* g++.dg/ipa/pr61540.C: Remove dumping test.