[llvm-dev] [RFC] Asynchronous unwind tables attribute

Fāng-ruì Sòng via llvm-dev llvm-dev at lists.llvm.org
Sat Nov 20 17:02:15 PST 2021


On 2021-11-21, Momchil Velikov wrote:
>On Sun, 21 Nov 2021 at 00:33, Fāng-ruì Sòng <maskray at google.com> wrote:
>
>> On 2021-11-21, Momchil Velikov wrote:
>> >         | nounwind 0  |  nounwind 1
>> >----------+-------------+--------------
>> >uwtable 0 | <full,no>   |  <no,no>
>> >----------+-------------+--------------
>> >uwtable 1 | <full,no>   |  <full,no>
>> >----------+-------------+--------------
>> >uwtable 2 | <full,min> | <min, min>
>> >----------+-------------+--------------
>> >uwtable 3 | <full,full> |  <full,full>
>> >
>> >where
>> > - "full" means full unwind info - CFA, CSRs, return address
>> > - "min" is minimal, sans CSRs,
>> > - "no" is, well, no unwind info and
>> > - "<p,e>" is the kind generated for prologues and epilogues,
>> respectively.
>>
>> uwtable 1/nounwind 1: <full,no>
>> uwtable 2/nounwind 1: <min,min>
>>
>> Why is there a full->min transition for the generated prologue?
>>
>
>Because for a synchronous unwind table it makes only sense for the prologue
>to be full, <min, no> is
>unusable combination, whereas <full, no> is usable for a debugger (it's
>basically what we have now for most backends).

I wanted to ask why the prologue information has degraded from full to
min when transiting from uwtable 1 to uwtable 2.

I do not understand why moving from uwtable 1 to uwtable 2 is not monotonic.


More information about the llvm-dev mailing list