From ab1be99f2b005cb5b8b0b3caac19ab2edb0dd6f3 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 28 Jan 2019 22:36:05 +0000 Subject: [PATCH] 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 From-SVN: r268347 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/types.cc | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index faab230..4bdcf96 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 5a45bb2..6d0c9a3 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; -- 2.7.4