The warnings about changes to empty struct parameter passing can be ignored because the callers are all internal to the library, and so compiled with the same -fabi-version as the function definitions.
It would be preferable to use #pragma GCC diagnostic warning "-Wabi=12" to get warnings about any other ABI changes in future versions, but until PR c++/87611 is fixed the warnings must be completely disabled with #pragma GCC diagnostic ignroed "-Wabi". PR libstdc++/87587 * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings. Tested x86_64-linux, committed to trunk.
commit 4f4aa94bc56613ff8f3079f471bce14bdd4b2407 Author: Jonathan Wakely <jwak...@redhat.com> Date: Mon Oct 15 13:16:26 2018 +0100 PR libstdc++/87587 prevent -Wabi warnings The warnings about changes to empty struct parameter passing can be ignored because the callers are all internal to the library, and so compiled with the same -fabi-version as the function definitions. It would be preferable to use #pragma GCC diagnostic warning "-Wabi=12" to get warnings about any other ABI changes in future versions, but until PR c++/87611 is fixed the warnings must be completely disabled with #pragma GCC diagnostic ignroed "-Wabi". PR libstdc++/87587 * src/c++11/cxx11-shim_facets.cc: Suppress -Wabi warnings. diff --git a/libstdc++-v3/src/c++11/cxx11-shim_facets.cc b/libstdc++-v3/src/c++11/cxx11-shim_facets.cc index 017b0a0fdb6..78537bd152f 100644 --- a/libstdc++-v3/src/c++11/cxx11-shim_facets.cc +++ b/libstdc++-v3/src/c++11/cxx11-shim_facets.cc @@ -224,6 +224,11 @@ namespace __facet_shims void __messages_close(other_abi, const facet*, messages_base::catalog); +#pragma GCC diagnostic push +// Suppress -Wabi=2 warnings due to empty struct argument passing changes. +// TODO This should use -Wabi=12 but that currently fails (PR c++/87611). +#pragma GCC diagnostic ignored "-Wabi" + namespace // unnamed { struct __shim_accessor : facet @@ -767,6 +772,8 @@ namespace __facet_shims return m->put(s, intl, io, fill, units); } +#pragma GCC diagnostic pop + template ostreambuf_iterator<char> __money_put(current_abi, const facet*, ostreambuf_iterator<char>, bool, ios_base&, char, long double, const __any_string*);