Port-arm archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: gcc 4.1.3 (netbsd-5-1) ARM compiler bug
On 05/11/11 23:14, Ignatios Souvatzis wrote:
>
> On Sat, Nov 05, 2011 at 11:40:37PM +0100, Ignatios Souvatzis wrote:
>> Addition: xjpg_dec.c compiles to slow, working code with -O0.
>
> Isolated test case shows same behaviour:
> marie pointerdiff !% cat pointerdiff.c
> struct foo {
> char c[1024];
> char *a;
> char *b;
> };
> int bar (struct foo *g) {
> return g->b - g->a;
> }
> marie pointerdiff !% cc -O2 -S pointerdiff.c
> marie pointerdiff !% cat pointerdiff.s
> .file "pointerdiff.c"
> .text
> .align 2
> .global bar
> .type bar, %function
> bar:
> @ args = 0, pretend = 0, frame = 0
> @ frame_needed = 0, uses_anonymous_args = 0
> @ link register save eliminated.
> ldr r0, [r0, #1028]
> ldr r3, [r0, #1024]
> sub r0, r3, r0
> @ lr needed for prologue
> mov pc, lr
> .size bar, .-bar
> .ident "GCC: (GNU) 4.1.3 20080704 prerelease (NetBSD nb2 20081120)"
>
> Regards,
> -is
>
Looks to be still present in 4.3 and 4.4, but is fixed on GCC trunk
(don't have a build of 4.5 or 4.6 to hand).
A quick, safe, fix, with probably negligible overhead, is to comment out
the pattern "*arith_adjacentmem" in arm.md.
R.
Home |
Main Index |
Thread Index |
Old Index