This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/29083] useless clrlwi instruction produced for 16-bit bitfield
- 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: 22 Oct 2006 23:55:55 -0000
- Subject: [Bug rtl-optimization/29083] useless clrlwi instruction produced for 16-bit bitfield
- References: <bug-29083-7849@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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