Go patch committed: Avoid compiler crash in recursive type detection

Ian Lance Taylor iant@golang.org
Mon Jan 28 22:39:00 GMT 2019


This patch by Ben Shi fixes the Go frontend to avoid crashing when
handling a recursive type definition like

type T0 T1; type T1 T2; ...... type Tn T0

This fixes https://golang.org/issue/25320.

Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
to mainline.

Ian
-------------- next part --------------
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE	(revision 268230)
+++ gcc/go/gofrontend/MERGE	(working copy)
@@ -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: gcc/go/gofrontend/types.cc
===================================================================
--- gcc/go/gofrontend/types.cc	(revision 268158)
+++ gcc/go/gofrontend/types.cc	(working copy)
@@ -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;


More information about the Gcc-patches mailing list