diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 55c2e609606..8c99b75aa56 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2016-11-13 Eric Botcazou + + * c-ada-spec.c (print_ada_declaration): For typedef declarations, look + for nested types only if the type is a record or union and dump SLOC. + 2016-11-09 Jason Merrill * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_template_auto. diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index a5395b69489..42a2cd3a302 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -2813,7 +2813,7 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) } else { - if (!TREE_VISITED (stub) + if (RECORD_OR_UNION_TYPE_P (typ) && DECL_SOURCE_FILE (stub) == source_file_base) dump_nested_types (buffer, stub, stub, true, spc); @@ -2821,7 +2821,8 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc) dump_generic_ada_node (buffer, t, type, spc, false, true); pp_string (buffer, " is "); dump_generic_ada_node (buffer, typ, type, spc, false, true); - pp_semicolon (buffer); + pp_string (buffer, "; -- "); + dump_sloc (buffer, t); } TREE_VISITED (t) = 1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 37ddec7723a..ee0282c7870 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-11-13 Eric Botcazou + + * c-c++-common/dump-ada-spec-6.c: New test. + 2016-11-13 Eric Botcazou * gnat.dg/lto21.adb: New test. diff --git a/gcc/testsuite/c-c++-common/dump-ada-spec-6.c b/gcc/testsuite/c-c++-common/dump-ada-spec-6.c new file mode 100644 index 00000000000..fb31b3bca00 --- /dev/null +++ b/gcc/testsuite/c-c++-common/dump-ada-spec-6.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-fdump-ada-spec" } */ + +typedef enum { + Zero +} MyEnum; + +typedef MyEnum SomethingElse; + +/* { dg-final { cleanup-ada-spec } } */