This is the mail archive of the
mailing list for the GCC project.
Re: dwarf2 eh for alpha, mark 2
- To: Jason Merrill <jason at cygnus dot com>, Richard Henderson <rth at cygnus dot com>
- Subject: Re: dwarf2 eh for alpha, mark 2
- From: Richard Henderson <rth at cygnus dot com>
- Date: Wed, 9 Sep 1998 02:23:32 -0700
- Cc: egcs-patches at cygnus dot com
- References: <19980909012313.C18516@dot.cygnus.com> <firstname.lastname@example.org>
- Reply-To: Richard Henderson <rth at cygnus dot com>
On Wed, Sep 09, 1998 at 01:56:50AM -0700, Jason Merrill wrote:
> Looks good. One problem: you changed the SP handling to set SP directly,
> rather than adjusting it. I did it with an adjustment to accomodate
> targets like SPARC64 where the SP register value is offset from the real
> stack frame address.
I would have thought that would have been all part of the CFA.
Oh, I think I see now that I was just lucky. I was using the CFA of
the inner call, when what I wanted was cfa-cfa_offset of one frame
farther in. Which happen to be the same thing most of the time.
I guess I'll change it back to an adjustment. I was trying to be
more efficient than the addition, but one subtract and one add is
going to cost much less than unwinding one more frame. Blah.
On a vaguely related note, it seems to me that we could get this
if (udata->cfa_reg == __builtin_dwarf_fp_regnum ())
udata->cfa = __builtin_fp ();
udata->cfa = __builtin_sp ();
udata->cfa += udata->cfa_offset;
directly via a virtual register instantiation. I'll see what I
can come up with there.