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

Reply via email to