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 Livoid 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 Livoid 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