diff -r 7975dbfdedb1 go/types.cc --- a/go/types.cc Tue Dec 21 13:12:12 2010 -0800 +++ b/go/types.cc Tue Dec 21 14:29:10 2010 -0800 @@ -3698,6 +3698,8 @@ void Struct_type::finalize_methods(Gogo* gogo) { + if (this->all_methods_ != NULL) + return; Type::finalize_methods(gogo, this, this->location_, &this->all_methods_); } @@ -6615,6 +6617,9 @@ void Named_type::finalize_methods(Gogo* gogo) { + if (this->all_methods_ != NULL) + return; + if (this->local_methods_ != NULL && (this->points_to() != NULL || this->interface_type() != NULL)) {