diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 8 | ||||
-rw-r--r-- | 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 ba7282e..48b4249 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 abc4bba..995a18c 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 c754739..dfd6ebd 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()) |