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

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