diff options
author | Ian Lance Taylor <iant@golang.org> | 2022-02-12 14:54:21 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2022-02-13 10:54:26 -0800 |
commit | 033ec967ec5583ea978d16ca83f9563c518e6dc6 (patch) | |
tree | f319ea0c5a9db9f9e81c5a528a589c194c4e410d | |
parent | 57da34939703a6e6d3267a0d25d1fb9369d3ac0e (diff) | |
download | gcc-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/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/types.cc | 9 |
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)) { |