This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/19154] miss-optimization of (x & pow2C) avr conditionals returning bool equivalent values
- 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 Dec 2004 20:57:17 -0000
- Subject: [Bug middle-end/19154] miss-optimization of (x & pow2C) avr conditionals returning bool equivalent values
- References: <20041225202132.19154.schlie@comcast.net>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-12-25 20:57 -------
Take:
char g(char c)
{
return (c & (1 << 3)) != 0;
}
(insn 8 4 30 (set (reg:HI 24 r24 [orig:44 c ] [44])
(sign_extend:HI (reg:QI 24 r24 [ c ]))) 81 {extendqihi2} (nil)
(nil))
(insn 30 8 11 (parallel [
(set (reg:HI 24 r24 [orig:44 c ] [44])
(lshiftrt:HI (reg:HI 24 r24 [orig:44 c ] [44])
(const_int 3 [0x3])))
(clobber (reg:QI 19 r19))
]) 70 {*lshrhi3_const} (nil)
(expr_list:REG_UNUSED (reg:QI 19 r19)
(expr_list:REG_UNUSED (reg:QI 25 r25)
(nil))))
(insn 11 30 12 (set (reg:HI 24 r24 [46])
(sign_extend:HI (reg:QI 24 r24 [47]))) 81 {extendqihi2} (insn_list:REG_DEP_TRUE 10 (nil))
(nil))
(insn 19 16 25 (parallel [
(set (reg/i:HI 24 r24 [ <result> ])
(and:HI (reg:HI 24 r24 [46])
(const_int 1 [0x1])))
(clobber (scratch:QI))
]) 47 {andhi3} (insn_list:REG_DEP_TRUE 11 (nil))
(expr_list:REG_UNUSED (scratch:QI)
(nil)))
Which looks good if the rtl matches up one to one per instruction but since avr is not like that we get a
werid interaction.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2004-12-25 20:57:17
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19154