Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 262658) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -db991403fc97854201b3f40492f4f6b9d471cabc +d6338c94e5574b63469c740159d064e89c6718bf The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: gcc/go/gofrontend/types.cc =================================================================== --- gcc/go/gofrontend/types.cc (revision 262658) +++ gcc/go/gofrontend/types.cc (working copy) @@ -10786,15 +10786,10 @@ Named_type::do_get_backend(Gogo* gogo) // Don't build a circular data structure. GENERIC can't handle // it. if (this->seen_in_get_backend_) - { - this->is_circular_ = true; - return gogo->backend()->circular_pointer_type(bt, true); - } + return gogo->backend()->circular_pointer_type(bt, true); this->seen_in_get_backend_ = true; bt1 = Type::get_named_base_btype(gogo, base); this->seen_in_get_backend_ = false; - if (this->is_circular_) - bt1 = gogo->backend()->circular_pointer_type(bt, true); if (!gogo->backend()->set_placeholder_pointer_type(bt, bt1)) bt = gogo->backend()->error_type(); return bt; @@ -10803,15 +10798,10 @@ Named_type::do_get_backend(Gogo* gogo) // Don't build a circular data structure. GENERIC can't handle // it. if (this->seen_in_get_backend_) - { - this->is_circular_ = true; - return gogo->backend()->circular_pointer_type(bt, false); - } + return gogo->backend()->circular_pointer_type(bt, false); this->seen_in_get_backend_ = true; bt1 = Type::get_named_base_btype(gogo, base); this->seen_in_get_backend_ = false; - if (this->is_circular_) - bt1 = gogo->backend()->circular_pointer_type(bt, false); if (!gogo->backend()->set_placeholder_pointer_type(bt, bt1)) bt = gogo->backend()->error_type(); return bt; Index: gcc/go/gofrontend/types.h =================================================================== --- gcc/go/gofrontend/types.h (revision 262658) +++ gcc/go/gofrontend/types.h (working copy) @@ -3243,8 +3243,8 @@ class Named_type : public Type interface_method_tables_(NULL), pointer_interface_method_tables_(NULL), location_(location), named_btype_(NULL), dependencies_(), is_alias_(false), is_visible_(true), is_error_(false), in_heap_(true), - is_placeholder_(false), is_converted_(false), is_circular_(false), - is_verified_(false), seen_(false), seen_in_compare_is_identity_(false), + is_placeholder_(false), is_converted_(false), is_verified_(false), + seen_(false), seen_in_compare_is_identity_(false), seen_in_get_backend_(false), seen_alias_(false) { } @@ -3345,12 +3345,6 @@ class Named_type : public Type is_valid() const { return !this->is_error_; } - // Whether this is a circular type: a pointer or function type that - // refers to itself, which is not possible in C. - bool - is_circular() const - { return this->is_circular_; } - // Return the base type for this type. Type* named_base(); @@ -3557,9 +3551,6 @@ class Named_type : public Type // Whether this type has been converted to the backend // representation. Implies that is_placeholder_ is false. bool is_converted_; - // Whether this is a pointer or function type which refers to the - // type itself. - bool is_circular_; // Whether this type has been verified. bool is_verified_; // In a recursive operation such as has_pointer, this flag is used