<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_extra"><br><div class="gmail_quote">2018-01-16 18:18 GMT+08:00 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On 15 January 2018 at 12:49, 陳韋任 via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
>   - CFI directives:<br>
><br>
>     This is for .eh_frame section. Basically all the targets insert CFI<br>
> directives in FrameLowering, but I am not sure exactly when/where I should<br>
> do so.<br>
<br>
</span>The directives are there to describe where the unwinder should look to<br>
find out what each register's value was when this function was called<br>
(well, each register that the caller expected to be preserved). So the<br>
directives have to have been emitted by the time any instruction is<br>
executed that could cause an exception to be thrown (typically either<br>
a call to another function or a compiler-generated call to __cxa_throw<br>
or similar when the source code itself contains "throw X").<br>
<br>
So normally the directives are emitted in the prologue when the<br>
registers actually get saved. Sometimes all in a bunch, sometimes<br>
interspersed with the saves, but it usually doesn't matter which. As<br>
you've discovered that happens in XYZFrameLowering</blockquote><div><br></div><div><span style="font-family:arial,helvetica,sans-serif">​Do we have to emit directives in the epilogue, too?​ One of my test case fail due to the directives in the epilogue have been executed. After remov<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;display:inline">​ing</div> them from epilogue, the exception is caught as expected. Also, the directives are also for debug purpose (.debug_frame), right? I guess I only have to make sure directives work for exception handling, then debug works as well?</span></div><div><br></div></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>Wei-Ren Chen (陳韋任)<br>Homepage: <a href="https://people.cs.nctu.edu.tw/~chenwj" target="_blank">https://people.cs.nctu.edu.tw/~chenwj</a></div></div></div>
</div></div>