This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/18137] 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))))


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]