This is the mail archive of the
mailing list for the GCC project.
Re: RFC / RFA: dwarf2 unwinding for targets with call-part-clobbered registers
- From: Jim Wilson <wilson at tuliptree dot org>
- To: Joern Rennecke <joern dot rennecke at superh dot com>
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Mon, 07 Jul 2003 20:11:58 -0700
- Subject: Re: RFC / RFA: dwarf2 unwinding for targets with call-part-clobbered registers
- References: <3F05DA83.A4ABF8E4@superh.com>
Joern Rennecke wrote:
This is not correct for machines with call-part-clobbered registers.
reg_raw_mode is a mode suitable to do caller-saves so that the register
can hold any mode over a call.
It isn't clear exactly what problem you are trying to fix here. I had
to look at the call-part-clobbered stuff to even understand what you are
So the only clean way to do this is to add another parameter to
choose_hard_reg_mode that makes it return the largest mode that is not
Or should we add a new target hook instead?
I don't have complete info, but adding an option to choose_hard_reg_mode
makes a little sense.
And I have some questions on the use of RETURN_ADDR_OFFSET:
This macro is not documented. Is it save to use? Should we add
documentation for it?
It should be safe to use. It should be documented.
gets confused by SHmedia addresses, which have the least significant bit
This is what MASK_RETURN_ADDR is for.
So instead of hard-coding _Unwind_Word, I use __UNWIND_CFA_TYPE__ and
__UNWIND_RA_TYPE__ and define them to _Unwind_Word if they are not
Does changing Unwind_Word to Unwind_Ptr work?
In the two places where you added UNWIND_CFA_TYPE * casts, it looks like
you added an extra dereference which looks wrong.
Also, in both of these places, it isn't clear why the existing
Unwind_Ptr cast doesn't work.
I'm not sure where this stuff should be documented. Or does it require no
Any macro that communicates info between a target port and the rest of
the compiler needs to be documented.