CodeGen: Don't set hidden visibility on symbols with local linkage
llvm-svn: 208258
This commit is contained in:
parent
fd284c6ce1
commit
4434d361d0
|
@ -679,7 +679,10 @@ llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
|
|||
// Give the type_info object and name the formal visibility of the
|
||||
// type itself.
|
||||
llvm::GlobalValue::VisibilityTypes llvmVisibility;
|
||||
if (RTTIUniqueness == CGCXXABI::RUK_NonUniqueHidden)
|
||||
if (llvm::GlobalValue::isLocalLinkage(Linkage))
|
||||
// If the linkage is local, only default visibility makes sense.
|
||||
llvmVisibility = llvm::GlobalValue::DefaultVisibility;
|
||||
else if (RTTIUniqueness == CGCXXABI::RUK_NonUniqueHidden)
|
||||
llvmVisibility = llvm::GlobalValue::HiddenVisibility;
|
||||
else
|
||||
llvmVisibility = CodeGenModule::GetLLVMVisibility(Ty->getVisibility());
|
||||
|
|
|
@ -1586,7 +1586,8 @@ ItaniumCXXABI::getOrCreateThreadLocalWrapper(const VarDecl *VD,
|
|||
CGM.getLLVMLinkageVarDefinition(VD, /*isConstant=*/false)),
|
||||
WrapperName.str(), &CGM.getModule());
|
||||
// Always resolve references to the wrapper at link time.
|
||||
Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
if (!Wrapper->hasLocalLinkage())
|
||||
Wrapper->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
return Wrapper;
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ thread_local int anon_i{1};
|
|||
void set_anon_i() {
|
||||
anon_i = 2;
|
||||
}
|
||||
// CHECK-LABEL: define internal hidden i32* @_ZTWN12_GLOBAL__N_16anon_iE()
|
||||
// CHECK-LABEL: define internal i32* @_ZTWN12_GLOBAL__N_16anon_iE()
|
||||
|
||||
// CHECK: define {{.*}} @[[V_M_INIT:.*]]()
|
||||
// CHECK: load i8* bitcast (i64* @_ZGVN1VIiE1mE to i8*)
|
||||
|
@ -189,7 +189,7 @@ void set_anon_i() {
|
|||
// CHECK: declare extern_weak void @_ZTH1b()
|
||||
|
||||
|
||||
// CHECK-LABEL: define internal hidden i32* @_ZTWL1d()
|
||||
// CHECK-LABEL: define internal i32* @_ZTWL1d()
|
||||
// CHECK: call void @_ZTHL1d()
|
||||
// CHECK: ret i32* @_ZL1d
|
||||
|
||||
|
|
|
@ -1,8 +1,31 @@
|
|||
// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -fvisibility hidden -emit-llvm -o - | FileCheck -check-prefix=CHECK-WITH-HIDDEN %s
|
||||
// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-BOTH
|
||||
// RUN: %clang_cc1 %s -I%S -triple=x86_64-apple-darwin10 -fvisibility hidden -emit-llvm -o - | FileCheck -check-prefix=CHECK-WITH-HIDDEN -check-prefix=CHECK-BOTH %s
|
||||
|
||||
#include <typeinfo>
|
||||
|
||||
// CHECK-BOTH: _ZTSP1C = internal constant
|
||||
// CHECK-BOTH: _ZTS1C = internal constant
|
||||
// CHECK-BOTH: _ZTI1C = internal constant
|
||||
// CHECK-BOTH: _ZTIP1C = internal constant
|
||||
// CHECK-BOTH: _ZTSPP1C = internal constant
|
||||
// CHECK-BOTH: _ZTIPP1C = internal constant
|
||||
// CHECK-BOTH: _ZTSM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTIM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTSPM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTIPM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTSM1CS_ = internal constant
|
||||
// CHECK-BOTH: _ZTIM1CS_ = internal constant
|
||||
// CHECK-BOTH: _ZTSM1CPS_ = internal constant
|
||||
// CHECK-BOTH: _ZTIM1CPS_ = internal constant
|
||||
// CHECK-BOTH: _ZTSM1A1C = internal constant
|
||||
// CHECK: _ZTS1A = linkonce_odr constant
|
||||
// CHECK-WITH-HIDDEN: _ZTS1A = linkonce_odr hidden constant
|
||||
// CHECK: _ZTI1A = linkonce_odr constant
|
||||
// CHECK-WITH-HIDDEN: _ZTI1A = linkonce_odr hidden constant
|
||||
// CHECK-BOTH: _ZTIM1A1C = internal constant
|
||||
// CHECK-BOTH: _ZTSM1AP1C = internal constant
|
||||
// CHECK-BOTH: _ZTIM1AP1C = internal constant
|
||||
|
||||
// CHECK-WITH-HIDDEN: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSPK2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTS2T4 = linkonce_odr hidden constant
|
||||
|
@ -17,26 +40,6 @@
|
|||
// CHECK-WITH-HIDDEN: @_ZTSZ2t6vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIZ2t6vE1A = linkonce_odr hidden constant
|
||||
|
||||
// CHECK: _ZTSP1C = internal constant
|
||||
// CHECK: _ZTS1C = internal constant
|
||||
// CHECK: _ZTI1C = internal constant
|
||||
// CHECK: _ZTIP1C = internal constant
|
||||
// CHECK: _ZTSPP1C = internal constant
|
||||
// CHECK: _ZTIPP1C = internal constant
|
||||
// CHECK: _ZTSM1Ci = internal constant
|
||||
// CHECK: _ZTIM1Ci = internal constant
|
||||
// CHECK: _ZTSPM1Ci = internal constant
|
||||
// CHECK: _ZTIPM1Ci = internal constant
|
||||
// CHECK: _ZTSM1CS_ = internal constant
|
||||
// CHECK: _ZTIM1CS_ = internal constant
|
||||
// CHECK: _ZTSM1CPS_ = internal constant
|
||||
// CHECK: _ZTIM1CPS_ = internal constant
|
||||
// CHECK: _ZTSM1A1C = internal constant
|
||||
// CHECK: _ZTS1A = linkonce_odr constant
|
||||
// CHECK: _ZTI1A = linkonce_odr constant
|
||||
// CHECK: _ZTIM1A1C = internal constant
|
||||
// CHECK: _ZTSM1AP1C = internal constant
|
||||
// CHECK: _ZTIM1AP1C = internal constant
|
||||
// CHECK: _ZTSN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTIN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTSPN12_GLOBAL__N_11DE = internal constant
|
||||
|
|
Loading…
Reference in New Issue