https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21150
Andrew Pinski changed:
What|Removed |Added
Status|NEW |RESOLVED
Target Milestone|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21150
--- Comment #7 from Denis Vlasenko ---
Fixed at least in 4.7.2, maybe earlier. With -m32 -fomit-frame-pointer -O2:
a: movzbl v+45, %eax
xorbv+36, %al
xorbv, %al
xorbv+54, %al
xorbv+63, %al
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21150
Denis Vlasenko changed:
What|Removed |Added
CC||vda.linux at googlemail dot
--- Comment #5 from pinskia at gcc dot gnu dot org 2008-09-14 03:53 ---
IRA is slightly worse, it uses one extra register
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21150
--- Comment #4 from rask at gcc dot gnu dot org 2007-11-09 19:48 ---
I think this might be a middle-end issue related to PR 7061 or PR 15184. We're
doing slightly better with GCC 4.3.0 (because of subreg lowering, I guess), but
not much (asm output with -dp for readability):
a:
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-07-04
22:21 ---
Confirmed, this is most likely a sub register problem.
--
What|Removed |Added
St
--- Additional Comments From vda at port dot imtp dot ilyichevsk dot odessa
dot ua 2005-04-24 13:26 ---
I don't think that bug description is correct.
I believe similar observation will be valid for byte extraction
from u32 and u16, and for u16-from-u32, etc.
Update for latest gcc.
This
--
What|Removed |Added
Keywords||missed-optimization
Summary|Suboptimal byte extraction |Suboptimal byte extraction