Summary: The AIX linker will produce errors on unresolved weak symbols. Change the generated code to not check for the initialization function but just call it and ensure that it always exists. Also, the AIX atexit routine has a different name (and signature) so call it correctly. Update the lit tests to test on AIX appropriately. Author: Jamie Schmeiser <schmeise@ca.ibm.com> Reviewed By: hubert.reinterpretcast (Hubert Tong) Differential Revision: https://reviews.llvm.org/D104420
19 lines
1019 B
C++
19 lines
1019 B
C++
// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck --check-prefix=LINUX_AIX %s
|
|
// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple powerpc64-unknown-aix-xcoff | FileCheck --check-prefix=LINUX_AIX %s
|
|
// RUN: %clang_cc1 -std=c++11 -emit-llvm %s -o - -triple x86_64-apple-darwin12 | FileCheck --check-prefix=DARWIN %s
|
|
|
|
// Regression test for PR40327
|
|
|
|
// LINUX_AIX: @default_tls ={{.*}} thread_local global i32
|
|
// LINUX_AIX: @hidden_tls ={{( hidden)?}} thread_local global i32
|
|
// LINUX_AIX: define weak_odr hidden i32* @_ZTW11default_tls()
|
|
// LINUX_AIX: define weak_odr hidden i32* @_ZTW10hidden_tls()
|
|
//
|
|
// DARWIN: @default_tls = internal thread_local global i32
|
|
// DARWIN: @hidden_tls = internal thread_local global i32
|
|
// DARWIN: define cxx_fast_tlscc i32* @_ZTW11default_tls()
|
|
// DARWIN: define hidden cxx_fast_tlscc i32* @_ZTW10hidden_tls()
|
|
|
|
__attribute__((visibility("default"))) thread_local int default_tls;
|
|
__attribute__((visibility("hidden"))) thread_local int hidden_tls;
|