godump.c (go_output_typedef): When outputting a typedef...
authorNikhil Benesch <nikhil.benesch@gmail.com>
Tue, 15 Jan 2019 23:54:37 +0000 (23:54 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 15 Jan 2019 23:54:37 +0000 (23:54 +0000)
gcc/:
        * godump.c (go_output_typedef): When outputting a typedef, refer
to the underlying type by its name and not its structure.
gcc/testsuite:
        * gcc.misc-tests/godump-1.c: Add test case for typedef before
struct.

From-SVN: r267958

gcc/ChangeLog
gcc/godump.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.misc-tests/godump-1.c

index e1ae217c03c2bc7e817e351fcd9f9ee3b4bb9b2e..153a5ab0951c633b809399095d5bb21e43781440 100644 (file)
@@ -1,3 +1,8 @@
+2019-01-15  Nikhil Benesch  <nikhil.benesch@gmail.com>
+
+        * godump.c (go_output_typedef): When outputting a typedef, refer
+       to the underlying type by its name and not its structure.
+
 2019-01-15  David Malcolm  <dmalcolm@redhat.com>
 
        PR c++/88795
index 17390b8be624a2e60a9343676c9f62ab1863b896..617a96486cd07daea82cc3d8b8aaed10ca8e36d1 100644 (file)
@@ -1181,7 +1181,7 @@ go_output_typedef (struct godump_container *container, tree decl)
        return;
       *slot = CONST_CAST (void *, (const void *) type);
 
-      if (!go_format_type (container, TREE_TYPE (decl), false, false, NULL,
+      if (!go_format_type (container, TREE_TYPE (decl), true, false, NULL,
                           false))
        {
          fprintf (go_dump_file, "// ");
index d226aa54af6fafc80a1fb7b2312ce40af152073c..f032b48a37e7a1e13780d758a8c196a166f24c18 100644 (file)
@@ -1,3 +1,8 @@
+2019-01-15  Nikhil Benesch  <nikhil.benesch@gmail.com>
+
+        * gcc.misc-tests/godump-1.c: Add test case for typedef before
+       struct.
+
 2019-01-15  David Malcolm  <dmalcolm@redhat.com>
 
        PR c++/88795
index ee984e5b574f0bd284bc1b0da74f0d067371592e..f97bbecc9bc822ce8f2bf0ebb2a5cbf11968d241 100644 (file)
@@ -468,6 +468,11 @@ struct { double d; uint8_t : 0; } sd_not_equiv;
 
 typedef struct s_undef_t s_undef_t2;
 
+typedef struct s_fwd *s_fwd_p;
+/* { dg-final { scan-file godump-1.out "(?n)^type _s_fwd_p \\*_s_fwd$" } } */
+
+struct s_fwd { };
+/* { dg-final { scan-file godump-1.out "(?n)^type _s_fwd struct \{ \}$" } } */
 
 /*** nested structs ***/
 typedef struct { struct { uint8_t ca[3]; } s; uint32_t i; } tsn;