how can RETURN_ADDR_RTX possibly do its work?
Joern Rennecke
joern.rennecke@superh.com
Tue May 25 14:26:00 GMT 2004
> Is there some better solution to this problem that I'm overlooking? The
> rs6000 solution of setting a flag to force the epilog generator to save the
> link register whether it thinks it needs to or not seems like the most
> robust to me, and I guess it's only a very tiny pessimisation in only those
> leaf functions that call __builtin_return_address, but it still seems
> inelegant to me.
The SH uses the result of get_hard_reg_initial_val and wraps it in an UNSPEC.
This is matched with a define_insn_and_split. ALLOCATE_INITIAL_VALUE
is used to avoid storing the return address twice.
For TARGET_SHCOMPACT it gets a bit more tricky because of the call / return
'trampolines', but you probably don't need that much detail...
More information about the Gcc
mailing list