> > Yes, so is
> >
> > struct foo {struct bar a;};
> >
> > a.a = ...
> > ... = a;
> >
> > and
> >
> > a = ...
> > ... = a.a;
> >
> > this is why conflict is symmetrization of the subset relation.
>
>
> OK the statement above is true, but subsets alone are not quite right for use
> in aliasing_component_refs_p
>
> void *a;
> char **ptr=&a;
> *ptr = ....
>
> is defined for us, but the structure-substructure equivalent is not.
> I will implement the variant with extra flag after teaching and send updated
> patch.
Hmm, what about
union t {int a; char b;};
int a;
uniont t *ptr=&a;
*ptr = ...
If we want to define this, aliasing_component_refs_p would IMO need to be
symmetrized, too.
I am happy leaving this undefined.
Honza