Commit 2c81daee by Ian Lance Taylor

compiler: build a single backend type for type alias

    
    A type alias and its underlying type are identical. Build a
    single backend type for them. Previously we build two backend
    types, which sometimes confuse the backend's type system.
    
    Also don't include type aliases into the list of named type
    declarations, since they are not named types.
    
    Reviewed-on: https://go-review.googlesource.com/123362

From-SVN: r262572
parent 9d196169
ea7ac7784791dca517b6681a02c39c11bf136755
267686fd1dffbc03e610e9f17dadb4e72c75f18d
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -7604,7 +7604,7 @@ Named_object::get_backend(Gogo* gogo, std::vector<Bexpression*>& 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
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment