On May 27, 2015 5:04:13 PM GMT+02:00, Jan Hubicka <hubi...@ucw.cz> wrote: >> > 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.
Globbing all pointers was soo simple... :) Note that we are in the middle-end here and have to find cross-language common grounds. People may experience regressions towards the previous globbing so I guess the question is which is the globbing we want to remove - that is, what makes the most difference in code-generation? Richard. >Honza