This patch to godump.cc adds support for BITINT_TYPE.  Bootstrapped
and ran godump and Go tests on x86_64-pc-linux-gnu.  Committed to
mainline.

Ian

gcc/
            PR go/111310
            * godump.cc (go_format_type): Handle BITINT_TYPE.

gcc/testsuite/
            PR go/111310
           * gcc.misc-tests/godump-1.c: Add _BitInt test cases.
diff --git a/gcc/godump.cc b/gcc/godump.cc
index 0893d5fbc97..bdd2d108d76 100644
--- a/gcc/godump.cc
+++ b/gcc/godump.cc
@@ -760,6 +760,25 @@ go_format_type (class godump_container *container, tree 
type,
       }
       break;
 
+    case BITINT_TYPE:
+      {
+       const char *s;
+       char buf[100];
+
+       s = go_get_uinttype_for_precision (TYPE_PRECISION (type),
+                                          TYPE_UNSIGNED (type));
+       if (s == NULL)
+         {
+           snprintf (buf, sizeof buf, "INVALID-bitint-%u%s",
+                     TYPE_PRECISION (type),
+                     TYPE_UNSIGNED (type) ? "u" : "");
+           s = buf;
+           ret = false;
+         }
+       obstack_grow (ob, s, strlen(s));
+      }
+      break;
+
     case REAL_TYPE:
       {
        const char *s;
diff --git a/gcc/testsuite/gcc.misc-tests/godump-1.c 
b/gcc/testsuite/gcc.misc-tests/godump-1.c
index 95dabdc0e4c..f359a657827 100644
--- a/gcc/testsuite/gcc.misc-tests/godump-1.c
+++ b/gcc/testsuite/gcc.misc-tests/godump-1.c
@@ -234,6 +234,17 @@ const char cc_v1;
 cc_t cc_v2;
 /* { dg-final { scan-file godump-1.out "(?n)^var _cc_v2 _cc_t$" } } */
 
+_BitInt(32) b32_v;
+/* { dg-final { scan-file godump-1.out "(?n)^var _b32_v int32$" } } */
+
+_BitInt(64) b64_v;
+/* { dg-final { scan-file godump-1.out "(?n)^var _b64_v int64$" } } */
+
+unsigned _BitInt(32) b32u_v;
+/* { dg-final { scan-file godump-1.out "(?n)^var _b32u_v uint32$" } } */
+
+_BitInt(33) b33_v;
+/* { dg-final { scan-file godump-1.out "(?n)^// var _b33_v INVALID-bitint-33$" 
} } */
 
 /*** pointer and array types ***/
 typedef void *vp_t;

Reply via email to