http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55142
--- Comment #28 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-08 23:02:54 UTC --- So for POINTERS_EXTEND_UNSIGNED > 0, we should transform (zero_extend:DI (plus:SI (FOO:SI) (const_int Y))) in such a way that it won't cause ICE and zero-extend the result. For X32, we just need to generate (plus:SI (REG:SI) (const_int Y))