[Bug c/34064] New: ARM: missed optimization (conditional store)
sam at rfc1149 dot net
gcc-bugzilla@gcc.gnu.org
Sun Nov 11 11:08:00 GMT 2007
The following code
void f(unsigned *_bss_start, unsigned *_bss_end)
{
unsigned *p;
for (p = _bss_start; p < _bss_end; p++)
*p = 0;
}
when compiled with
arm-elf-gcc -S -o - -fomit-frame-pointer -mcpu=arm7tdmi-s -Os t.c
produces (GCC 4.3.0 20071107)
f:
mov r3, #0
b .L2
.L3:
str r3, [r0], #4
.L2:
cmp r0, r1
bcc .L3
bx lr
It could be further optimized for both space and speed by emitting
f:
mov r3, #0
.L1:
cmp r0, r1
strcc r3, [r0], #4
bcc .L1
bx lr
--
Summary: ARM: missed optimization (conditional store)
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sam at rfc1149 dot net
GCC build triplet: arm-elf
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34064
More information about the Gcc-bugs
mailing list