Thanks. What should we do in default builds? Can we safely
pacify the warnings while keeping performance? Should we just
safely suppress these warnings?

Brgds,
Viktor

On Mon, May 25, 2009 at 9:56 PM, Przemyslaw Czerpak <[email protected]> wrote:
> On Fri, 22 May 2009, Szak�ts Viktor wrote:
>
> Hi,
>
>
>> FYI, otherwise the build process went smoothly, I'll make some speed
>> tests later:
>> ../../binnum.c:115: warning: dereferencing type-punned pointer will
>> break strict-aliasing rules
> [...]
>
> All of above warnings are hacks introduced in x86 builds where
> HB_STRICT_ALIGNMENT macros is not defined in places where some
> binary data is read from memory in some strictly defined byte
> order, f.e. from PCODE or binary files. x86 CPUs can read data
> even if they do not pass valid alignment, f.e. if we have in two
> bytes at ptr address little endian unsigned 16bit value then we
> can make hack and use:
>
>   usVal = * ( USHORT * ) ptr;
>
> instead of:
>
>   usVal = ( ptr[ 1 ] << 8 ) | ptr[ 0 ];
>
> If processor needs strict alignment then such hacks cannot be used
> because they cause CPU exception and application crash. If you compile
> Harbour with HB_STRICT_ALIGNMENT macro then it should pacify all such
> warnings but it will also reduce a little bit the performance on x86
> machines because it disables such explicit casting when PCODE is decoded.
>
> best regards,
> Przemek
> _______________________________________________
> Harbour mailing list
> [email protected]
> http://lists.harbour-project.org/mailman/listinfo/harbour
>
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to