diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index 266a7fe0fa4..883036f4e5c 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -2598,16 +2598,6 @@ dump_nested_type (pretty_printer *buffer, tree field, tree t, tree parent, pp_string (buffer, " is "); dump_ada_structure (buffer, field_type, t, true, spc); - - pp_string (buffer, "with Convention => C_Pass_By_Copy"); - - if (TREE_CODE (field_type) == UNION_TYPE) - { - pp_comma (buffer); - newline_and_indent (buffer, spc + 5); - pp_string (buffer, "Unchecked_Union => True"); - } - pp_semicolon (buffer); newline_and_indent (buffer, spc); break; @@ -3318,10 +3308,7 @@ dump_ada_structure (pretty_printer *buffer, tree node, tree type, bool nested, newline_and_indent (buffer, spc); /* We disregard the methods for anonymous nested types. */ - if (nested) - return; - - if (has_nontrivial_methods (node)) + if (has_nontrivial_methods (node) && !nested) { pp_string (buffer, "with Import => True,"); newline_and_indent (buffer, spc + 5); @@ -3339,12 +3326,20 @@ dump_ada_structure (pretty_printer *buffer, tree node, tree type, bool nested, if (bitfield_used) { + char buf[32]; pp_comma (buffer); newline_and_indent (buffer, spc + 5); pp_string (buffer, "Pack => True"); + pp_comma (buffer); + newline_and_indent (buffer, spc + 5); + sprintf (buf, "Alignment => %d", TYPE_ALIGN (node) / BITS_PER_UNIT); + pp_string (buffer, buf); bitfield_used = false; } + if (nested) + return; + need_semicolon = !dump_ada_methods (buffer, node, spc); /* Print the static fields of the structure, if any. */