From abc24d932cf028c4ba363c89aad530fd0f49d93f Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 1 Jun 2018 08:36:20 +0000 Subject: c-ada-spec.c (dump_ada_declaration): Generate a forward declaration for a typedef independently of whether the... * c-ada-spec.c (dump_ada_declaration) : Generate a forward declaration for a typedef independently of whether the declaration of the subtype is generated. From-SVN: r261058 --- gcc/c-family/c-ada-spec.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'gcc/c-family/c-ada-spec.c') diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index bc137a6..30fdb59 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -2734,19 +2734,25 @@ dump_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) if (TYPE_NAME (typ)) { - /* If types have same representation, and same name (ignoring - casing), then ignore the second type. */ + /* If the types have the same name (ignoring casing), then ignore + the second type, but forward declare the first if need be. */ if (type_name (typ) == type_name (TREE_TYPE (t)) || !strcasecmp (type_name (typ), type_name (TREE_TYPE (t)))) { + if (RECORD_OR_UNION_TYPE_P (typ) && !TREE_VISITED (stub)) + { + INDENT (spc); + dump_forward_type (buffer, typ, t, 0); + } + TREE_VISITED (t) = 1; return 0; } INDENT (spc); - if (RECORD_OR_UNION_TYPE_P (typ)) - dump_forward_type (buffer, stub, t, spc); + if (RECORD_OR_UNION_TYPE_P (typ) && !TREE_VISITED (stub)) + dump_forward_type (buffer, typ, t, spc); pp_string (buffer, "subtype "); dump_ada_node (buffer, t, type, spc, false, true); -- cgit v1.1