1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -o - -fcxx-exceptions -fexceptions -triple x86_64-apple-darwin10 %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li struct X { 4*67e74705SXin Li X(); 5*67e74705SXin Li ~X(); 6*67e74705SXin Li }; 7*67e74705SXin Li 8*67e74705SXin Li struct Y { }; 9*67e74705SXin Li 10*67e74705SXin Li // CHECK-LABEL: define void @_Z1fv 11*67e74705SXin Li // CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) f()12*67e74705SXin Livoid f() { 13*67e74705SXin Li // CHECK: call i32 @__cxa_guard_acquire(i64* @_ZGVZ1fvE1x) 14*67e74705SXin Li // CHECK: invoke void @_ZN1XC1Ev 15*67e74705SXin Li // CHECK: call i32 @__cxa_atexit 16*67e74705SXin Li // CHECK-NEXT: call void @__cxa_guard_release(i64* @_ZGVZ1fvE1x) 17*67e74705SXin Li // CHECK: br 18*67e74705SXin Li static X x; 19*67e74705SXin Li 20*67e74705SXin Li // CHECK: call i8* @__cxa_allocate_exception 21*67e74705SXin Li // CHECK: call void @__cxa_throw 22*67e74705SXin Li throw Y(); 23*67e74705SXin Li 24*67e74705SXin Li // Finally, the landing pad. 25*67e74705SXin Li // CHECK: landingpad { i8*, i32 } 26*67e74705SXin Li // CHECK: cleanup 27*67e74705SXin Li // CHECK: call void @__cxa_guard_abort(i64* @_ZGVZ1fvE1x) 28*67e74705SXin Li // CHECK: resume { i8*, i32 } 29*67e74705SXin Li } 30