http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50696
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization --- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> 2011-10-11 20:09:10 UTC --- For (insn 37 35 39 3 (parallel [ (set (reg:SI 88) (plus:SI (reg:SI 89) (reg:SI 100))) (clobber (reg:CC 17 flags)) ]) x.i:12 253 {*addsi_1} (expr_list:REG_DEAD (reg:SI 89) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) (insn 39 37 41 3 (set (mem:SI (zero_extend:DI (reg:SI 88)) [0 MEM[symbol: x, index: D.2735_1, step: 4, offset: 4294967292B]+0 S4 A32]) (reg/v:SI 85 [ i ])) x.i:12 64 {*movsi_internal} (expr_list:REG_DEAD (reg:DI 87) (nil))) combine replaces zero_extend with and. It may be a valid option for normal computation. But it messes up the POINTERS_EXTEND_UNSIGNED > 0 target where address is zero-extendeded from ptr_mode to Pmode.