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

login
register
mail settings
Submitter Uros Bizjak
Date Aug. 14, 2013, 2:49 p.m.
Message ID <CAFULd4ZnRZZgAaAJ37OpdpnvNJRvjE+vxsvmrucZieVVRsB+mA@mail.gmail.com>
Download mbox | patch
Permalink /patch/267140/
State New
Headers show

Comments

Uros Bizjak - Aug. 14, 2013, 2:49 p.m.
On Wed, Aug 14, 2013 at 4:36 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Wed, Aug 14, 2013 at 4:34 PM, Gabriel Dos Reis
> <gdr@integrable-solutions.net> wrote:
>> On Wed, Aug 14, 2013 at 9:22 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
>>>
>>> On Wed, Aug 14, 2013 at 4:05 PM, Gabriel Dos Reis
>>> <gdr@integrable-solutions.net> wrote:
>>> > I agree 'const void*' is preferable, and all the places you mention should
>>> > be covered too.
>>>
>>> I already installed my original patch, so attached incremental patch
>>> implements preferred solution.
>>>
>>> 2013-08-14  Uros Bizjak  <ubizjak@gmail.com>
>>>
>>>         * src/c++98/compatibility.cc (_ZTIe): Use (const cast *)
>>>         to avoid -Wcast-qual warnings.
>>>         (_ZTIPe): Ditto.
>>>         (ZTIPKe): Ditto.
>>>
>>> Tested on alphaev68-pc-linux-gnu and installed on mainline SVN.
>>>
>>> Is this solution also OK for other release branches?
>>>
>>> Uros.
>>
>> Sorry, when I said 'const void*' was OK, I implicitly assumed that you would
>> use C++-style cast reinterpret_cast<const void*>(_Z….).  Same for
>> reinterpret_cast<const void*>(1);
>
> Ah, OK. I'll add this in a moment.

Like the attached patch?

Again, build tested on alphaev68-pc-linux-gnu.

Uros.
Gabriel Dos Reis - Aug. 14, 2013, 4:41 p.m.
On Wed, Aug 14, 2013 at 9:49 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Wed, Aug 14, 2013 at 4:36 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
>> On Wed, Aug 14, 2013 at 4:34 PM, Gabriel Dos Reis
>> <gdr@integrable-solutions.net> wrote:
>>> On Wed, Aug 14, 2013 at 9:22 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
>>>>
>>>> On Wed, Aug 14, 2013 at 4:05 PM, Gabriel Dos Reis
>>>> <gdr@integrable-solutions.net> wrote:
>>>> > I agree 'const void*' is preferable, and all the places you mention should
>>>> > be covered too.
>>>>
>>>> I already installed my original patch, so attached incremental patch
>>>> implements preferred solution.
>>>>
>>>> 2013-08-14  Uros Bizjak  <ubizjak@gmail.com>
>>>>
>>>>         * src/c++98/compatibility.cc (_ZTIe): Use (const cast *)
>>>>         to avoid -Wcast-qual warnings.
>>>>         (_ZTIPe): Ditto.
>>>>         (ZTIPKe): Ditto.
>>>>
>>>> Tested on alphaev68-pc-linux-gnu and installed on mainline SVN.
>>>>
>>>> Is this solution also OK for other release branches?
>>>>
>>>> Uros.
>>>
>>> Sorry, when I said 'const void*' was OK, I implicitly assumed that you would
>>> use C++-style cast reinterpret_cast<const void*>(_Z….).  Same for
>>> reinterpret_cast<const void*>(1);
>>
>> Ah, OK. I'll add this in a moment.
>
> Like the attached patch?
>
> Again, build tested on alphaev68-pc-linux-gnu.
>
> Uros.

Yes, OK if it passes tests.
Thanks!

-- Gaby

Patch

Index: src/c++98/compatibility.cc
===================================================================
--- src/c++98/compatibility.cc	(revision 201727)
+++ src/c++98/compatibility.cc	(working copy)
@@ -517,16 +517,21 @@ 
 extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
 extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
 extern __attribute__((used, weak)) const void * const _ZTIe[2]
-  = { (const void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
-      (const void *) _ZTSe };
+  = { reinterpret_cast<const void *>
+      (&_ZTVN10__cxxabiv123__fundamental_type_infoE[2]),
+      reinterpret_cast<const void *>(_ZTSe) };
 extern __attribute__((used, weak)) const void * const _ZTIPe[4]
-  = { (const void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
-      (const void *) _ZTSPe, (const void *) 0L,
-      (const void *) _ZTIe };
+  = { reinterpret_cast<const void *>
+      (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]),
+      reinterpret_cast<const void *>(_ZTSPe),
+      reinterpret_cast<const void *>(0L),
+      reinterpret_cast<const void *>(_ZTIe) };
 extern __attribute__((used, weak)) const void * const _ZTIPKe[4]
-  = { (const void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
-      (const void *) _ZTSPKe, (const void *) 1L,
-      (const void *) _ZTIe };
+  = { reinterpret_cast<const void *>
+      (&_ZTVN10__cxxabiv119__pointer_type_infoE[2]),
+      reinterpret_cast<const void *>(_ZTSPKe),
+      reinterpret_cast<const void *>(1L),
+      reinterpret_cast<const void *>(_ZTIe) };
 #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
 
 #ifdef _GLIBCXX_SYMVER_DARWIN