This patch to the Go frontend stops exporting function type parameter
names.  When hashing a function type the parameter names are ignored.
Therefore, we should not write them into the export data.  Otherwise,
minor changes in the order in which we process the types can cause the
export data to change uselessly, leading to unnecessary rebuilds.
Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.  Committed
to mainline.

Ian
1e8e49f135c814bd268289609dd0aea305ed546e
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 53551030eae..7496770f018 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-71e161daafa1e19c2c53e28fffc3954d88a4cdb2
+3b6252d2d3ce559826303dac07538da6e78940d8
 
 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 e7a742f6366..eb9c766b742 100644
--- a/gcc/go/gofrontend/types.cc
+++ b/gcc/go/gofrontend/types.cc
@@ -5182,7 +5182,11 @@ Function_type::do_export(Export* exp) const
            first = false;
          else
            exp->write_c_string(", ");
-         exp->write_name(p->name());
+         // The hash for a function type ignores parameter names, so
+         // we don't want to write them out here.  If we did write
+         // them out, we could get spurious changes in export data
+         // when recompiling a package.
+         exp->write_name("");
          exp->write_c_string(" ");
          if (!is_varargs || p + 1 != this->parameters_->end())
            exp->write_type(p->type());
@@ -5213,7 +5217,7 @@ Function_type::do_export(Export* exp) const
                first = false;
              else
                exp->write_c_string(", ");
-             exp->write_name(p->name());
+             exp->write_name("");
              exp->write_c_string(" ");
              exp->write_type(p->type());
            }

Reply via email to