[PATCH] ICF is more strict about non-common function and var, attributes.

Jan Hubicka hubicka@ucw.cz
Sun Mar 1 00:09:00 GMT 2015


> > 
> > Half of FAILs are gone, but the rest is correctly merged (alignment matches). Thus I would omit ICF
> > in this testcase. I'm going to install the patch.

Richard, I wonder what happens with TYPE_ALIGN at LTO.  It is not part of canonical type
definition and thus we get random alignments on CANONICAL_TYPE_HASH.
func_checker::types_compatible leads to type_compatible_p which will eventually do
  /* If we know the canonical types, compare them.  */                          
  if (TYPE_CANONICAL (inner_type)                                               
      && TYPE_CANONICAL (inner_type) == TYPE_CANONICAL (outer_type))            
    return true;                                                                
and thus we will hapilly merge types with different TYPE_ALIGN. 
Should func_checker::types_compatible be extended to compare these?
Clearly TYPE_ALIGN matters for vectorizer and other plaes...

Any chance -malign-double can work and mix with -mno-align-double? I think we
will mix the alignments because double is one of nodes we do not stream, right?

Honza



More information about the Gcc-patches mailing list