1//===------------------- uncaught_exceptions.pass.cpp ---------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is dual licensed under the MIT and the University of Illinois Open 6// Source Licenses. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10// UNSUPPORTED: libcxxabi-no-exceptions 11 12#include <cxxabi.h> 13#include <exception> 14#include <cassert> 15 16// namespace __cxxabiv1 { 17// extern bool __cxa_uncaught_exception () throw(); 18// extern unsigned int __cxa_uncaught_exceptions() throw(); 19// } 20 21struct A { 22 ~A() { assert( __cxxabiv1::__cxa_uncaught_exception()); } 23 }; 24 25struct B { 26 B(unsigned cnt) : data_(cnt) {} 27 ~B() { assert( data_ == __cxxabiv1::__cxa_uncaught_exceptions()); } 28 unsigned data_; 29 }; 30 31int main () 32{ 33 try { A a; throw 3; assert (false); } 34 catch (int) {} 35 36 try { B b(1); throw 3; assert (false); } 37 catch (int) {} 38} 39