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
9// UNSUPPORTED: c++03
10// UNSUPPORTED: no-exceptions
11
12#include <exception>
13#include <stdlib.h>
14#include <assert.h>
15
16struct 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.
20void 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
33int main(int, char**)
34{
35 f1();
36
37 return 0;
38}
39

source code of libcxxabi/test/catch_in_noexcept.pass.cpp