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