This patch to the Go frontend ignores the function type result name when producing export data. This change ensures that we never output a result name in the export data if there is only a single result. Previously we would output a ? if the single result had a name. That made the output unstable, because the hashing ignores the result name, so whether we output a ? or not depended on how equal hash elements were handled. This is for GCC PR 104832. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
d94b2d7240906da100946b596050f1020b87415d diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index e68d2d967cc..d9b12695e5c 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -787fd4475f9d9101bc138d0b9763b0f5ecca89a9 +5042f7efbdb2d64537dfef53a19e96ee5ec4db2d 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 8267f1565ce..3de0bd3ae61 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -5303,7 +5303,7 @@ Function_type::do_export(Export* exp) const if (results != NULL) { exp->write_c_string(" "); - if (results->size() == 1 && results->begin()->name().empty()) + if (results->size() == 1) exp->write_type(results->begin()->type()); else {