This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/18137] arguments being gimple registers cause redundant memory loads
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Oct 2004 03:33:34 -0000
- Subject: [Bug rtl-optimization/18137] arguments being gimple registers cause redundant memory loads
- References: <20041025005059.18137.hubicka@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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))))
but after that we get:
(insn 153 9 16 0 (set (reg:SI 0 ax)
(mem/i:SI (plus:SI (reg/f:SI 6 bp)
(const_int 8 [0x8])) [3 start+0 S4 A32])) 44 {*movsi_1} (nil)
(nil))
(insn:HI 16 153 154 0 (set (reg:SI 0 ax)
(mem/s:SI (plus:SI (mult:SI (reg:SI 0 ax)
(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 154 16 155 0 (set (mem:SI (plus:SI (reg/f:SI 6 bp)
(const_int -16 [0xfffffffffffffff0])) [4 median+0 S4 A8])
(reg:SI 0 ax)) 44 {*movsi_1} (nil)
(nil))
(insn 155 154 18 0 (set (reg/v:SI 3 bx [orig:60 pos.22 ] [60])
(mem/i:SI (plus:SI (reg/f:SI 6 bp)
(const_int 8 [0x8])) [3 start+0 S4 A32])) 44 {*movsi_1} (nil)
(nil))
Oh why is reload doing this.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Component|tree-optimization |rtl-optimization
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2004-10-25 03:33:34
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18137