This patch to the Go frontend avoids a compiler crash on the real
declaration of a previously-declared type with an existing method.
This avoids a compiler crash on invalid code, and fixes GCC PR 90272.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed
to mainline.
Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 270615)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-b117b468264665cfe6ec2cf3affb48330a704fa7
+9476f6183791477dd9b883f51e2a46b224227735
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: gcc/go/gofrontend/gogo.cc
===================================================================
--- gcc/go/gofrontend/gogo.cc (revision 270564)
+++ gcc/go/gofrontend/gogo.cc (working copy)
@@ -7816,7 +7816,8 @@ Type_declaration::define_methods(Named_t
p != this->methods_.end();
++p)
{
- if (!(*p)->func_value()->is_sink())
+ if ((*p)->is_function_declaration()
+ || !(*p)->func_value()->is_sink())
nt->add_existing_method(*p);
}
}