Go patch committed: Don't export functions with special names

Ian Lance Taylor iant@golang.org
Fri Oct 19 21:16:00 GMT 2018


This patch changes the Go frontend to not export any functions with
special names.  This keeps init functions from appearing in the export
data.  Checking for special names in general means that we don't need
to check specifically for nested functions or thunks, which have
special names.  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 265297)
+++ gcc/go/gofrontend/MERGE	(working copy)
@@ -1,4 +1,4 @@
-6f4bce815786ff3803741355f7f280e4e2c89668
+e1dc92a6037a3f81ea1b8ea8fb6207af33505f0c
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: gcc/go/gofrontend/export.cc
===================================================================
--- gcc/go/gofrontend/export.cc	(revision 265296)
+++ gcc/go/gofrontend/export.cc	(working copy)
@@ -75,12 +75,8 @@ should_export(Named_object* no)
   if (Gogo::is_hidden_name(no->name()))
     return false;
 
-  // We don't export nested functions.
-  if (no->is_function() && no->func_value()->enclosing() != NULL)
-    return false;
-
-  // We don't export thunks.
-  if (no->is_function() && Gogo::is_thunk(no))
+  // We don't export various special functions.
+  if (Gogo::is_special_name(no->name()))
     return false;
 
   // Methods are exported with the type, not here.


More information about the Gcc-patches mailing list