[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] compiler improvments
From: |
HutchinsonAndy |
Subject: |
Re: [avr-gcc-list] compiler improvments |
Date: |
Sat, 10 Jan 2004 10:54:25 -0500 |
I am looking at the structure problems. Seems there are several issues.
The compiler is trying to use a DI sized variable to hold structure - 8 bytes.
I am not sure why but perhaps it attempst to hold all structures in registers
and it has not been told that a DI register is not a good idea.
Size DI moves are not defined for avr target, it is using QI moves (bytes
moves) - which is reasonable
I beleive it wants to use a temporary DI register in order to return the value
in the right registers. This may be because of the overlap.
The extra stack variable is simple padding out 6 bytes of structure to 8.
Compiler did not spot that subregister was unused.
The unwanted push/pop occurs somewhere in reload. R8 get assigned by global
register allocation. However, it is latter replaced by R13 (on my build). The
GCC part that marks the register as "live" does not get updated. Hence the
problem.
I am trying to find out what part of code does this.
I am glad to see bug report is in on this one!
I may well be able to do something about the other problems. It would seem that
curing the "DI" allocation and movement will cause all the other issues to go
away.
__________________________________________________________________
New! Unlimited Netscape Internet Service.
Only $9.95 a month -- Sign up today at http://isp.netscape.com/register
Act now to get a personalized email address!
Netscape. Just the Net You Need.