[analyzer] Refactoring: Drop the 'GR' prefix.
[clang.git] / test / CodeGenCXX / static-init.cpp
blobdd9ed61434e21a14e0e82fe6b9cbb67ce4a65310
1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
3 // CHECK: @_ZZ1hvE1i = internal global i32 0, align 4
5 // CHECK: @_ZZN5test16getvarEiE3var = internal constant [4 x i32] [i32 1, i32 0, i32 2, i32 4], align 16
6 // CHECK: @_ZZ2h2vE1i = linkonce_odr global i32 0
7 // CHECK: @_ZGVZ2h2vE1i = linkonce_odr global i64 0
9 struct A {
10 A();
11 ~A();
14 void f() {
15 // CHECK: call i32 @__cxa_guard_acquire
16 // CHECK: call void @_ZN1AC1Ev
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 // CHECK: call void @__cxa_guard_release
19 static A a;
22 void g() {
23 // CHECK: call noalias i8* @_Znwm(i64 1)
24 // CHECK: call void @_ZN1AC1Ev(
25 static A& a = *new A;
28 int a();
29 void h() {
30 static const int i = a();
33 inline void h2() {
34 static int i = a();
37 void h3() {
38 h2();
41 // PR6980: this shouldn't crash
42 namespace test0 {
43 struct A { A(); };
44 __attribute__((noreturn)) int throw_exception();
46 void test() {
47 throw_exception();
48 static A r;
52 namespace test1 {
53 // CHECK: define internal i32 @_ZN5test16getvarEi(
54 static inline int getvar(int index) {
55 static const int var[] = { 1, 0, 2, 4 };
56 return var[index];
59 void test() { (void) getvar(2); }