dwarf2 eh for alpha, mark 2

Richard Henderson rth@cygnus.com
Wed Sep 9 02:23:00 GMT 1998


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 ();
  else
    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.


r~



More information about the Gcc-patches mailing list