[PATCH 2] fix broken strict aliasing

Marc Lehmann schmorp at schmorp.de
Mon Feb 22 16:59:34 CET 2010

On Mon, Feb 22, 2010 at 04:33:38PM +0100, Alejandro Mery <amery at geeks.cl> wrote:
> > gcc, and this is not true.
> so my sample code compiled for -O2 or higher or -Os doesn't dump the
> warning fest with your gcc version?

Not with those options at least.

Keep in mind that these warnings apply to YOUR CODE, not to libev code. they
are easy enough to avoid IN YOUR CODE with YOUR PARTICULAR WARNING SET and
will not happen with the default set of any known compiler.

Forcing YOUR particular set of warnings on other people's code is rather
childish (and I think very unfriendly), especially as the warning is KNOWN TO

Also you have been asked to review old discussions AND the existing
documentation - you showed no evidence of doing either. Why can't you be
bothered to be constructive and do those things? That is the minimum you
can do.

> the way that macro-magic is implemented confuses the compiler. it

I don't see why, it uses the correct casts for everything, afaics.  Nobody
produced any valid evidence to the contrary (as opposed to a lot of
bullshit about standard C).

> doesn't allow it to optimize correctly and who knows if it can trigger
> gcc-bugs,

And maybe it kills all first-born children, too. It would be nice if you
could really stop making up all this fud.

> and also fills the compilation logs of our programs with
> tons of noise that doesn't allow libev users to see clearly real
> warnings/errors that do need to get fixed.

This has been discussed in the past, and also in the documentation.

See above. Why are you so antisocial and can't do that? Your issues are
not new, and neither are the solutions.

> so maybe those macros could be rewritten in a way that doesn't

Nobody found a way yet - the ways described certainly confuses the
compiler even more, otherwise it would still issue the warning, no? See also
how it might kill first-born children, above.

> "confuse" the compilers and fill the compile log of noise just for the
> sake of the mental sanity of libev users? :)

I don't see how it confuses things.

If anything, the warning itself is confusing - maybe you don't understand
what it means, maybe it is bogus - in any case, it is obviously not a
helpful warning, right?

Apart from FUD (see first borns, above), this discussion has resulted in
nothing new, it's just the same tiresome "it could be bad, but I have no
clue" thing as before. Doing as told and RTFM'ing might have helped, but
you chose not to.

Libev doesn't require type aliasing beyond what standard C offers, and
no evidence to the contrary is known. The programming techniques used in
libev are hardly weird either, it's pretty common.

In any case, please read the warning section of the documentation. (REALLY
DO IT THIS TIME! Thats the minimum you need to do!) and please describe what
you found unclear, confusing, or a bug.

Otherwise, please take your unfounded allegations elsewhere. Your "it
could be bad" bullshit is really damaging - come up with facts (or
evidence), or shut up.

If your code produces warnings that you can avoid with a cast, THEN DO
THAT CAST. Forcing your specific set of bogus warnings on other people
code IS childish and really IS NOT productive.

In no case is a cast in those macros required.

                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list