On Mon, 7 Oct 2013, Cong Hou wrote: > + if (type != newtype) > + break;
That comparison would wrongly treat as different cases where the types differ only in one being a typedef, having qualifiers, etc. - or if in future GCC implemented proposed TS 18661-3, cases where they differ in e.g. one being float and the other _Float32 (defined as distinct types that are not compatible although they have the same representation and alignment). I think the right test here, bearing in mind the _Float32 case where types may not be compatible, is TYPE_MODE (type) != TYPE_MODE (newtype) - if the types have the same mode, they have the same set of values and so are not different in any way that matters for this optimization. OK with that change. -- Joseph S. Myers jos...@codesourcery.com