On 04/28/2016 08:18 PM, Paolo Carlini wrote:
else if (ANON_AGGR_TYPE_P (type)) { - tree fields; - - for (fields = TYPE_FIELDS (type); fields; fields = DECL_CHAIN (fields)) + for (tree fields = TYPE_FIELDS (type); fields; + fields = DECL_CHAIN (fields)) if (TREE_CODE (fields) == FIELD_DECL && !DECL_C_BIT_FIELD (field)) - check_field_decl (fields, t, cant_have_const_ctor, - no_const_asn_ref, any_default_members); + any_default_members_field |= check_field_decl (fields, t, + cant_have_const_ctor, + no_const_asn_ref, + any_default_members);
The logic here seems convoluted. I guess we don't need to handle anonymous structs and unions differently here because we'll call check_field_decls for the anonymous union itself, and complain then? In that case, instead of passing down any_default_members at all, can we just pass it up and complain in check_field_decls?
Jason