> On 05/11/2015 12:46 PM, Jan Hubicka wrote:
> >Well, my main motivatoin to extend from RECORD_OR_UNION_TYPE_P was to handle
> >enums. But other case I would like to deal with are integer types - i.e. 
> >preserve
> >difference between char/signed char/unsigned char/short/int/long/wchar in 
> >cases
> >where they structurally coincide.
> 
> In what context?  Won't you get that from comparing e.g. the field
> types of two definitions of the same class?

If one class define "int foo;" and other "long foo;" we currently do not 
complain
about ODR on 32bit targets while I think we could.
Other case was the ODR violations dragged by the signed/unsigned:

char switch:
$ cat t.C
char a;
$ ./xgcc -B ./ -O2 t.C -o t1.o -fno-signed-char -c -flto
$ ./xgcc -B ./ -O2 t.C -o t2.o -fsigned-char -c -flto
$ ./xgcc -B ./ -O2 t1.o t2.o -flto -fno-signed-char  -flto
<built-in>: warning: type ïcharï violates one definition rule [-Wodr]
<built-in>: note: a type with different signedness is defined in another 
translation unit
t.C:1:6: warning: type of ïaï does not match original declaration
 char a;
      ^
t.C:1:6: note: previously declared here
 char a;
      ^

I also want to use ODR for more fine grained TBAA on LTO and there the 
differences between
integer types matter more.

Honza
> 
> Jason

Reply via email to