> On 05/11/2015 09:28 AM, Jan Hubicka wrote:
> >We already discussed earlier that type_in_anonymous_namespace_p is not 
> >working
> >on compund types, because these do not have TYPE_STUB_DECL.  I thought those 
> >are
> >!TYPE_NAME types.  What is reason for !TYPE_NAME type with no TYPE_STUB_DECL?
> >Is it always a compound type with typedef name?
> 
> Right.  Typedef names have no linkage, so they aren't really ODR
> types; only classes and enums have linkage.  Why do you want to
> check other types?

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.  

This makes us to output better diagnostics on ODR violations caused by 
-fsigned-char
mismatches, but it also has some issues with fact that LTO forcingly merge 
char_type_node
no matter whetehr it agrees or disagress across units by preloading
https://gcc.gnu.org/ml/gcc-patches/2015-04/msg01538.html

I can go with  RECORD_OR_UNION_TYPE_P (..) || TREE_CODE (type) == ENUMERAL_TYPE
with comment that those types have linkage and other not, but we lose some 
checks.

Honza
> 
> Jason

Reply via email to