http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55851
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org Component|c |middle-end --- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-03 14:47:37 UTC --- The C FE is innocent, it has TYPE_SIZE_UNIT <nop_expr sizetype <something>>. The problem is in the gimplifier, gimplify_one_sizepos, because sizetype is types_compatible_p with the ENUMERAL_TYPE (with -m32), replaces the sizetype typed TYPE_SIZE_UNIT with the enumeral one. So, either we'd need to special case this in gimplify_one_sizepos or so and if it turns an INTEGER_TYPE expr into something with different type TREE_CODE, do something (what exactly? If we turn it into a NOP_EXPR of the VAR_DECL, it will not satisfy is_gimple_sizepos and we'll try to regimplify it again and again, or shall we adjust is_gimple_sizepos too to allow that special case of a NOP_EXPR of is_gimple_sizepos if the types are compatible?). Or adjust whatever code is assuming that TYPE_SIZE_UNIT must be INTEGER_TYPE.