[PATCH, libstdc++]: Avoid -Wcast-qual warnings in src/c++98/compatibility.cc

Uros Bizjak ubizjak@gmail.com
Wed Aug 7 20:48:00 GMT 2013


Hello!

Attached patch avoids a bunch of -Wcast-qual warnings when building
libstdc++ on alpha-linux-gnu, a _GLIBCXX_LONG_DOUBLE_COMPAT target:

../../../../gcc-svn/trunk/libstdc++-v3/src/c++98/compatibility.cc:521:16:
warning: cast from type ‘const char*’ to type ‘void*’ casts away
qualifiers [-Wcast-qual]
       (void *) _ZTSe };
                ^
../../../../gcc-svn/trunk/libstdc++-v3/src/c++98/compatibility.cc:524:16:
warning: cast from type ‘const char*’ to type ‘void*’ casts away
qualifiers [-Wcast-qual]
       (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
                ^
../../../../gcc-svn/trunk/libstdc++-v3/src/c++98/compatibility.cc:524:46:
warning: cast from type ‘const void* const*’ to type ‘void*’ casts
away qualifiers [-Wcast-qual]
       (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
                                              ^
../../../../gcc-svn/trunk/libstdc++-v3/src/c++98/compatibility.cc:527:16:
warning: cast from type ‘const char*’ to type ‘void*’ casts away
qualifiers [-Wcast-qual]
       (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
                ^
../../../../gcc-svn/trunk/libstdc++-v3/src/c++98/compatibility.cc:527:47:
warning: cast from type ‘const void* const*’ to type ‘void*’ casts
away qualifiers [-Wcast-qual]
       (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };

2013-08-07  Uros Bizjak  <ubizjak@gmail.com>

    * src/c++98/compatibility.cc (_ZTIe): Use const_cast to avoid warning.
    (_ZTIPe): Ditto.
    (ZTIPKe): Ditto.

The patch was bootstrapped on alpha-linux-gnu, regression test is still running.

OK for mainline if regtest shows no problems? Also for 4.8?

Uros.
-------------- next part --------------
Index: src/c++98/compatibility.cc
===================================================================
--- src/c++98/compatibility.cc	(revision 201568)
+++ src/c++98/compatibility.cc	(working copy)
@@ -518,13 +518,15 @@
 extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
 extern __attribute__((used, weak)) const void * const _ZTIe[2]
   = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
-      (void *) _ZTSe };
+      const_cast<char*>(_ZTSe) };
 extern __attribute__((used, weak)) const void * const _ZTIPe[4]
   = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
-      (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
+      const_cast<char*>(_ZTSPe), (void *) 0L,
+      const_cast<void* const*>(_ZTIe) };
 extern __attribute__((used, weak)) const void * const _ZTIPKe[4]
   = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
-      (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
+      const_cast<char*>(_ZTSPKe), (void *) 1L,
+      const_cast<void* const*>(_ZTIe) };
 #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
 
 #ifdef _GLIBCXX_SYMVER_DARWIN


More information about the Gcc-patches mailing list