1540d2a8bSDimitry Andric// -*- C++ -*-
2540d2a8bSDimitry Andric//===----------------------------------------------------------------------===//
3540d2a8bSDimitry Andric//
4540d2a8bSDimitry Andric//                     The LLVM Compiler Infrastructure
5540d2a8bSDimitry Andric//
6540d2a8bSDimitry Andric// This file is dual licensed under the MIT and the University of Illinois Open
7540d2a8bSDimitry Andric// Source Licenses. See LICENSE.TXT for details.
8540d2a8bSDimitry Andric//
9540d2a8bSDimitry Andric//===----------------------------------------------------------------------===//
10540d2a8bSDimitry Andric
11540d2a8bSDimitry Andric#ifndef _LIBCPPABI_VERSION
12540d2a8bSDimitry Andric#error this header can only be used with libc++abi
13540d2a8bSDimitry Andric#endif
14540d2a8bSDimitry Andric
15540d2a8bSDimitry Andricnamespace std {
16540d2a8bSDimitry Andric
17540d2a8bSDimitry Andricbool uncaught_exception() _NOEXCEPT { return uncaught_exceptions() > 0; }
18540d2a8bSDimitry Andric
19540d2a8bSDimitry Andricint uncaught_exceptions() _NOEXCEPT
20540d2a8bSDimitry Andric{
21*6ccc06f6SDimitry Andric# if _LIBCPPABI_VERSION > 1001
22540d2a8bSDimitry Andric    return __cxa_uncaught_exceptions();
23540d2a8bSDimitry Andric# else
24540d2a8bSDimitry Andric    return __cxa_uncaught_exception() ? 1 : 0;
25540d2a8bSDimitry Andric# endif
26540d2a8bSDimitry Andric}
27540d2a8bSDimitry Andric
28540d2a8bSDimitry Andric} // namespace std
29