This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Tree-SSA self checking infrastructure
> In message <20031119190939.GR16923@atrey.karlin.mff.cuni.cz>, Jan Hubicka write
> s:
> >I am still in dark here. Can you give me some example of pointer types
> >where we don't want transitivity? What abut symmetricity?
> If the inner type is a pointer and the outer type is a void *, then we
> have a useless conversion.
>
> First realize this loses no information. It strictly increases the
> amount of information available.
>
> Second realize that if the outer type was a void *, then the resulting
> pointer can only be used in very specific ways (such as parameter
> passing). You can't do arithmetic or dereference a void * pointer.
> So the additional information you get by dropping the useless conversion
> to void * doesn't hurt either.
>
>
> The opposite is not true.
>
> Consider the case where the outer type is a function pointer and the
> inner type is a void *.
I see, thanks. Still this breaks the symmetricity only.
With transitivity, we still shall be able to verify that we have useless
conversion from PLUS_EXPR into it's operands, for instance.
Even that appears to be broken at the moment. Why?
Honza
>
> First realize that eliminating the cast loses information. ie, we
> originally had a function pointer, now we have a wonderful generic
> void *.
>
> Second realize that the result of the original expression could be
> dereferenced. ie, if it was a function pointer, then you can dereference
> the pointer which ultimately calls a function. If you eliminate the
> typecast, then you're trying to dereference a void *. Not a good idea.
>
> Third realize that some ABI's require in-depth knowledge about the
> called function's signature. In fact, ia32 is an example. The way
> parameters are passed, values returned and possibly even caller-pops
> may be dependent on the signature of the called function. If you've
> eliminated the typecast, then you don't have access to the function's
> signature. All hell breaks loose after that.
>
>
>
> jeff
>
>
>
>
>
>
>