[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] Bugfixes & more ARM stuff

From: Daniel Glöckner
Subject: [Tinycc-devel] Bugfixes & more ARM stuff
Date: Mon, 27 Oct 2003 00:19:43 +0100
User-agent: Mutt/1.4.1i

Hi list!

It should be applied together with Damian's bitfield patch.
I made some tests and fixed a few of the bugs that annoyed me.
The bug David mentioned on friday is fixed as well.
Some other faults are now no longer silently made.
GCC testsuite still fails on about 150 tests.

local address + constant = local address
=> saves instructions on local structure and long long access.

- Most itofs and ftois are now calls to external functions.
  The previous versions didn't always work as they put register numbers
  in wrong bits.
- gfunc_call rewritten to no longer push everything and pop part of it
  back. Works now with calculated function addresses.
- gen_opi is now safe with VT_JMP(I) on vstack
- workaround for >= and Linux FPU emulator
- catch some internal errors
- #define LDOUBLE_SIZE should work (untested), but remember:
  gcc defaults to sizeof(long double)==2*sizeof(int)

Comparing a natively compiled tcc and a cross compiled tcc (both
compiled with tcc) reveals that there are still some parts which need
to be changed. The (only) difference is that the halves of doubles are
swapped on ARM. Configure needs to check that. ieee_finite and init_putv
need to be changed. Only 5 double constants in tcc are affected and
those seem to be unused when compiling tcc with tcc.

As I removed itof & ftoi from arm-gen.c, I put together a libtcc1.a.
It still needs gas (and a cpp), so I didn't attach it. You can find it at
Another reason to use this one is that the modulo routine in gcc 2.95.3's
libgcc.a is flawed (that bug is still in the kernel :-| ).

Making the inline assember work for ARM needs changes to the parser.
I generated a list of all possible tokens. There are more than 8000
tokens because every instruction has 17 variations of conditional
execution and up to 3 other flags attached to its name. Using the
current parser would mean more than 60kB of strings in tcc.


Attachment: arm.diff.gz
Description: application/gunzip

Attachment: bugfixes.diff.gz
Description: application/gunzip

Attachment: improvement.diff.gz
Description: application/gunzip

Attachment: pgpHQp1iUIdbK.pgp
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]