Incorrect bitfield aliasing with Tree SSA

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Mon Jun 18 04:51:00 GMT 2007


> Not marking them as a subset means that given:
> 
> struct foo {int a:31; int b:1} bar, *barp = &bar;
> 
> bar->a and bar->b *cannot access* bar.a and bar.b.

I don't follow.  Assuming those fields are marked as non-addressable,
which seems correct, then *any* reference to bar, be it the entire "bar",
or bar.a and bar.b, will have the same alias set. So all will conflict,
which is exactly right.  What does "int" have to do with this?  How can
access via a pointer to int conflict with any of these?

> This is simply wrong.

Seems precisely correct to me.



More information about the Gcc-patches mailing list