This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: var-tracking and s390's LM(G)


Richard Henderson <rth@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?

Thanks,
Richard


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]