[LLVMdev] Technical details discussion for SEH

endlessroad1991 at gmail.com endlessroad1991 at gmail.com
Thu Jan 30 20:29:01 PST 2014

Hi Jb,

It's good to see someone step up and take a shot as this again. I dropped
this because it seems to me it wasn't a high priority task for LLVM/Clang.

Implementing SEH is more of LLVM work than Clang work.

For 32-bit SEH, there are prologue/epilogue instruction sequence to emit,
setting try-level ([ebp-4]), recovering EBP ([ebp-18h]), and all these can
only happen in LLVM, not Clang. In my opinion, we should implement these as
LLVM intrinsics, like the gcc ones: see
Also, we should emit the tables for each function, which is not a simple
task either.

For 64-bit SEH, things are simpler. There are no more instructions to emit
than no-SEH code. We have only two tasks: emit the table for each function,
and place some code right. If I remember it correctly, __finally block code
should be replicated at 2 places: one in the original function as part of
the normal execution path, and other one separately if anything in __try
block goes south.
As for the table part, I've seen some commits from Kai(as CC'ed in this
email) doing it, you should ask him for details.

Thanks again.

Best Regards, Tong Shen (沈彤)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140131/61a1ae71/attachment.html>

More information about the llvm-dev mailing list