> > 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