compiler: don't export 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.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262818
This commit is contained in:
Ian Lance Taylor 2020-10-15 15:34:14 -07:00
parent f33ac3b0cd
commit 1e8e49f135
2 changed files with 7 additions and 3 deletions

View 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.

View 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());
}