blob: d7b9c4849dfb2d5dd4abeed144dfb845ee5bf4df [file] [log] [blame]
Jonathan Roelofs13584a62014-05-31 00:25:59 +00001//===---------------------- 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
Asiri Rathnayake4174e8b2016-05-31 12:01:32 +000010// UNSUPPORTED: c++98, c++03, libcxxabi-no-exceptions
Eric Fiselierb16496b2015-08-20 01:22:17 +000011
Jonathan Roelofs13584a62014-05-31 00:25:59 +000012#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()
34{
35 f1();
36}