[Bug c/14473] New: Failure to use count register
anton at samba dot org
gcc-bugzilla@gcc.gnu.org
Mon Mar 8 02:13:00 GMT 2004
I found this in ppc32 3.3.3 (Debian), it also appears in 3.4.0 20040215.
If the loop count is large enough, it wont use the count register in the second
loop. eg:
#if 1
#define LOOPS 100000
#else
#define LOOPS 10
#endif
int main()
{
unsigned long i;
i = LOOPS;
while (i--) {
asm volatile("":::"memory");
}
i = LOOPS;
while (i--) {
asm volatile("":::"memory");
}
}
produces the following code:
lis 0,0x1
ori 0,0,34464
mtctr 0
.L13:
bdnz .L13
lis 0,0x1
ori 0,0,34464
.L12:
addic. 0,0,-1
bne+ 0,.L12
blr
If you reduce COUNT it will use the count register for both loops as expected
--
Summary: Failure to use count register
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: anton at samba dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: powerpc-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14473
More information about the Gcc-bugs
mailing list