Incorrect bitfield aliasing with Tree SSA
Daniel Berlin
dberlin@dberlin.org
Sun Jun 17 03:34:00 GMT 2007
On 6/16/07, Eric Botcazou <ebotcazou@libertysurf.fr> wrote:
> > If that was really true, we would get this right.
>
> Well, this is true, I really don't understand why you keep denying that.
Because it wouldn't be pruning it if the alias sets conflicted!
>
> Just grep the RTL expanders for MEM_KEEP_ALIAS_SET_P for example:
>
> `MEM_KEEP_ALIAS_SET_P (X)'
> In `mem' expressions, 1 if we should keep the alias set for this
> mem unchanged when we access a component. Set to 1, for example,
> when we are already in a non-addressable component of an aggregate.
> Stored in the `jump' field and printed as `/j'.
>
> > You guys have come up with a very weird idea of what non-addressability
> > means.
>
> I didn't invent it either, but everything is more or less documented.
No, not really.
>
> > These fields are all addressable, they are just not directly addressable.
>
> Right, that's just what is written in tree.h:
>
> /* Used in a FIELD_DECL to indicate that we cannot form the address of
> this component. */
> #define DECL_NONADDRESSABLE_P(NODE) \
> (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
Uh, no.
You *can* form the address, that's the whole problem.
You just can't form it directly.
The above comment gives absolutely no clue as to why this was added,
what it really means, etc
>
> --
> Eric Botcazou
>
More information about the Gcc
mailing list