After some discussion, it was decided to use the Itanium ABI for thread_local on Darwin OS X platforms. This involved a couple of changes. First, we use "_tlv_atexit" instead of "__cxa_thread_atexit". Secondly, the global variables are marked with 'internal' linkage, because we want all access to be calls to the Itanium-specific entry point, which has normal linkage. <rdar://problem/13733006> llvm-svn: 180941
11 lines
226 B
C++
11 lines
226 B
C++
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8 -std=c++11 -S -emit-llvm %s -o - | FileCheck %s
|
|
|
|
// CHECK: @a = internal thread_local global
|
|
// CHECK: @_tlv_atexit({{.*}}@_ZN1AD1Ev
|
|
|
|
struct A {
|
|
~A();
|
|
};
|
|
|
|
thread_local A a;
|