godump.cc patch committed: Handle _BitInt

Message ID CAOyqgcUnCVkWey4PYRFUumSx5zSmpv+pN4-L1sWdxF73pVwcTA@mail.gmail.com
State Accepted
Headers
Series godump.cc patch committed: Handle _BitInt |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Ian Lance Taylor Sept. 6, 2023, 10:32 p.m. UTC
  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.
  

Patch

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;