1 | // RUN: %clang_cc1 -emit-llvm %s -o - -triple=i386-pc-win32 -fexceptions -fcxx-exceptions -fexternc-nounwind | FileCheck %s |
2 | |
3 | namespace test1 { |
4 | struct Cleanup { ~Cleanup(); }; |
5 | extern "C" void never_throws(); |
6 | void may_throw(); |
7 | |
8 | void caller() { |
9 | Cleanup x; |
10 | never_throws(); |
11 | may_throw(); |
12 | } |
13 | } |
14 | // CHECK-LABEL: define dso_local void @"?caller@test1@@YAXXZ"( |
15 | // CHECK: call void @never_throws( |
16 | // CHECK: invoke void @"?may_throw@test1@@YAXXZ"( |
17 | |
18 | namespace test2 { |
19 | struct Cleanup { ~Cleanup(); }; |
20 | extern "C" void throws_int() throw(int); |
21 | void may_throw(); |
22 | |
23 | void caller() { |
24 | Cleanup x; |
25 | throws_int(); |
26 | may_throw(); |
27 | } |
28 | } |
29 | // CHECK-LABEL: define dso_local void @"?caller@test2@@YAXXZ"( |
30 | // CHECK: invoke void @throws_int( |
31 | // CHECK: invoke void @"?may_throw@test2@@YAXXZ"( |
32 | |