1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s 2 3 // CHECK: @_ZZ1hvE1i = internal global i32 0, align 4 4 5 // CHECK: @_ZZ2h2vE1i = weak global i32 0 6 // CHECK: @_ZGVZ2h2vE1i = weak global i64 0 7 8 struct A { 9 A(); 10 ~A(); 11 }; 12 13 void f() { 14 // CHECK: call i32 @__cxa_guard_acquire 15 // CHECK: call void @_ZN1AC1Ev 16 // CHECK: call void @__cxa_guard_release 17 // CHECK: call i32 @__cxa_atexit(void (i8*)* bitcast (void (%struct.A*)* @_ZN1AD1Ev to void (i8*)*), i8* getelementptr inbounds (%struct.A* @_ZZ1fvE1a, i32 0, i32 0), i8* bitcast (i8** @__dso_handle to i8*)) 18 static A a; 19 } 20 21 void g() { 22 // CHECK: call noalias i8* @_Znwm(i64 1) 23 // CHECK: call void @_ZN1AC1Ev( 24 static A& a = *new A; 25 } 26 27 int a(); 28 void h() { 29 static const int i = a(); 30 } 31 32 inline void h2() { 33 static int i = a(); 34 } 35 36 void h3() { 37 h2(); 38 } 39 40 // PR6980: this shouldn't crash 41 namespace test0 { 42 struct A { A(); }; 43 __attribute__((noreturn)) int throw_exception(); 44 45 void test() { 46 throw_exception(); 47 static A r; 48 } 49 } 50