diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-04-19 16:42:07 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-04-19 16:42:07 +0000 |
commit | 2fd1d7aee3cc168e0d9b78ca53fb2c1fc6684705 (patch) | |
tree | 62e445b7ece6c358846e067997a9d3ac2cb084c0 /clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp | |
parent | 6ac9d13e610dc9005660594ee4325483d2c97fb4 (diff) | |
download | bcm5719-llvm-2fd1d7aee3cc168e0d9b78ca53fb2c1fc6684705.tar.gz bcm5719-llvm-2fd1d7aee3cc168e0d9b78ca53fb2c1fc6684705.zip |
Implement CodeGen for C++11 thread_local, following the Itanium ABI specification as discussed on cxx-abi-dev.
llvm-svn: 179858
Diffstat (limited to 'clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp b/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp new file mode 100644 index 00000000000..2ea9acda481 --- /dev/null +++ b/clang/test/CodeGenCXX/cxx11-thread-local-reference.cpp @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s + +int &f(); + +// CHECK: @r = thread_local global i32* null +thread_local int &r = f(); + +// CHECK: @_ZTH1r = alias void ()* @__tls_init + +int &g() { return r; } + +// CHECK: define {{.*}} @[[R_INIT:.*]]() +// CHECK: call i32* @_Z1fv() +// CHECK: store i32* %{{.*}}, i32** @r, align 8 + +// CHECK: define i32* @_Z1gv() +// CHECK: call i32* @_ZTW1r() +// CHECK: ret i32* %{{.*}} + +// CHECK: define weak_odr hidden i32* @_ZTW1r() { +// CHECK: call void @_ZTH1r() +// CHECK: load i32** @r, align 8 +// CHECK: ret i32* %{{.*}} + +// CHECK: define internal void @__tls_init() +// CHECK: call void @[[R_INIT]]() |