[Bug target/27971] eliminate shift in array[(x>>2)&3]
pinskia at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Jun 9 06:20:00 GMT 2006
------- 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
More information about the Gcc-bugs
mailing list