compiler: print runtime.hex in hex
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 16 Aug 2019 22:49:23 +0000 (22:49 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 16 Aug 2019 22:49:23 +0000 (22:49 +0000)
    The gc compiler recognizes the type runtime.hex and prints values
    in this type as hex. Do the same here. This makes debugging
    runtime crashes slightly better.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190597

From-SVN: r274591

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/runtime.def

index ba7282efde459375131829217ee89debddaec54c..48b42496965bb9028035ba2c79353e5d36fb3a55 100644 (file)
@@ -1,4 +1,4 @@
-480477ca64c3001b9c7e92ef8b978dc92a5912d2
+0f6d673d5b1a3474c3424cb6994ae8ff9baed255
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index abc4bba4e17dc79c2153eddcf58638ce7b3a11b3..995a18c71b84656e2975fd9997a8270aa8a5c839 100644 (file)
@@ -10294,7 +10294,13 @@ Builtin_call_expression::do_get_backend(Translate_context* context)
                  {
                    Type* itype = Type::lookup_integer_type("uint64");
                    arg = Expression::make_cast(itype, arg, location);
-                    code = Runtime::PRINTUINT;
+                    if (gogo->compiling_runtime()
+                        && type->named_type() != NULL
+                        && gogo->unpack_hidden_name(type->named_type()->name())
+                           == "hex")
+                      code = Runtime::PRINTHEX;
+                    else
+                      code = Runtime::PRINTUINT;
                  }
                else if (type->integer_type() != NULL)
                  {
index c754739227ebf45d5bbfd45724471810690252be..dfd6ebd5e0ae37fcccb2e80bde6202c563515635 100644 (file)
@@ -384,6 +384,9 @@ DEF_GO_RUNTIME(PRINTSTRING, "runtime.printstring", P1(STRING), R0())
 // Print a uint64 (for print/println).
 DEF_GO_RUNTIME(PRINTUINT, "runtime.printuint", P1(UINT64), R0())
 
+// Print a uint64 in hex (for print/println, used for runtime.hex type).
+DEF_GO_RUNTIME(PRINTHEX, "runtime.printhex", P1(UINT64), R0())
+
 // Print a int64 (for print/println).
 DEF_GO_RUNTIME(PRINTINT, "runtime.printint", P1(INT64), R0())