[llvm-dev] SjLj exception handling impl

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 26 10:34:01 PST 2018


I don't think llvm.eh.sjlj.setjmp is involved, but the backend does a bunch
of preparation in IR in the SjLjEHPrepare pass. Check it out here:
https://github.com/llvm-git-prototype/llvm/blob/a845b0985672ee66c1cc8e070ca5d5ac6e89c0c9/llvm/lib/CodeGen/SjLjEHPrepare.cpp

So, the documentation is true in the sense that LLVM intrinsics are used to
set up a context that is compatible with llvm.eh.sjlj.longjmp, which the EH
runtime will call. We could update it to indicate that this lowering
happens late during codegen to clarify things.

On Mon, Dec 24, 2018 at 9:15 AM Yuanfang Chen via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
>
>
> http://llvm.org/docs/ExceptionHandling.html#setjmp-longjmp-exception-handling
> says
> "Setjmp/Longjmp (SJLJ) based exception handling uses LLVM intrinsics
> llvm.eh.sjlj.setjmp and llvm.eh.sjlj.longjmp to handle control flow
> for exception handling."
>
> Is this still true at least for X86?
> "clang++ -fsjlj-exceptions -fcxx-exceptions -S -emit-llvm -O1 eh.cpp"
> still gives me the usual invoke, landingpad etc..
>
> Or llvm.eh.sjlj.* are only lowered from corresponding clang builtins?
>
> Thanks.
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181226/86924035/attachment.html>


More information about the llvm-dev mailing list