avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] Pointer register allocation optimizer


From: Georg-Johann Lay
Subject: Re: [avr-gcc-list] Pointer register allocation optimizer
Date: Fri, 27 Jul 2012 16:06:50 +0200
User-agent: Thunderbird 2.0.0.24 (Windows/20100228)

Wouter van Gulik schrieb:
Hi list,

This code:

char* f(char* p)
{
  p++;
  return p;
}

Results in:

        mov r18,r24
        mov r19,r25
        subi r18,lo8(-(1))
        sbci r19,hi8(-(1))
        mov r24,r18
        mov r25,r19
        ret

When compiling with avr-gcc -O[23s] -mmcu=avr5 -S main.c
Which is bad since it could have been:

        adiw r24, 1
        ret

I tested against WinAVR's 4.3.3 and avr-gcc-4.7-185693-mingw32
Both generate the same code.

Should I create a bug report?

Wouter

Looks very much like PR52278, which is still open.

According to Vladimir, the register allocator (RA) should work smooth
with SUBREGs, but obviously, it does not.

Maybe it's also related to PR49491, yet another RA optimization flaw
showing up for avr.

You can try -fno-split-wide-types, but that might have other disadvantages.

Johann



reply via email to

[Prev in Thread] Current Thread [Next in Thread]