[vtk-developers] Help with 2 warnings in TestFastNumericConversion.cxx and vtkDistributedGraphHelper.cxx

David Gobbi david.gobbi at gmail.com
Wed Apr 3 15:59:23 EDT 2013


Hi Sean,

All the FastNumericConversion stuff is obsolete and it would probably
be easier to remove it than to fix it.  It's a bunch of tricks that are
specifically for the i387 FPU but which do more harm than good on any
CPU manufactured in the last 10 years.  There are a couple places in
volume rendering where this stuff is still used, but I think that I
can easily patch them up.

 - David

On Wed, Apr 3, 2013 at 1:47 PM, Sean McBride <sean at rogue-research.com> wrote:
> Hi all,
>
> I've been working on enabling more clang warnings on my dashboard... And need help with:
>
> 1)
> Common/Math/Testing/Cxx/TestFastNumericConversion.cxx:55:18: warning: dereference of type 'int *' that was reinterpret_cast from type 'double *' has undefined behavior [-Wundefined-reinterpret-cast]
>       ival[i] = *reinterpret_cast<int *>(&dval[i]);
>                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> This is indeed wonky.  As 'double' is usually 64 bit and 'int' is usually 32, this is reinterpreting only half the bits of the double (which half depending on CPU endianness).  It does this in a big loop, times it, and uses that as a baseline time later compared to other techniques.  The test's entire foundation is suspect... what to do?
>
> 2)
> Common/DataModel/vtkDistributedGraphHelper.cxx:191:49: warning: signed shift result (0x80000000) sets the sign bit of the shift expression's type
>       ('vtkIdType' (aka 'int')) and becomes negative [-Wshift-sign-overflow]
>   this->signBitMask = static_cast<vtkIdType>(1) << ((sizeof(vtkIdType) * CHAR_BIT) - 1);
>                       ~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Shifting a 1 bit into or past the sign bit is undefined behaviour.  If I'm not mistaken, we can just use VTK_ID_MIN here, right?
>
> Thanks,
>
> --
> ____________________________________________________________
> Sean McBride, B. Eng                 sean at rogue-research.com
> Rogue Research                        www.rogue-research.com
> Mac Software Developer              Montréal, Québec, Canada



More information about the vtk-developers mailing list