------- Comment #1 from pinskia at gcc dot gnu dot org 2006-06-09 06:18 ------- This works correctly on powerpc. The rtl we get on x86_64 is: (insn 10 7 11 2 (parallel [ (set (reg:DI 61) (lshiftrt:DI (reg/v:DI 59 [ x ]) (const_int 2 [0x2]))) (clobber (reg:CC 17 flags)) ]) 456 {*lshrdi3_1_rex64} (insn_list:REG_DEP_TRUE 6 (nil)) (expr_list:REG_DEAD (reg/v:DI 59 [ x ]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))))
(insn 11 10 13 2 (parallel [ (set (reg:DI 62) (and:DI (reg:DI 61) (const_int 3 [0x3]))) (clobber (reg:CC 17 flags)) ]) 297 {*anddi_1_rex64} (insn_list:REG_DEP_TRUE 10 (nil)) (expr_list:REG_DEAD (reg:DI 61) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) (insn 13 11 17 2 (set (reg:SI 64) (mem/s:SI (plus:DI (mult:DI (reg:DI 62) (const_int 4 [0x4])) (symbol_ref:DI ("array") <var_decl 0x2aaaaaf4bbb0 array>)) [3 array S4 A32])) 40 {*movsi_1} (insn_list:REG_DEP_TRUE 11 (nil)) (expr_list:REG_DEAD (reg:DI 62) (nil))) so I wonder if the something is not being reduced correctly. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Component|pending |target Ever Confirmed|0 |1 GCC host triplet|x86_64-linux-gnu | Last reconfirmed|0000-00-00 00:00:00 |2006-06-09 06:18:37 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27971