This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/14473] New: Failure to use count register
- From: "anton at samba dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Mar 2004 02:13:37 -0000
- Subject: [Bug c/14473] New: Failure to use count register
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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