> 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 > jos...@codesourcery.com