[Bug rtl-optimization/19580] New: [3.4/4.0 Regression] poor register allocation
belyshev at depni dot sinp dot msu dot ru
gcc-bugzilla@gcc.gnu.org
Sun Jan 23 01:35:00 GMT 2005
------------------------------------------------------------------------------
int r[6];
void f (int n)
{
while (-- n)
{
r [0] += r [5];
r [1] += r [0];
r [2] += r [1];
r [3] += r [2];
r [4] += r [3];
r [5] += r [4];
}
}
------------------------------------------------------------------------------
On i386 with -O2 -fomit-frame-pointer we get:
.L4:
movl 20(%esp), %ebp
movl 8(%esp), %eax
movl 16(%esp), %ebx
incl 24(%esp)
addl %edi, %ebp
leal (%ebp,%eax), %esi
movl 12(%esp), %eax
movl %ebp, 20(%esp)
leal (%esi,%ebx), %ecx
movl 4(%esp), %ebx
movl %esi, 8(%esp)
leal (%ecx,%eax), %edx
movl %ecx, 16(%esp)
leal (%edx,%ebx), %eax
movl 24(%esp), %ebx
cmpl %ebx, 28(%esp)
movl %edx, 12(%esp)
leal (%eax,%edi), %edi
movl %eax, 4(%esp)
movl %edi, (%esp)
jne .L4
workaround: -fno-gcse
--
Summary: [3.4/4.0 Regression] poor register allocation
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Keywords: missed-optimization, ra
Severity: normal
Priority: P2
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: belyshev at depni dot sinp dot msu dot ru
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19580
More information about the Gcc-bugs
mailing list