1 //===---------------------- catch_in_noexcept.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: c++98, c++03, libcxxabi-no-exceptions
11
12 #include <exception>
13 #include <stdlib.h>
14 #include <assert.h>
15
16 struct A {};
17
18 // Despite being marked as noexcept, this function must have an EHT entry that
19 // is not 'cantunwind', so that the unwinder can correctly deal with the throw.
f1()20 void f1() noexcept
21 {
22 try {
23 A a;
24 throw a;
25 assert(false);
26 } catch (...) {
27 assert(true);
28 return;
29 }
30 assert(false);
31 }
32
main()33 int main()
34 {
35 f1();
36 }
37