On March 1, 2015 1:09:50 AM CET, Jan Hubicka <hubi...@ucw.cz> wrote:
>> > 
>> > 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...

But it matters on MEM_REFs only, and you can't use canonical types for that. 
And we don't. Tree merging correctly takes TYPE_ALING into account.

>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?

Right.

Richard.

>
>Honza


Reply via email to