From: Ian Lance Taylor Date: Wed, 9 Jan 2019 00:05:12 +0000 (+0000) Subject: compiler: use int type for len & cap in slice value X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fc490e0478f67c12e9662c177fed87f47456cea5;p=gcc.git compiler: use int type for len & cap in slice value Slice value expression has backend type a struct of a pointer and two ints. Make sure the len and cap are converted to int when creating slice value expression. Reviewed-on: https://go-review.googlesource.com/c/156897 From-SVN: r267745 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 267c32b4fd0..40e5a2e8649 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -085ef4556ec810a5a9c422e7b86d98441dc92e86 +960637781ca9546ea2db913e48afd7eccbdadfa9 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 71f18002733..4854c3cb2a3 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -7821,8 +7821,10 @@ Builtin_call_expression::lower_make(Statement_inserter* inserter) cap_arg); mem = Expression::make_unsafe_cast(Type::make_pointer_type(et), mem, loc); - call = Expression::make_slice_value(type, mem, len_arg->copy(), - cap_arg->copy(), loc); + Type* int_type = Type::lookup_integer_type("int"); + len_arg = Expression::make_cast(int_type, len_arg->copy(), loc); + cap_arg = Expression::make_cast(int_type, cap_arg->copy(), loc); + call = Expression::make_slice_value(type, mem, len_arg, cap_arg, loc); } else if (is_map) {