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 Dionneint main () { 26c86011f5SLouis Dionne try { A a; throw 3; assert(false); } 27c86011f5SLouis Dionne catch (int) {} 28c86011f5SLouis Dionne } 29