[Bug target/49939] New: [avr] Skip 2-word instructions if applicable
gjl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Aug 1 21:00:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49939
Summary: [avr] Skip 2-word instructions if applicable
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: target
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: gjl@gcc.gnu.org
CC: eric.weddington@atmel.com
Target: avr
Curent avr-gcc from trunk compiles this C code
char c;
void foo (char a, char b)
{
if (a)
c = b;
}
with -Os to
foo:
tst r24 ; 7 *cmpqi/1 [length = 1]
breq .L1 ; 8 branch [length = 1]
sts c,r22 ; 10 *movqi/3 [length = 2]
.L1:
ret ; 19 return [length = 1]
which could be smarter using a CPSE skip instruction instead like so:
foo:
cpse r24, __zero_reg__
sts c,r22
.L1:
ret
At current, avr-gcc just emits skips over 1-word instructions.
As of http://gcc.gnu.org/viewcvs?view=revision&revision=177049
avr-gcc now knows if it is also legal to skip 2-word instructions.
More information about the Gcc-bugs
mailing list