forked from OSchip/llvm-project
Added [[noreturn]] attribute everywhere it should be
llvm-svn: 132125
This commit is contained in:
parent
6dc03b36d7
commit
400b244339
|
@ -116,8 +116,10 @@ typedef __char32_t char32_t;
|
||||||
#define _LIBCPP_HAS_NO_DECLTYPE
|
#define _LIBCPP_HAS_NO_DECLTYPE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !(__has_feature(cxx_attributes))
|
#if __has_feature(cxx_attributes)
|
||||||
#define _LIBCPP_HAS_NO_ATTRIBUTES
|
# define _ATTRIBUTE(x) [[x]]
|
||||||
|
#else
|
||||||
|
# define _ATTRIBUTE(x) __attribute__ ((x))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
|
||||||
|
|
|
@ -105,19 +105,19 @@ public:
|
||||||
typedef void (*unexpected_handler)();
|
typedef void (*unexpected_handler)();
|
||||||
_LIBCPP_VISIBLE unexpected_handler set_unexpected(unexpected_handler) throw();
|
_LIBCPP_VISIBLE unexpected_handler set_unexpected(unexpected_handler) throw();
|
||||||
_LIBCPP_VISIBLE unexpected_handler get_unexpected() throw();
|
_LIBCPP_VISIBLE unexpected_handler get_unexpected() throw();
|
||||||
_LIBCPP_VISIBLE void unexpected();
|
_ATTRIBUTE(noreturn) _LIBCPP_VISIBLE void unexpected();
|
||||||
|
|
||||||
typedef void (*terminate_handler)();
|
typedef void (*terminate_handler)();
|
||||||
_LIBCPP_VISIBLE terminate_handler set_terminate(terminate_handler) throw();
|
_LIBCPP_VISIBLE terminate_handler set_terminate(terminate_handler) throw();
|
||||||
_LIBCPP_VISIBLE terminate_handler get_terminate() throw();
|
_LIBCPP_VISIBLE terminate_handler get_terminate() throw();
|
||||||
_LIBCPP_VISIBLE void terminate() __attribute__((__noreturn__));
|
_ATTRIBUTE(noreturn) _LIBCPP_VISIBLE void terminate() _NOEXCEPT;
|
||||||
|
|
||||||
_LIBCPP_VISIBLE bool uncaught_exception() throw();
|
_LIBCPP_VISIBLE bool uncaught_exception() throw();
|
||||||
|
|
||||||
class exception_ptr;
|
class exception_ptr;
|
||||||
|
|
||||||
exception_ptr current_exception();
|
exception_ptr current_exception();
|
||||||
void rethrow_exception(exception_ptr); // noreturn
|
_ATTRIBUTE(noreturn) void rethrow_exception(exception_ptr);
|
||||||
|
|
||||||
class _LIBCPP_VISIBLE exception_ptr
|
class _LIBCPP_VISIBLE exception_ptr
|
||||||
{
|
{
|
||||||
|
@ -141,7 +141,7 @@ public:
|
||||||
{return !(__x == __y);}
|
{return !(__x == __y);}
|
||||||
|
|
||||||
friend exception_ptr current_exception();
|
friend exception_ptr current_exception();
|
||||||
friend void rethrow_exception(exception_ptr); // noreturn
|
_ATTRIBUTE(noreturn) friend void rethrow_exception(exception_ptr);
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class _E>
|
template<class _E>
|
||||||
|
@ -172,7 +172,7 @@ public:
|
||||||
virtual ~nested_exception();
|
virtual ~nested_exception();
|
||||||
|
|
||||||
// access functions
|
// access functions
|
||||||
void rethrow_nested /*[[noreturn]]*/ () const;
|
_ATTRIBUTE(noreturn) void rethrow_nested() const;
|
||||||
_LIBCPP_INLINE_VISIBILITY exception_ptr nested_ptr() const {return __ptr_;}
|
_LIBCPP_INLINE_VISIBILITY exception_ptr nested_ptr() const {return __ptr_;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -185,9 +185,10 @@ struct __nested
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class _Tp>
|
template <class _Tp>
|
||||||
|
_ATTRIBUTE(noreturn)
|
||||||
void
|
void
|
||||||
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
||||||
throw_with_nested /*[[noreturn]]*/ (_Tp&& __t, typename enable_if<
|
throw_with_nested(_Tp&& __t, typename enable_if<
|
||||||
is_class<typename remove_reference<_Tp>::type>::value &&
|
is_class<typename remove_reference<_Tp>::type>::value &&
|
||||||
!is_base_of<nested_exception, typename remove_reference<_Tp>::type>::value
|
!is_base_of<nested_exception, typename remove_reference<_Tp>::type>::value
|
||||||
>::type* = 0)
|
>::type* = 0)
|
||||||
|
@ -203,9 +204,10 @@ throw_with_nested (_Tp& __t, typename enable_if<
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class _Tp>
|
template <class _Tp>
|
||||||
|
_ATTRIBUTE(noreturn)
|
||||||
void
|
void
|
||||||
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
#ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
|
||||||
throw_with_nested /*[[noreturn]]*/ (_Tp&& __t, typename enable_if<
|
throw_with_nested(_Tp&& __t, typename enable_if<
|
||||||
!is_class<typename remove_reference<_Tp>::type>::value ||
|
!is_class<typename remove_reference<_Tp>::type>::value ||
|
||||||
is_base_of<nested_exception, typename remove_reference<_Tp>::type>::value
|
is_base_of<nested_exception, typename remove_reference<_Tp>::type>::value
|
||||||
>::type* = 0)
|
>::type* = 0)
|
||||||
|
|
|
@ -35,6 +35,7 @@ std::get_unexpected() throw()
|
||||||
return __sync_fetch_and_add(&__unexpected_handler, (std::unexpected_handler)0);
|
return __sync_fetch_and_add(&__unexpected_handler, (std::unexpected_handler)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ATTRIBUTE(noreturn)
|
||||||
void
|
void
|
||||||
std::unexpected()
|
std::unexpected()
|
||||||
{
|
{
|
||||||
|
@ -56,7 +57,7 @@ std::get_terminate() throw()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
std::terminate()
|
std::terminate() _NOEXCEPT
|
||||||
{
|
{
|
||||||
#ifndef _LIBCPP_NO_EXCEPTIONS
|
#ifndef _LIBCPP_NO_EXCEPTIONS
|
||||||
try
|
try
|
||||||
|
@ -156,8 +157,9 @@ nested_exception::~nested_exception()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ATTRIBUTE(noreturn)
|
||||||
void
|
void
|
||||||
nested_exception::rethrow_nested /*[[noreturn]]*/ () const
|
nested_exception::rethrow_nested() const
|
||||||
{
|
{
|
||||||
if (__ptr_ == nullptr)
|
if (__ptr_ == nullptr)
|
||||||
terminate();
|
terminate();
|
||||||
|
|
Loading…
Reference in New Issue