compiler: don't export function type parameter names
authorIan Lance Taylor <iant@golang.org>
Thu, 15 Oct 2020 22:34:14 +0000 (15:34 -0700)
committerIan Lance Taylor <iant@golang.org>
Thu, 15 Oct 2020 23:25:39 +0000 (16:25 -0700)
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.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262818

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/types.cc

index 53551030eae0d78514f43e73af8227a639dde4df..7496770f018d6ef4155c8c90a97e07a593d2d402 100644 (file)
@@ -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.
index e7a742f636650be420a7d46e3c7f2c88bc2552ab..eb9c766b742bac745c724a8c4484eba9177417b2 100644 (file)
@@ -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());
            }