diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 1e4da036b8f..74e811b8a23 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -a69f7c05f1880bb90544fb0c3577109cb1d7f3ab +8822487ed776d55eafed44de7d89ee54bbfbab47 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/export.cc b/gcc/go/gofrontend/export.cc index 963f0bfe842..066455a4ee9 100644 --- a/gcc/go/gofrontend/export.cc +++ b/gcc/go/gofrontend/export.cc @@ -509,7 +509,24 @@ Export::set_type_index(Type* type) static bool packages_compare(const Package* a, const Package* b) { - return a->package_name() < b->package_name(); + if (a->package_name() < b->package_name()) + return true; + else if (a->package_name() > b->package_name()) + return false; + + if (a->pkgpath() < b->pkgpath()) + return true; + else if (a->pkgpath() > b->pkgpath()) + return false; + + // In principle if we get here then a == b. Try to do something sensible + // even if the import information is inconsistent. + if (a->pkgpath_symbol() < b->pkgpath_symbol()) + return true; + else if (a->pkgpath_symbol() > b->pkgpath_symbol()) + return false; + + return a < b; } // Write out all the known packages whose pkgpath symbol is not a