------- Comment #33 from acahalan at gmail dot com  2006-09-26 04:44 -------
(In reply to comment #28)
> If you exclude strict type-based rules, the answer to "what can foo
> clobber" in the example is the same as asking "what can the first
> argument of foo access in foo and its callees".  Because of the
> type-based rules, we end up with a disconnect.  It would be undefined
> to dereference the first argument of foo without casting it first.  In
> effect, the strict-type rules allow you can take an unaliased pointer
> in a caller, and validly turn it back into an aliased pointer in the
> callee.

Although it wouldn't work for the example code, extending the aliasing behavior
of (char*) to (void*) would fix the problem for LOTS of code out in the wild.
People normally use a (void*) when they want a generic pointer type to play
casting games with. This is a case where the C standard is very far from the
reality of how people write code. The example code is fairly unusual.


-- 

acahalan at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |acahalan at gmail dot com


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

Reply via email to