On 02/06/2014 06:48 AM, Richard Sandiford wrote: > Richard Henderson <r...@redhat.com> writes: >> On 02/06/2014 01:55 AM, Richard Sandiford wrote: >>> OK, I agree that's not 4.9 material. What about the other change >>> of replacing: >>> >>> REF_CFA_DEF_CFA (plus (stack_pointer_rtx) (const_int 160/96)) >>> >>> with: >>> >>> REF_CFA_ADJUST_CFA (set (stack_pointer_rtx) >>> (plus (current_cfa_base) (const_int offset))) >>> >>> ? That works on its own, but having both a REG_CFA_ADJUST_CFA that assigns >>> to stack_pointer_rtx and a REG_CFA_RESTORE for stack_pointer_rtx feels like >>> a double assignment. >> >> It does seem like it. I suppose it would be easy to suppress the RESTORE of >> the stack pointer, without changing the save at all. > > But if having a restore in the presence of a save doesn't matter, why do > we have restores for the other registers? If the idea is that we never > care what the CFI state is after the LM(G) then why not omit all of them? > > Or do you mean that REG_CFA_ADJUST_CFA would act as a REG_CFA_RESTORE too, > if there had been a previous save?
Hum. Your response does make it clear that I may need more coffee. What I wrote above doesn't really make sense. r~