This patch to the Go frontend detects a failure to set the init priority for a package. This would have caught the bug fixed in the patch in https://golang.org/cl/43610 aka https://gcc.gnu.org/ml/gcc-patches/2017-05/msg01416.html . Bootstrapped and ran Go tests on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 248248) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -369e1efe19adfc5393d2235992327f39360e0554 +ec49c69df1df4d62f3751fcd7e930d6508d67bf2 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: gcc/go/gofrontend/gogo.cc =================================================================== --- gcc/go/gofrontend/gogo.cc (revision 248081) +++ gcc/go/gofrontend/gogo.cc (working copy) @@ -689,7 +689,13 @@ Gogo::init_imports(std::vector<Bstatemen this->imported_init_fns_.begin(); p != this->imported_init_fns_.end(); ++p) - v.push_back(*p); + { + if ((*p)->priority() < 0) + go_error_at(Linemap::unknown_location(), + "internal error: failed to set init priority for %s", + (*p)->package_name().c_str()); + v.push_back(*p); + } std::sort(v.begin(), v.end(), priority_compare); // We build calls to the init functions, which take no arguments.