This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
Re: optimization/5477: gcc 3.0.x reserves a large stack frame, butuses only some parts of it
- From: Klaus Espenlaub <espenlaub at informatik dot uni-ulm dot de>
- To: nobody at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org,
- Date: 17 Mar 2003 10:36:01 -0000
- Subject: Re: optimization/5477: gcc 3.0.x reserves a large stack frame, butuses only some parts of it
- Reply-to: Klaus Espenlaub <espenlaub at informatik dot uni-ulm dot de>
The following reply was made to PR optimization/5477; it has been noted by GNATS.
From: Klaus Espenlaub <espenlaub at informatik dot uni-ulm dot de>
To: bangerth at dealii dot org, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org,
nobody at gcc dot gnu dot org, gcc-gnats at gcc dot gnu dot org
Cc:
Subject: Re: optimization/5477: gcc 3.0.x reserves a large stack frame, but
uses only some parts of it
Date: Mon, 17 Mar 2003 11:33:57 +0100
bangerth at dealii dot org wrote:
> Synopsis: gcc 3.0.x reserves a large stack frame, but uses only some parts of it
>
> State-Changed-From-To: open->feedback
> State-Changed-By: bangerth
> State-Changed-When: Sat Mar 15 04:38:32 2003
> State-Changed-Why:
> Klaus, for unknown reasons the attachment I find in the
> report doesn't have a main() function -- thus no checking
> possible. Do you still have the program so that you can
> send it to me? I'll attach it to the report then.
The code is taken from a libc subset, therefore there is no main().
If you insist on having a piece of code that can be compiled to an executable
program, just append the following few lines to the code:
-------------------------- snip
int __console_putchar(int c)
{
return putchar(c);
}
int main(void)
{
do_printf(NULL, 30, "Hello, world!\n", NULL);
return 0;
}
-------------------------- snip
It doesn't make much sense in this context to have a fully compilable piece of
code, since the problem is not that the resulting program fails to compile or
fails to run, but that it uses one order of magniture more stack space than it
would need to. So it's no good candidate for automated regression checking,
since neither the compiler fails nor the compiled program. There's not much
more possible than manually follow the How-To-Repeat section of the bug report.
Another comment on the base problem: the compiler bug seems to be fixed in
gcc-3.2. There might still be room for improvement, but the current stack
consumption is quite acceptable: gcc-3.0 reserved 380 bytes of stack space,
while gcc-3.2 reserves only 28.
> Regarding the problem itself: yes, known problem. We
> have several such reports in the database :-(
The solution for me will be to upgrade to gcc-3.2 everywhere in the very near
future.
Regards
--
Klaus Espenlaub Email: espenlaub at informatik dot uni-ulm dot de