Summary: * Don't bother using a thread wrapper when the variable is known to have constant initialization. * Emit the thread wrapper as discardable-if-unused in TUs that don't contain a definition of the thread_local variable. * Don't emit the thread wrapper at all if the thread_local variable is unused and discardable; it will be emitted by all TUs that need it. Reviewers: rjmccall, jdoerfert Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D67429 llvm-svn: 371767
13 lines
340 B
C++
13 lines
340 B
C++
// RUN: %clang_cc1 -triple thumbv7--windows-itanium -fdeclspec -fms-compatibility -fms-compatibility-version=19.0 -emit-llvm -o - %s | FileCheck %s
|
|
|
|
void *g();
|
|
thread_local static void *c = g();
|
|
void f(void *p) {
|
|
c = p;
|
|
}
|
|
|
|
// CHECK-LABEL: @_Z1fPv(i8* %p)
|
|
// CHECK-NOT: call i8** @_ZTWL1c()
|
|
// CHECK: call arm_aapcs_vfpcc i8** @_ZTWL1c()
|
|
|