This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Incorrect bitfield aliasing with Tree SSA


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]