From 29ca15bb297d2a4c98224f8518206547432c2b69 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 16 Aug 2019 22:49:23 +0000 Subject: [PATCH] compiler: print runtime.hex in hex 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 | 2 +- gcc/go/gofrontend/expressions.cc | 8 +++++++- gcc/go/gofrontend/runtime.def | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index ba7282efde4..48b42496965 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -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. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index abc4bba4e17..995a18c71b8 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -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) { diff --git a/gcc/go/gofrontend/runtime.def b/gcc/go/gofrontend/runtime.def index c754739227e..dfd6ebd5e0a 100644 --- a/gcc/go/gofrontend/runtime.def +++ b/gcc/go/gofrontend/runtime.def @@ -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()) -- 2.30.2