1*eb8650a7SLouis Dionne //===----------------------------------------------------------------------===//
2c86011f5SLouis Dionne //
3c86011f5SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4c86011f5SLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
5c86011f5SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6c86011f5SLouis Dionne //
7c86011f5SLouis Dionne //===----------------------------------------------------------------------===//
8c86011f5SLouis Dionne 
98c61114cSLouis Dionne // UNSUPPORTED: no-exceptions
10c86011f5SLouis Dionne 
11c86011f5SLouis Dionne // This tests that libc++abi still provides __cxa_uncaught_exception() for
12c86011f5SLouis Dionne // ABI compatibility, even though the Standard doesn't require it to.
13c86011f5SLouis Dionne 
14c86011f5SLouis Dionne #include <cxxabi.h>
15c86011f5SLouis Dionne #include <cassert>
16c86011f5SLouis Dionne 
17c86011f5SLouis Dionne // namespace __cxxabiv1 {
18c86011f5SLouis Dionne //      extern bool __cxa_uncaught_exception () throw();
19c86011f5SLouis Dionne // }
20c86011f5SLouis Dionne 
21c86011f5SLouis Dionne struct A {
~AA22c86011f5SLouis Dionne     ~A() { assert( __cxxabiv1::__cxa_uncaught_exception()); }
23c86011f5SLouis Dionne };
24c86011f5SLouis Dionne 
main()25c86011f5SLouis Dionne int main () {
26c86011f5SLouis Dionne     try { A a; throw 3; assert(false); }
27c86011f5SLouis Dionne     catch (int) {}
28c86011f5SLouis Dionne }
29