This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Build failure with 3.1 CVS on sparc-sun-solaris2.8
- From: Brad Lucier <lucier at math dot purdue dot edu>
- To: jsturm at one-point dot com (Jeff Sturm)
- Cc: lucier at math dot purdue dot edu (Brad Lucier), rth at redhat dot com, gcc at gcc dot gnu dot org
- Date: Thu, 7 Feb 2002 13:13:55 -0500 (EST)
- Subject: Re: Build failure with 3.1 CVS on sparc-sun-solaris2.8
I just finished a bootstrap with regression tests with this patch.
Things seemed good---there were more failures in the gcc test library,
but these tests seem to have been added since the last time I ran the
regression tests.
Also, I did not get the same failure as before in compiling that large
program. A cursory examination of the stack-pointer manipulation code
seems to indicate good code generation.
The test results are at
http://gcc.gnu.org/ml/gcc-testresults/2002-02/msg00148.html
Brad
>
> On Wed, 6 Feb 2002, Brad Lucier wrote:
> > 0x1002aff90 in ggc_set_mark ()
> > (gdb) disassem
> > Dump of assembler code for function ggc_set_mark:
> > 0x1002aff90 <ggc_set_mark>: save %sp, -2240, %sp
>
> That's not a reasonable stack frame. Well, not for ggc_set_mark anyway.
>
> Richard, taking the stack bias out of STARTING_FRAME_OFFSET causes
> compute_frame_size to get the wrong answer.
>
> Perhaps this'd work? (Untested; I've really got to get my sparc back
> online.)
>
> 2002-02-06 Jeff Sturm <jsturm@one-point.com>
>
> * config/sparc/sparc.c (compute_frame_size): Don't correct frame
> offset for stack bias.
>
> Index: sparc.c
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/config/sparc/sparc.c,v
> retrieving revision 1.181
> diff -u -p -r1.181 sparc.c
> --- sparc.c 2002/02/04 18:16:06 1.181
> +++ sparc.c 2002/02/07 05:29:06
> @@ -3383,9 +3383,8 @@ compute_frame_size (size, leaf_function)
> }
> else
> {
> - /* We subtract STARTING_FRAME_OFFSET, remember it's negative.
> - The stack bias (if any) is taken out to undo its effects. */
> - apparent_fsize = (size - STARTING_FRAME_OFFSET + SPARC_STACK_BIAS +
> 7) & -8;
> + /* We subtract STARTING_FRAME_OFFSET, remember it's negative. */
> + apparent_fsize = (size - STARTING_FRAME_OFFSET + 7) & -8;
> apparent_fsize += n_regs * 4;
> actual_fsize = apparent_fsize + ((outgoing_args_size + 7) & -8);
> }
>
>