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