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#include <cxxabi.h> 11#include <exception> 12#include <cassert> 13 14// namespace __cxxabiv1 { 15// extern bool __cxa_uncaught_exception () throw(); 16// extern unsigned int __cxa_uncaught_exceptions() throw(); 17// } 18 19struct A { 20 ~A() { assert( __cxxabiv1::__cxa_uncaught_exception()); } 21 }; 22 23struct B { 24 B(int cnt) : data_(cnt) {} 25 ~B() { assert( data_ == __cxxabiv1::__cxa_uncaught_exceptions()); } 26 int data_; 27 }; 28 29int main () 30{ 31 try { A a; throw 3; assert (false); } 32 catch (int) {} 33 34 try { B b(1); throw 3; assert (false); } 35 catch (int) {} 36} 37