Hi all,
I just noticed that 4.9 generates some code overhead for 386 machines
respect to 4.8.
In my test case I used 4.8.1 and 4.9.1 and realized that when compiling
with "-Os -fno-exceptions -fno-align-functions -fomit-frame-pointer"
certain things change:
On 4.9 the backend adds some "nop" after ret or jmp.
It also stops using "leave" instruction, which is really convenient to
save some instructions.
It think it is not using leave because of register allocation. In 4.8 a
function starts like this:
390: 55 push %ebp
391: 89 e5 mov %esp,%ebp
393: 53 push %ebx
Whereas in 4.9 it starts:
386: 53 push %ebx
387: 89 cb mov %ecx,%ebx
389: 83 ec 28 sub $0x28,%esp
So the first function actually saves some space.
Any ideas, thoughts, comments?
Thanks a lot,
David G.F.