From: ian Date: Mon, 28 Jan 2019 22:36:05 +0000 (+0000) Subject: compiler: improve recursive type detection X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b6c27102383e723424ed1ac7d547d6851cf7f4e;p=thirdparty%2Fgcc.git compiler: improve recursive type detection Detect recursive type definition like "type T0 T1; type T1 T2; ...... type Tn T0". Fixes golang/go#25320. Reviewed-on: https://go-review.googlesource.com/c/159837 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268347 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index faab230d3ecb..4bdcf96c7b79 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -d67c4bf0c42b79d54925ba8c5f23278ee6c3efb6 +5ccb2d8593963e06ec3a35d362b384e82301d9f0 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 5a45bb2c3f4b..6d0c9a3a1d7f 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -10259,6 +10259,15 @@ Find_type_use::type(Type* type) break; case Type::TYPE_NAMED: + if (type->named_type() == type->base()->named_type()) + { + this->found_ = true; + return TRAVERSE_EXIT; + } + else + go_assert(saw_errors()); + break; + case Type::TYPE_FORWARD: go_assert(saw_errors()); break;