http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47644
Summary: [avr] Regression in choosing registers
Product: gcc
Version: 4.3.3
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
AssignedTo: [email protected]
ReportedBy: [email protected]
Created attachment 23275
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23275
Test case in C
Consider the following snippet compiled with -O3:
int lsl_short(int f) {
return f << 1;
}
gcc 4.3.3 is copying the value from r25:r24 (first parameter) to r19:r18, then
moving back to r25:r24 (return value). Same for longs but with 4 registers.
Expected:
The lsl and rol should happen directly on r25:r24, just as they did in 4.2