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