[Bug rtl-optimization/56069] New: [4.6/4.7/4.8 Regression] RA pessimization
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jan 21 17:37:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56069
Bug #: 56069
Summary: [4.6/4.7/4.8 Regression] RA pessimization
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Keywords: missed-optimization, ra
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jakub@gcc.gnu.org
CC: rsandifo@gcc.gnu.org, vmakarov@gcc.gnu.org
Target: x86_64-linux
Since http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=139993
unsigned long foo (unsigned long mem)
{
return (mem >> 3) | (1UL << 44);
}
unsigned long bar (unsigned long mem)
{
return (mem >> 3) + (1UL << 44);
}
on x86_64-linux at -O2 (and -Os) the generated code for foo is one insn longer.
We used to emit:
shrq $3, %rdi
movabsq $17592186044416, %rax
orq %rdi, %rax
ret
but now emit:
movq %rdi, %rax
movabsq $17592186044416, %rdx
shrq $3, %rax
orq %rdx, %rax
ret
More information about the Gcc-bugs
mailing list