> >         struct foo {int a: 32; int b: 32; };
> >         struct bar {int c: 32; int d: 32; };
> >
> > you have the fields A and C conflicting, which is wrong.
> 
> With the current scheme you have fields a and b conflict
> and c and d conflicting
> 
> Both of which are wrong

But nothing is changing that!  This is true whether or not the fields
are addressable and for all proposals given so far.

The only way to change this would be to make a new unique alias set
for each nonaddressable field in a record and mark each as a subset of
the record.  This would be optimal, but is expensive for large records
(e.g., ones with thousands of fields) and there's no good place to store
such an alias set.

However, you don't really NEED to deconflict such fields using alias sets
since there are already mechanisms at both the tree and RTL level to know
that such accesses can't conflict (being different FIELD_DECLs).

Reply via email to