SjLj exception handling impl

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.

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.