2.95.2: spilling extra registers for i386 (-m486)
Ulrich Windl
Ulrich.Windl@rz.uni-regensburg.de
Sun Oct 8 23:58:00 GMT 2000
Hello,
I noticed that gcc-2.95.2 uses two 32 bit registers when one should
also do the job:
When you copy a structure with two 32 bit words, gcc creates code
similar to this:
mov 0x28,%eax
mov 0x2c,%edx
mov %eax,0x30
mov %edx,0x34
Both registers, eax and edx are reloaded (spilled) immediately
afterwards, so there's no use having the values in two different
registers. I don't know the internals of gcc, but I guess it is doing a
virtual 64 bit load followed by a virtual 64 bit store when copying a
64 bit data structure. While legant in terms of mathematics, it does
not make much sense on a 32-bit machine.
Or will the 486 create microcode for parallel execution?
Regards,
Ulrich
More information about the Gcc-bugs
mailing list