diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 7d5c0aa7e0d..a18e3f3b9f9 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -ea7ac7784791dca517b6681a02c39c11bf136755 +267686fd1dffbc03e610e9f17dadb4e72c75f18d 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/gogo.cc b/gcc/go/gofrontend/gogo.cc index eb31aa20f51..c89785c2237 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -7604,7 +7604,7 @@ Named_object::get_backend(Gogo* gogo, std::vector& const_decls, case NAMED_OBJECT_TYPE: { Named_type* named_type = this->u_.type_value; - if (!Gogo::is_erroneous_name(this->name_)) + if (!Gogo::is_erroneous_name(this->name_) && !named_type->is_alias()) type_decls.push_back(named_type->get_backend(gogo)); // We need to produce a type descriptor for every named diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index e5f84c51549..07819e23c8d 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -991,6 +991,11 @@ Type::get_backend(Gogo* gogo) if (this->btype_ != NULL) return this->btype_; + if (this->named_type() != NULL && this->named_type()->is_alias()) { + this->btype_ = this->unalias()->get_backend(gogo); + return this->btype_; + } + if (this->forward_declaration_type() != NULL || this->named_type() != NULL) return this->get_btype_without_hash(gogo);