1 // RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s 2 3 int &f(); 4 5 // CHECK: @r = thread_local global i32* null 6 thread_local int &r = f(); 7 8 // CHECK: @_ZTH1r = alias void ()* @__tls_init 9 10 int &g() { return r; } 11 12 // CHECK: define {{.*}} @[[R_INIT:.*]]() 13 // CHECK: call dereferenceable({{[0-9]+}}) i32* @_Z1fv() 14 // CHECK: store i32* %{{.*}}, i32** @r, align 8 15 16 // CHECK-LABEL: define dereferenceable({{[0-9]+}}) i32* @_Z1gv() 17 // CHECK: call i32* @_ZTW1r() 18 // CHECK: ret i32* %{{.*}} 19 20 // CHECK: define weak_odr hidden i32* @_ZTW1r() { 21 // CHECK: call void @_ZTH1r() 22 // CHECK: load i32*, i32** @r, align 8 23 // CHECK: ret i32* %{{.*}} 24 25 // CHECK-LABEL: define internal void @__tls_init() 26 // CHECK: call void @[[R_INIT]]() 27