[Bug target/65768] New: sub-optimimal code for constant Uses in loop
kugan at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 15 07:09:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65768
Bug ID: 65768
Summary: sub-optimimal code for constant Uses in loop
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: kugan at gcc dot gnu.org
#include <stdint.h>
void maskdata(int32_t * data, unsigned int len)
{
const int32_t mask = 0x00ff00ff;
for (int i=len; i-- > 0 ;) {
data[i] &= mask;
}
}
Is producing the following with arm-none-linux-gnueabi-gcc for -O2:
maskdata:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
cmp r1, #0
bxle lr
add r1, r0, r1, lsl #2
.L3:
ldr r3, [r1, #-4]!
cmp r1, r0
bic r3, r3, #-16777216
bic r3, r3, #65280
str r3, [r1]
bne .L3
bx lr
.size maskdata, .-maskdata
.ident "GCC: (GNU) 5.0.0 20150409 (experimental)"
.section .note.GNU-stack,"",%progbits
More information about the Gcc-bugs
mailing list