compiler: improve recursive type detection
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 28 Jan 2019 22:36:05 +0000 (22:36 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 28 Jan 2019 22:36:05 +0000 (22:36 +0000)
    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
gcc/go/gofrontend/types.cc

index faab230d3ecbc1645289c3e07761e22b4e67462d..4bdcf96c7b7969f78764b9e7fb252adbdfd620d7 100644 (file)
@@ -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.
index 5a45bb2c3f4b04c47075c3d0e73089a877a90884..6d0c9a3a1d7f62e4ca1cc7ce3354d4b94ad08a8a 100644 (file)
@@ -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;