Fix more of C/fortran canonical type issues

Jan Hubicka hubicka@ucw.cz
Mon Jun 8 14:52:00 GMT 2015


> On Mon, 8 Jun 2015, Richard Biener wrote:
> 
> > On Mon, 8 Jun 2015, Joseph Myers wrote:
> > 
> > > On Mon, 8 Jun 2015, Richard Biener wrote:
> > > 
> > > > I'm not sure the C standard mandates compatibility between
> > > > 
> > > > struct { int i; } and struct { unsigned i; } for purposes of TBAA.
> > > > Joseph?
> > > 
> > > I don't think they are necessarily compatible for TBAA.
> > 
> > Ok, but as int and unsigned are reading either structs element
> > via a pointer to int or a pointer to unsigned must be supported?
> 
> Yes.  The questionable case would be taking an object of one of those 
> structure types, casting a pointer to it to point to the other structure 
> type and then dereferencing.

Are "struct { int i; }" and "struct { unsigned i; }" compatible when one is defined
in one unit and other in another?
In any cae, I suppose if int and unsigned int pointers can be used interchangeably,
we want to ignore TYPE_UNSGINED for purposes of canonical type calculation for LTO.
So is the second variant of patch OK with a comment update that this is also required
by C?

Honza
> 
> -- 
> Joseph S. Myers
> joseph@codesourcery.com



More information about the Gcc-patches mailing list