[Bug target/54378] New: code bloat for long << shifts
gjl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Aug 26 13:04:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54378
Bug #: 54378
Summary: code bloat for long << shifts
Classification: Unclassified
Product: gcc
Version: 4.7.1
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: gjl@gcc.gnu.org
Target: avr
Something goes woring with cost computaton fir shifts:
long ashl32_7 (long x)
{
return x << 7;
}
compiled with -O2 -dp -mmcu=atmega8 -S -fno-split-wide-types
results in
ashl32_7:
/* DEBUG: cost = 32. */
lsl r22 ; 27 *ashlsi3_const/4 [length = 8]
rol r23
rol r24
rol r25
lsl r22
rol r23
rol r24
rol r25
/* DEBUG: cost = 32. */
lsl r22 ; 28 *ashlsi3_const/4 [length = 8]
rol r23
rol r24
rol r25
lsl r22
rol r23
rol r24
rol r25
/* DEBUG: cost = 32. */
lsl r22 ; 29 *ashlsi3_const/4 [length = 8]
rol r23
rol r24
rol r25
lsl r22
rol r23
rol r24
rol r25
/* DEBUG: cost = 16. */
lsl r22 ; 30 *ashlsi3_const/2 [length = 4]
rol r23
rol r24
rol r25
/* DEBUG: pattern-cost = 4. */
ret ; 26 return [length = 1]
The insns are already there at .expand
More information about the Gcc-bugs
mailing list