aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2022-02-12 14:54:21 -0800
committerIan Lance Taylor <iant@golang.org>2022-02-13 10:54:26 -0800
commit033ec967ec5583ea978d16ca83f9563c518e6dc6 (patch)
treef319ea0c5a9db9f9e81c5a528a589c194c4e410d
parent57da34939703a6e6d3267a0d25d1fb9369d3ac0e (diff)
downloadgcc-033ec967ec5583ea978d16ca83f9563c518e6dc6.zip
gcc-033ec967ec5583ea978d16ca83f9563c518e6dc6.tar.gz
gcc-033ec967ec5583ea978d16ca83f9563c518e6dc6.tar.bz2
compiler: don't set ptrmask bit for pointer to notinheap type
Test case is https://go.dev/cl/385454. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/385474
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/types.cc9
2 files changed, 4 insertions, 7 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 4e6bac7..02a6e1d 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-47380f733ca932384e59492d2f04374edd8ec95e
+7f8fee099d6de4a5a857765e0ddfae356ead554c
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/types.cc b/gcc/go/gofrontend/types.cc
index ee34676..8267f15 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -2816,6 +2816,9 @@ class Ptrmask
void
Ptrmask::set_from(Gogo* gogo, Type* type, int64_t ptrsize, int64_t offset)
{
+ if (!type->has_pointer())
+ return;
+
switch (type->base()->classification())
{
default:
@@ -2858,9 +2861,6 @@ Ptrmask::set_from(Gogo* gogo, Type* type, int64_t ptrsize, int64_t offset)
case Type::TYPE_STRUCT:
{
- if (!type->has_pointer())
- return;
-
const Struct_field_list* fields = type->struct_type()->fields();
int64_t soffset = 0;
for (Struct_field_list::const_iterator pf = fields->begin();
@@ -2898,9 +2898,6 @@ Ptrmask::set_from(Gogo* gogo, Type* type, int64_t ptrsize, int64_t offset)
}
else
{
- if (!type->has_pointer())
- return;
-
int64_t len;
if (!type->array_type()->int_length(&len))
{