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 void @"\01?caller@test1@@YAXXZ"(
15 // CHECK: call void @never_throws(
16 // CHECK: invoke void @"\01?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 void @"\01?caller@test2@@YAXXZ"(
30 // CHECK: invoke void @throws_int(
31 // CHECK: invoke void @"\01?may_throw@test2@@YAXXZ"(
32