------- Comment #3 from pinskia at gcc dot gnu dot org  2006-10-22 23:55 -------
Confirmed, what happens is that combine combines:
(insn 18 16 19 3 (set (reg/v/f:SI 123 [ node ])
        (plus:SI (reg/v/f:SI 123 [ node ])
            (const_int -4 [0xfffffffffffffffc]))) 79 {*addsi3_internal1} (nil)
    (nil))

(insn 19 18 20 3 (set (reg:HI 125 [ <variable>.x ])
        (mem/s/j:HI (reg/v/f:SI 123 [ node ]) [2 <variable>.x+0 S2 A32])) 313
{*movhi_internal} (insn_list:REG_DEP_TRUE 18 (nil))
    (nil))


Into:
(note 18 16 19 3 NOTE_INSN_DELETED)

(insn 19 18 20 3 (parallel [
            (set (reg:HI 125 [ <variable>.x ])
                (mem/s/j:HI (plus:SI (reg/v/f:SI 123 [ node ])
                        (const_int -4 [0xfffffffffffffffc])) [2 <variable>.x+0
S2 A32]))
            (set (reg/v/f:SI 123 [ node ])
                (plus:SI (reg/v/f:SI 123 [ node ])
                    (const_int -4 [0xfffffffffffffffc])))
        ]) 361 {*movhi_update1} (nil)
    (nil))

But it forgets about:
(insn 20 19 21 3 (set (reg:SI 124 [ <variable>.x ])
        (zero_extend:SI (reg:HI 125 [ <variable>.x ]))) 42 {*rs6000.md:772}
(insn_list:REG_DEP_TRUE 19 (nil))
    (expr_list:REG_DEAD (reg:HI 125 [ <variable>.x ])
        (nil)))

Which is where the extra clrlwi comes from.


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|target                      |rtl-optimization
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-10-22 23:55:55
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29083

Reply via email to