Hi Mike,

just want to state my understanding to allow you to comment if I'm off....

On 10 Nov 2011, at 16:12, Mike Stump wrote:

On Nov 10, 2011, at 1:35 AM, Richard Guenther <rguent...@suse.de> wrote:
flag_exceptions also triggers middle-end behavior - without it no
statement can possibly throw

Actually, one version of exception handling for objective c++ doesn't require flag_exceptions... One can indeed @throw without it, they just can't throw without it.


Thanks for catching that --- brainstorm on my part ... the code under discussion should have been #ifndef OBCPLUS

Unfortunately, that particular blunder wasn't caught by the test-suite (which passes with the code I posted).

-=-

Specifically:
NeXT m32 (ABI=0 or 1) uses SjLj exceptions for @throw etc. (and the @throw is done from a library routine).

Moreover, there is no personality routine in m32 NeXT libobjc, so if one tries to engage the zero-cost exceptions, one gets a link error (and generates a load of unused eh data). I can work around that if there is still reason to have "-fexceptions" on.

When c++ exceptions are operated in parallel with the ObjC ones - the personality routine is pointed at the libstc++ one.

===

m64 NeXT is a different beast altogether and the @throw and throw exceptions work together using the same unwinder.

===

With Joseph's suggestion I don't have a problem with the early use of flag_next_runtime - which means I can split the patch up - as I know Mike would prefer.

... will try an post a new version later.

Iain

Reply via email to