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)


Jakub Jelinek <jakub@redhat.com> writes:
>> But then we wouldn't be able to use var-tracking when __builtin_eh_return
>> is used, since in that case replacing the (set (reg ...) (mem ...))
>> with a (plus ...) would be incorrect -- the value we're loading from the
>> stack will have had a variable adjustment applied.  And I know from painful
>> experience that being able to debug the unwind code is very useful. :-)
>
> Aren't functions using EH_RETURN typically using frame pointer?

Sorry, forgot to respond to this bit.  On s390, _Unwind_RaiseException and
_Unwind_ForcedUnwind don't use a frame pointer, at least not on trunk.
%r11 is used as a general scratch register instead.  E.g.:

00002ba8 <_Unwind_ForcedUnwind>:
    2ba8:       90 6f f0 18             stm     %r6,%r15,24(%r15)
    2bac:       0d d0                   basr    %r13,%r0
    2bae:       60 40 f0 50             std     %f4,80(%r15)
    2bb2:       60 60 f0 58             std     %f6,88(%r15)
    2bb6:       a7 fa fd f8             ahi     %r15,-520
    2bba:       58 c0 d0 9e             l       %r12,158(%r13)
    2bbe:       58 10 d0 9a             l       %r1,154(%r13)
    2bc2:       18 b2                   lr      %r11,%r2
    ...
    2c10:       98 6f f2 20             lm      %r6,%r15,544(%r15)
    2c14:       07 f4                   br      %r4

Thanks,
Richard


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