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