diff options
| author | Daniel Glöckner <daniel-gl@gmx.net> | 2008-09-05 21:08:48 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2008-09-12 22:22:59 +0200 |
| commit | e263ee3cbfcb700d652b785ba95fa9e81e2b2a6b (patch) | |
| tree | 41fa44c9d84653f4e375f59543bee6ebc3012794 /tccasm.c | |
| parent | 15e0dc08a67003f72c59a1f06d762245824d2ae6 (diff) | |
| download | tinycc-e263ee3cbfcb700d652b785ba95fa9e81e2b2a6b.tar.gz tinycc-e263ee3cbfcb700d652b785ba95fa9e81e2b2a6b.tar.bz2 | |
Fix gv for long longs
long long a();
long long b() {
return a();
}
At the end of b there will be some useless register shuffling.
This is because return wants to have the result of a in REG_IRET.
gv checks if this is the case for BOTH registers of the long long.
After this test it uses REG_LRET for the second register if the
first is supposed to be REG_IRET. In other cases it uses RC_INT.
The patch compares the second register against the class it will
have in the end instead of the register class the first register
will have.
At this point I would like to remind those who pick up the patches
that there are two other mails by me with uncommitted fixes:
http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html
http://lists.gnu.org/archive/html/tinycc-devel/2008-08/msg00007.html
Daniel
Diffstat (limited to 'tccasm.c')
0 files changed, 0 insertions, 0 deletions
