[cfe-dev] One more EH patch...

Fariborz Jahanian fjahanian at apple.com
Mon May 11 12:49:16 PDT 2009


On May 11, 2009, at 11:34 AM, Chris Lattner wrote:

>
> On May 9, 2009, at 6:09 AM, David Chisnall wrote:
>
>> On 9 May 2009, at 12:40, David Chisnall wrote:
>>
>>> This one fixes the case where an exception is thrown inside a
>>> @catch() block (GNU runtime).
>>
>> And this version now emits code for @synchronized.  As with GCC,
>> this code doesn't actually work, because the required functions are
>> not present in the GNU runtime library.
>
> Thanks David, applied.  I don't have an opinion on:
>
>> I've also attached the test case I've been using while working on
>> this.  The following two commands should produce the same output:
>>
>> clang  -lobjc -fexceptions trycatch.m -g && ./a.out
>> gcc -lobjc -fobjc-exceptions trycatch.m && ./a.out
>>
>> I don't know if someone wants to add this to the clang test suite.
>>
>> At the moment, clang has the same behaviour as gcc when -fexceptions
>> is not specified; it generates code which aborts at runtime if an
>> exception is thrown, rather than handling it.  Although this is the
>> same as gcc, it seems like the wrong thing to do.  We should
>> probably either:
>>
>
>
>> 1) Implicitly turn on -fexceptions when @try/@catch/@throw/
>> @synchronized is encountered, or
>> 2) Emit an error and let the user know at compile-time that they are
>> generating broken code.
>>
>>

This may make sense for Gnu runtime. But for us, objc runtime library  
always
supports the eh. Any error reporting should be done on the GNU side.

- Fariborz




More information about the cfe-dev mailing list