|
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
[Prev in Thread] | Current Thread | [Next in Thread] |