From 5cf217fff1128005fb24e95ffa0b72c844af3d37 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sun, 19 Apr 2009 00:18:21 +0200 Subject: [PATCH] * eh_type.cc (__cxa_current_exception_type) Mark throw(). * unwind-cxx.h (__cxa_get_globals, __cxa_get_globals_fast): Mark const. (__cxa_get_exception_ptr): Mark pure. (__cxa_bad_cast, __cxa_bad_typeid): Mark noreturn (__terminate): Makr throw (). * exception (terminate): Mark throw(). (uncaught_exception): Mark pure. * eh_ptr.cc (_M_safe_bool_dummy): Mark throw(). * guard.cc (__cxa_guard_abort, __cxa_guard_release): Mark throw(). * eh_terminate.cc (__terminate, terminate): Mark throw(). * vec.cc (__cxa_vec_cleanup): Mark throw(). * cxxabi.h (__cxa_vec_cleanup, __cxa_guard_release, __cxa_guard_abort): Mark throw (). (__cxa_pure_virtual): Mark noreturn. (__cxa_current_exception_type): Mark throw and pure. * exception_ptr.h (operator ==, !=, _M_get, !, ==, __cxa_exception_type): Mark pure. (_M_safe_bool_dummy): Mark pure and const. From-SVN: r146331 --- libstdc++-v3/ChangeLog | 20 ++++++++++++++++++++ libstdc++-v3/libsupc++/cxxabi.h | 12 ++++++------ libstdc++-v3/libsupc++/eh_ptr.cc | 2 +- libstdc++-v3/libsupc++/eh_terminate.cc | 4 ++-- libstdc++-v3/libsupc++/eh_type.cc | 2 +- libstdc++-v3/libsupc++/exception | 4 ++-- libstdc++-v3/libsupc++/exception_ptr.h | 14 +++++++------- libstdc++-v3/libsupc++/guard.cc | 4 ++-- libstdc++-v3/libsupc++/unwind-cxx.h | 12 ++++++------ libstdc++-v3/libsupc++/vec.cc | 2 +- 10 files changed, 48 insertions(+), 28 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8b0d0e03beaf..1e8966131837 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,23 @@ +2009-04-18 Jan Hubicka + + * eh_type.cc (__cxa_current_exception_type) Mark throw(). + * unwind-cxx.h (__cxa_get_globals, __cxa_get_globals_fast): Mark const. + (__cxa_get_exception_ptr): Mark pure. + (__cxa_bad_cast, __cxa_bad_typeid): Mark noreturn + (__terminate): Makr throw (). + * exception (terminate): Mark throw(). + (uncaught_exception): Mark pure. + * eh_ptr.cc (_M_safe_bool_dummy): Mark throw(). + * guard.cc (__cxa_guard_abort, __cxa_guard_release): Mark throw(). + * eh_terminate.cc (__terminate, terminate): Mark throw(). + * vec.cc (__cxa_vec_cleanup): Mark throw(). + * cxxabi.h (__cxa_vec_cleanup, __cxa_guard_release, __cxa_guard_abort): Mark throw (). + (__cxa_pure_virtual): Mark noreturn. + (__cxa_current_exception_type): Mark throw and pure. + * exception_ptr.h (operator ==, !=, _M_get, !, ==, + __cxa_exception_type): Mark pure. + (_M_safe_bool_dummy): Mark pure and const. + 2009-04-18 Jan Hubicka * src/pool_allocator.cc (_M_get_free_list, _M_get_mutex): Mark throw () diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h index bfdd8e5896d5..834e434e1e15 100644 --- a/libstdc++-v3/libsupc++/cxxabi.h +++ b/libstdc++-v3/libsupc++/cxxabi.h @@ -100,7 +100,7 @@ namespace __cxxabiv1 void __cxa_vec_cleanup(void* __array_address, size_t __element_count, - size_t __element_size, __cxa_cdtor_type destructor); + size_t __element_size, __cxa_cdtor_type destructor) _GLIBCXX_NOTHROW; // Destruct and release array. void @@ -121,14 +121,14 @@ namespace __cxxabiv1 __cxa_guard_acquire(__guard*); void - __cxa_guard_release(__guard*); + __cxa_guard_release(__guard*) _GLIBCXX_NOTHROW; void - __cxa_guard_abort(__guard*); + __cxa_guard_abort(__guard*) _GLIBCXX_NOTHROW; // Pure virtual functions. void - __cxa_pure_virtual(void); + __cxa_pure_virtual(void) __attribute__ ((__noreturn__)); // Exception handling. void @@ -567,13 +567,13 @@ namespace __cxxabiv1 // Returns the type_info for the currently handled exception [15.3/8], or // null if there is none. extern "C" std::type_info* - __cxa_current_exception_type(); + __cxa_current_exception_type() _GLIBCXX_NOTHROW __attribute__ ((__pure__)); // A magic placeholder class that can be caught by reference // to recognize foreign exceptions. class __foreign_exception { - virtual ~__foreign_exception() throw(); + virtual ~__foreign_exception() _GLIBCXX_NOTHROW; virtual void __pure_dummy() = 0; // prevent catch by value }; diff --git a/libstdc++-v3/libsupc++/eh_ptr.cc b/libstdc++-v3/libsupc++/eh_ptr.cc index 769273f3a619..bbe5f8f13f98 100644 --- a/libstdc++-v3/libsupc++/eh_ptr.cc +++ b/libstdc++-v3/libsupc++/eh_ptr.cc @@ -113,7 +113,7 @@ std::__exception_ptr::exception_ptr::_M_get() const throw() void -std::__exception_ptr::exception_ptr::_M_safe_bool_dummy() +std::__exception_ptr::exception_ptr::_M_safe_bool_dummy() throw () { } diff --git a/libstdc++-v3/libsupc++/eh_terminate.cc b/libstdc++-v3/libsupc++/eh_terminate.cc index d0c8461006f0..e03c037412a0 100644 --- a/libstdc++-v3/libsupc++/eh_terminate.cc +++ b/libstdc++-v3/libsupc++/eh_terminate.cc @@ -32,7 +32,7 @@ using namespace __cxxabiv1; void -__cxxabiv1::__terminate (std::terminate_handler handler) +__cxxabiv1::__terminate (std::terminate_handler handler) throw () { try { handler (); @@ -43,7 +43,7 @@ __cxxabiv1::__terminate (std::terminate_handler handler) } void -std::terminate () +std::terminate () throw() { __terminate (__terminate_handler); } diff --git a/libstdc++-v3/libsupc++/eh_type.cc b/libstdc++-v3/libsupc++/eh_type.cc index f0277d401d7f..bb8be0b752e1 100644 --- a/libstdc++-v3/libsupc++/eh_type.cc +++ b/libstdc++-v3/libsupc++/eh_type.cc @@ -33,7 +33,7 @@ namespace __cxxabiv1 // Returns the type_info for the currently handled exception [15.3/8], or // null if there is none. extern "C" -std::type_info *__cxa_current_exception_type () +std::type_info *__cxa_current_exception_type () throw() { __cxa_eh_globals *globals = __cxa_get_globals (); __cxa_exception *header = globals->caughtExceptions; diff --git a/libstdc++-v3/libsupc++/exception b/libstdc++-v3/libsupc++/exception index 7fa929b6adf8..c8b334fe9457 100644 --- a/libstdc++-v3/libsupc++/exception +++ b/libstdc++-v3/libsupc++/exception @@ -93,7 +93,7 @@ namespace std /** The runtime will call this function if %exception handling must be * abandoned for any reason. It can also be called by the user. */ - void terminate() __attribute__ ((__noreturn__)); + void terminate() throw() __attribute__ ((__noreturn__)); /// Takes a new handler function as an argument, returns the old function. unexpected_handler set_unexpected(unexpected_handler) throw(); @@ -112,7 +112,7 @@ namespace std * 2: "When @c uncaught_exception() is true, throwing an %exception can * result in a call of @c terminate() (15.5.1)." */ - bool uncaught_exception() throw(); + bool uncaught_exception() throw() __attribute__ ((__pure__)); // @} group exceptions } // namespace std diff --git a/libstdc++-v3/libsupc++/exception_ptr.h b/libstdc++-v3/libsupc++/exception_ptr.h index 3c44ff113fbf..56997221f257 100644 --- a/libstdc++-v3/libsupc++/exception_ptr.h +++ b/libstdc++-v3/libsupc++/exception_ptr.h @@ -77,10 +77,10 @@ namespace std namespace __exception_ptr { bool - operator==(const exception_ptr&, const exception_ptr&) throw(); + operator==(const exception_ptr&, const exception_ptr&) throw() __attribute__ ((__pure__)); bool - operator!=(const exception_ptr&, const exception_ptr&) throw(); + operator!=(const exception_ptr&, const exception_ptr&) throw() __attribute__ ((__pure__)); class exception_ptr { @@ -91,9 +91,9 @@ namespace std void _M_addref() throw(); void _M_release() throw(); - void *_M_get() const throw(); + void *_M_get() const throw() __attribute__ ((__pure__)); - void _M_safe_bool_dummy(); + void _M_safe_bool_dummy() throw() __attribute__ ((__const__)); friend exception_ptr std::current_exception() throw(); friend void std::rethrow_exception(exception_ptr); @@ -141,14 +141,14 @@ namespace std } #endif - bool operator!() const throw(); + bool operator!() const throw() __attribute__ ((__pure__)); operator __safe_bool() const throw(); friend bool - operator==(const exception_ptr&, const exception_ptr&) throw(); + operator==(const exception_ptr&, const exception_ptr&) throw() __attribute__ ((__pure__)); const type_info* - __cxa_exception_type() const throw(); + __cxa_exception_type() const throw() __attribute__ ((__pure__)); }; } // namespace __exception_ptr diff --git a/libstdc++-v3/libsupc++/guard.cc b/libstdc++-v3/libsupc++/guard.cc index 10f909215c10..dace046e5442 100644 --- a/libstdc++-v3/libsupc++/guard.cc +++ b/libstdc++-v3/libsupc++/guard.cc @@ -330,7 +330,7 @@ namespace __cxxabiv1 } extern "C" - void __cxa_guard_abort (__guard *g) + void __cxa_guard_abort (__guard *g) throw () { #ifdef _GLIBCXX_USE_FUTEX // If __sync_* and futex syscall are supported, don't use any global @@ -369,7 +369,7 @@ namespace __cxxabiv1 } extern "C" - void __cxa_guard_release (__guard *g) + void __cxa_guard_release (__guard *g) throw () { #ifdef _GLIBCXX_USE_FUTEX // If __sync_* and futex syscall are supported, don't use any global diff --git a/libstdc++-v3/libsupc++/unwind-cxx.h b/libstdc++-v3/libsupc++/unwind-cxx.h index 984dd677342e..e4918b211bfb 100644 --- a/libstdc++-v3/libsupc++/unwind-cxx.h +++ b/libstdc++-v3/libsupc++/unwind-cxx.h @@ -148,8 +148,8 @@ struct __cxa_eh_globals // either of the following functions. The "fast" version assumes at least // one prior call of __cxa_get_globals has been made from the current // thread, so no initialization is necessary. -extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); -extern "C" __cxa_eh_globals *__cxa_get_globals_fast () throw(); +extern "C" __cxa_eh_globals *__cxa_get_globals () throw() __attribute__ ((__const__)); +extern "C" __cxa_eh_globals *__cxa_get_globals_fast () throw() __attribute__ ((__const__)); // Allocate memory for the primary exception plus the thrown object. extern "C" void *__cxa_allocate_exception(std::size_t thrown_size) throw(); @@ -172,14 +172,14 @@ extern "C" void __cxa_throw (void *thrown_exception, __attribute__((noreturn)); // Used to implement exception handlers. -extern "C" void *__cxa_get_exception_ptr (void *) throw(); +extern "C" void *__cxa_get_exception_ptr (void *) throw() __attribute__ ((__pure__)); extern "C" void *__cxa_begin_catch (void *) throw(); extern "C" void __cxa_end_catch (); extern "C" void __cxa_rethrow () __attribute__((noreturn)); // These facilitate code generation for recurring situations. -extern "C" void __cxa_bad_cast (); -extern "C" void __cxa_bad_typeid (); +extern "C" void __cxa_bad_cast () __attribute__((__noreturn__)); +extern "C" void __cxa_bad_typeid () __attribute__((__noreturn__)); // @@@ These are not directly specified by the IA-64 C++ ABI. @@ -204,7 +204,7 @@ extern "C" void __cxa_end_cleanup (void); // Invokes given handler, dying appropriately if the user handler was // so inconsiderate as to return. -extern void __terminate(std::terminate_handler) __attribute__((noreturn)); +extern void __terminate(std::terminate_handler) throw () __attribute__((__noreturn__)); extern void __unexpected(std::unexpected_handler) __attribute__((noreturn)); // The current installed user handlers. diff --git a/libstdc++-v3/libsupc++/vec.cc b/libstdc++-v3/libsupc++/vec.cc index 886e6fc99c84..f1322896d0be 100644 --- a/libstdc++-v3/libsupc++/vec.cc +++ b/libstdc++-v3/libsupc++/vec.cc @@ -248,7 +248,7 @@ namespace __cxxabiv1 __cxa_vec_cleanup(void *array_address, std::size_t element_count, std::size_t element_size, - __cxa_cdtor_type destructor) + __cxa_cdtor_type destructor) throw() { if (destructor) { -- 2.47.2