[Bug rtl-optimization/57193] [4.7/4.8/4.9 Regression] suboptimal register allocation for SSE registers
rth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 12 20:03:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57193
Richard Henderson <rth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed|2013-05-07 00:00:00 |2014-2-12
CC| |rth at gcc dot gnu.org
--- Comment #4 from Richard Henderson <rth at gcc dot gnu.org> ---
It seems like incomplete reload inheritance:
(insn 19 16 21 2 (set (reg:V8HI 107)
(truncate:V8HI
(lshiftrt:V8SI
(mult:V8SI (zero_extend:V8SI (subreg:V8HI (reg:V16QI 105) 0))
(zero_extend:V8SI (subreg:V8HI (reg/v:V2DI 101 [ f ]) 0)))
(const_int 16 [0x10]))))
include/emmintrin.h:1362 2134 {*umulv8hi3_highpart}
(expr_list:REG_DEAD (reg:V16QI 105) (nil)))
Creating newreg=111 from oldreg=107, assigning class SSE_REGS to r111
19: r111:V8HI=trunc(zero_extend(r111:V8HI)*zero_extend(r101:V2DI#0) 0>>0x10)
REG_DEAD r105:V16QI
Inserting insn reload before:
31: r111:V8HI=r105:V16QI#0
Inserting insn reload after:
32: r107:V8HI=r111:V8HI
The new register r111 does wind up inheriting from r107, but not
transitively to r105. Thus we wind up leaving the copy insn 31.
More information about the Gcc-bugs
mailing list