This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/49939] New: [avr] Skip 2-word instructions if applicable
- From: "gjl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 1 Aug 2011 20:59:52 +0000
- Subject: [Bug target/49939] New: [avr] Skip 2-word instructions if applicable
- Auto-submitted: auto-generated
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.