aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/expressions.cc
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-08-02 16:27:02 -0700
committerIan Lance Taylor <iant@golang.org>2021-08-03 16:36:20 -0700
commitcbbd439a33e889a1a47b103951c53472fc8558eb (patch)
tree5accf4216504db9d9f0d269cac79d1427303ae4c /gcc/go/gofrontend/expressions.cc
parent3a7794b469f897e0141817785738e2faa73119b5 (diff)
downloadgcc-cbbd439a33e889a1a47b103951c53472fc8558eb.zip
gcc-cbbd439a33e889a1a47b103951c53472fc8558eb.tar.gz
gcc-cbbd439a33e889a1a47b103951c53472fc8558eb.tar.bz2
compiler: check slice to pointer-to-array conversion element type
When checking a slice to pointer-to-array conversion, I forgot to verify that the elements types are identical. For golang/go#395 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/339329
Diffstat (limited to 'gcc/go/gofrontend/expressions.cc')
-rw-r--r--gcc/go/gofrontend/expressions.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 15c9eab..51a8b7e 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -3962,7 +3962,10 @@ Type_conversion_expression::do_lower(Gogo*, Named_object*,
if (type->points_to() != NULL
&& type->points_to()->array_type() != NULL
&& !type->points_to()->is_slice_type()
- && val->type()->is_slice_type())
+ && val->type()->is_slice_type()
+ && Type::are_identical(type->points_to()->array_type()->element_type(),
+ val->type()->array_type()->element_type(),
+ 0, NULL))
{
Temporary_statement* val_temp = NULL;
if (!val->is_multi_eval_safe())