http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47281

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Blocks|                            |46076

--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-01-14 
12:26:47 UTC ---
It's the transitivity problem in

  (void (*)(void))(void (*)())(void (*)(int))make_mess

The first conversion is useless as is the second.  But

  (void (*)(void))(void (*)(int))make_mess

is not useless.  That's of course a bug in the type system as implemented
as we rely on

     1) useless_type_conversion_p is transitive.
        If a < b and b < c then a < c.

So we either have to revert the fix for PR46076 or need to make
conversions to unprototyped function pointers not generally useless.

I'm going for reverting the fix for 4.6.

Reply via email to