Date: Wed, 24 May 2000 09:02:14 +0300 From: Valentin Nechayev <netch@lucky.net> To: freebsd-hackers@freebsd.org Subject: gcc 2.95.2 extra %esp addings Message-ID: <20000524090214.W66599@lucky.net>
next in thread | raw e-mail | index | archive | help
Consider a little test program:
> #include <stdio.h>
> extern int func_a( int, int );
> int main()
> {
> int i;
> for( i = 0; i < 100; i++ ) {
> printf( "%d\n", func_a( i, i+2 ) );
> }
> return 0;
> }
Part of assembler code built by gcc 2.7.2.3 (on FreeBSD-3.4-stable):
> pushl %ebp
> movl %esp,%ebp
> pushl %ebx
> xorl %ebx,%ebx
> .L15:
> leal 2(%ebx),%eax
> pushl %eax
> pushl %ebx
> call func_a
> pushl %eax
> pushl $.LC0
> call printf
Part of the same built by gcc 2.95.2 (on FreeBSD 4.0-stable or 5.0-current):
> pushl %ebp
> movl %esp,%ebp
> subl $20,%esp
> pushl %ebx
> xorl %ebx,%ebx
> .L10:
> addl $-8,%esp
> addl $-8,%esp
> leal 2(%ebx),%eax
> pushl %eax
> pushl %ebx
> call func_a
> pushl %eax
> pushl $.LC0
> call printf
One can observe extra commands which deals with %esp (add or subtract
something). This was built with -O99 (full command line for both gcc versions:
gcc -O99 -S -g main.c), with any extra code-generation options or without
them, result is the same.
Also tested on some real programs from -current src tree, with the same
(extra addings to %esp) result.
gcc 2.95.1 from port does not add such commands.
In program where this was discovered, situation is even worse:
> .stabn 68,0,8,.LM3-main
> .LM3:
> addl $32,%esp
> addl $-8,%esp
> addl $-8,%esp
> pushl $1
> pushl $0
> call func_a
and none optimization groups these operations.
Is it reasonable or it is bugfeature of this gcc version?
Is it FreeBSD-specific?
And what reason is to have two identical (except some html docs) copies
of gcc - src/contrib/gcc and src/contrib/gcc.295 ?
--
NVA
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000524090214.W66599>
