[cfe-commits] New files for libcxxabi

Howard Hinnant hhinnant at apple.com
Wed Jun 8 09:17:54 PDT 2011


On Jun 7, 2011, at 1:15 PM, Marshall Clow wrote:

> Implements the new [] and delete [] functionality.
> With tests.
> 
> Comments please.
> I'm not 100% sure that the exception handling is correct - so that's a good place to look ;-)

This is looking pretty good to me.  I have one trivial comment (1), and one non-trivial comment (2) that I'd like as many eyes as possible on.

Thanks Marshall!


1.  test_vector.cpp needs a standard LLVM/banner header.

2.  In the catch clause of __cxa_vec_dtor:

        catch(...) {
        //  if we've caught an exception while doing stack unwinding, then
        //  there's really nothing we can do.
            if ( std::uncaught_exception ())
                std::terminate ();
        //  otherwise, attempt to destruct the rest of the array and rethrow
            __cxa_vec_cleanup ( array_address, idx, element_size, destructor );
            throw ;         
        }

I'm thinking that even if we're in an unwind, we should still attempt __cxa_vec_cleanup:

        catch(...) {
        //  attempt to destruct the rest of the array and rethrow
            __cxa_vec_cleanup ( array_address, idx, element_size, destructor );
            throw ;         
        }

However this is admittedly confusing territory.  I ran test_vector.cpp both ways, and it passed.  Comments?

Howard




More information about the cfe-commits mailing list