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: unassig...@gcc.gnu.org ReportedBy: kip.hi...@gmail.com 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