Re: libalias patch for review / testing

From: Ruslan Ermilov <ru_at_freebsd.org>
Date: Wed, 17 Mar 2004 01:28:48 +0200
On Wed, Mar 17, 2004 at 12:07:52AM +0100, Dag-Erling Sm?rgrav wrote:
> Ruslan Ermilov <ru_at_FreeBSD.org> writes:
> > I know this code quite well.  Where do you suspect could be a bug
> > affecting -O2 compiles, or you just simply fixed -O2 and hope it
> > will auto-fix the (possible) bugs in -O2?
> 
> Since there is no inline asm, the most likely suspect is aliasing,
> which is what my patch tries to address.
> 
Hmm, read this again:

: `-fstrict-aliasing'
:      Allows the compiler to assume the strictest aliasing rules
:      applicable to the language being compiled.  For C (and C++), this
:      activates optimizations based on the type of expressions.  In
:      particular, an object of one type is assumed never to reside at
:      the same address as an object of a different type, unless the
:      types are almost the same.  For example, an `unsigned int' can
:      alias an `int', but not a `void*' or a `double'.  A character type
:      may alias any other type.

And asking myself a question: should those (void *)'s in your patch
be (char *)'s instead, e.g., in twowords() and DifferentialChecksum(),
or am I misreading the above?

Also, the easiest way to check if strict aliasing is guilty for not
working libalias compiled with -O2, is to compile the original code
with -O2 -fno-strict-aliasing.  You guys who have seen a problem,
can you please check and confirm that?


Cheers,
-- 
Ruslan Ermilov
FreeBSD committer
ru_at_FreeBSD.org

Received on Tue Mar 16 2004 - 14:28:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:47 UTC