> 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