------- Additional Comments From hubicka at ucw dot cz 2004-10-25 09:20 -------
Subject: Re: arguments being gimple registers cause redundant memory loads
>
> ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-10-25 03:33
> -------
> This is really a rtl problem, the problem comes from greg. before that we have:
> (insn:HI 7 11 8 0 (set (reg/v:SI 68 [ start ])
> (mem/i:SI (reg/f:SI 16 argp) [3 start+0 S4 A32])) 44 {*movsi_1} (nil)
> (expr_list:REG_EQUIV (mem/i:SI (reg/f:SI 16 argp) [3 start+0 S4 A32])
> (nil)))
>
> (insn:HI 16 9 18 0 (set (reg/v:SI 66 [ median ])
> (mem/s:SI (plus:SI (mult:SI (reg/v:SI 68 [ start ])
> (const_int 4 [0x4]))
> (symbol_ref:SI ("data") <var_decl 0x416db6c8 data>)) [3 data S4
> A32])) 44 {*movsi_1}
> (insn_list:REG_DEP_TRUE 7 (nil))
> (nil))
>
> (insn:HI 18 16 20 0 (parallel [
> (set (reg/v:SI 60 [ pos.22 ])
> (plus:SI (reg/v:SI 68 [ start ])
> (const_int 1 [0x1])))
> (clobber (reg:CC 17 flags))
> ]) 200 {*addsi_1} (nil)
> (expr_list:REG_UNUSED (reg:CC 17 flags)
> (expr_list:REG_UNUSED (reg:CC 17 flags)
> (nil))))
>
> (insn:HI 20 18 21 0 (parallel [
> (set (reg:SI 71)
> (minus:SI (reg/v:SI 69 [ end ])
> (reg/v:SI 68 [ start ])))
> (clobber (reg:CC 17 flags))
> ]) 233 {*subsi_1} (insn_list:REG_DEP_TRUE 8 (nil))
> (expr_list:REG_UNUSED (reg:CC 17 flags)
> (expr_list:REG_UNUSED (reg:CC 17 flags)
> (nil))))
Yep, I was sleepy enought to missread the patterns and mess up the bug
entry, sorry for that. Hmm, this does not look that bad after all, but
still the 20% slowdown in the loop is interesting, I will look into it
deeper later today.
Honza
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18137