On Thu, Jul 28, 2011 at 12:09:51PM -0700, Richard Henderson wrote: > Well, even if we're not able to hoist the R2 store, we may be able > to simply add REG_CFA_OFFSET and REG_CFA_RESTORE notes to the insns > in the stream.
You'd need to mark every non-local call with something that says R2 may be saved, effectively duplicating md_frob_update in dwarf. I guess that is possible even without extending our eh encoding, but each call would have at least 6 bytes added to eh_frame: DW_CFA_expression, 2, 3, DW_OP_skip, offset_to_r2_prog and you'd need to emit multiple copies of "r2_prog" for functions that have a lot of calls, since the offset is limited to +/-32k. I think that would inflate the size of .eh_frame too much, and slow down handling of exceptions dramatically. -- Alan Modra Australia Development Lab, IBM