[LLVMdev] How to code catch-all in the new exception handling scheme? (original) (raw)

Garrison Venn gvenn.cfe.dev at gmail.com
Tue Sep 27 11:38:49 PDT 2011


Hi Duncan,

On Sep 27, 2011, at 7:58, Duncan Sands wrote:

Hi Bill,

I'm looking at the docs, and while it refers to a "catch-all" clause,

hopefully Bill will get rid of the first reference to "catch-all" since that section is inaccurate. I think this is now correct. Please check. :) I still have some niggles: The unwinder delegates the decision of whether to stop in a call frame to that call frame's language-specific personality function. Not all personality functions guarantee that they will stop to perform cleanups. This is incorrect: it is not the personality function that makes the decision, it is who-ever is doing the unwinding. For example if you use the Ada "throw" method it will always run all C++ cleanups, even if that's all there is to do. While if you use the C++ throw method it won't bother running Ada cleanups if that is all there is to do. All personality functions that I am familiar with treat cleanups in the same way.

How does one incorporate their own LLVM backend unwinding mechanism? I'm assuming that you have an Ada backend. Does your backend not call _Unwind_RaiseException for example?

[snip]

...

Ciao, Duncan.


LLVM Developers mailing list LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

Thanks in advance

Garrison



More information about the llvm-dev mailing list