> On 11/11/2015 10:21 AM, Richard Biener wrote: > >On Tue, 10 Nov 2015, Jan Hubicka wrote: > >>The reason is that TYPE_CANONICAL is initialized in get_alias_set that may > >>be > >>called before we finish all merging and then it is more fine grained than > >>what > >>we need here (i.e. TYPE_CANONICAL of pointers to two differnt types will be > >>different, but here we want them to be equal so we can match: > >> > >>struct aa { void *ptr;}; > >>struct bb { int * ptr;}; > >> > >>Which is actually required for Fortran interoperability. > > Just curious, is this sort of thing documented anywhere?
See http://www.j3-fortran.org/doc/year/10/10-007.pdf, section 15 (interoperability with C). It defines that C_PTR is compatible with any C non-function pointer. Honza > > > Bernd