Hi!

I've followed what other files do, using attribute alias with not really
matching function type (after all, it isn't really possible when it is a
constructor), but seems I've missed it warns:
../../../../../libstdc++-v3/src/c++98/ios_init.cc:203:8: warning: ‘void 
std::ios_base_library_init()’ alias between functions of incompatible types 
‘void()’ and ‘void (std::ios_base::Init::)()’ [-Wattribute-alias=]
  203 |   void ios_base_library_init (void)
      |        ^~~~~~~~~~~~~~~~~~~~~
../../../../../libstdc++-v3/src/c++98/ios_init.cc:78:3: note: aliased 
declaration here
   78 |   ios_base::Init::Init()
      |   ^~~~~~~~
The PR talks about clang++ warning there (which I think isn't really
supported, libstdc++ sources ought to be built by GCC), but it warns
when built with GCC too.

The following patch fixes it by doing what other libstdc++ sources do in
those cases.

Tested on x86_64-linux, ok for trunk and later 13.2?

2023-05-02  Jakub Jelinek  <ja...@redhat.com>

        PR libstdc++/109694
        * src/c++98/ios_init.cc: Add #pragma GCC diagnostic ignored for
        -Wattribute-alias.

--- libstdc++-v3/src/c++98/ios_init.cc.jj       2023-04-28 10:49:22.105352644 
+0200
+++ libstdc++-v3/src/c++98/ios_init.cc  2023-05-02 10:24:09.073741162 +0200
@@ -200,6 +200,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   }
 
 #ifdef _GLIBCXX_SYMVER_GNU
+#pragma GCC diagnostic ignored "-Wattribute-alias"
+
   void ios_base_library_init (void)
   __attribute__((alias ("_ZNSt8ios_base4InitC1Ev")));
 #endif

        Jakub

Reply via email to