150
|
1 //===---------------------- catch_in_noexcept.cpp--------------------------===//
|
|
2 //
|
|
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4 // See https://llvm.org/LICENSE.txt for license information.
|
|
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6 //
|
|
7 //===----------------------------------------------------------------------===//
|
|
8
|
173
|
9 // UNSUPPORTED: c++98, c++03
|
|
10 // UNSUPPORTED: no-exceptions
|
150
|
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.
|
|
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
|
|
33 int main()
|
|
34 {
|
|
35 f1();
|
|
36 }
|