mirror of https://github.com/microsoft/clang.git
[CodeGen] Treat auto-generated __dso_handle symbol as HiddenVisibility
Fixes https://bugs.llvm.org/show_bug.cgi?id=31932 Based on a patch by Roland McGrath Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D29843 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@294978 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
186d5807d8
commit
ff18d06e36
|
@ -2162,7 +2162,9 @@ static void emitGlobalDtorWithCXAAtExit(CodeGenFunction &CGF,
|
|||
|
||||
// Create a variable that binds the atexit to this shared object.
|
||||
llvm::Constant *handle =
|
||||
CGF.CGM.CreateRuntimeVariable(CGF.Int8Ty, "__dso_handle");
|
||||
CGF.CGM.CreateRuntimeVariable(CGF.Int8Ty, "__dso_handle");
|
||||
auto *GV = cast<llvm::GlobalValue>(handle->stripPointerCasts());
|
||||
GV->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
|
||||
llvm::Value *args[] = {
|
||||
llvm::ConstantExpr::getBitCast(dtor, dtorTy),
|
||||
|
|
|
@ -15,7 +15,7 @@ struct C { void *field; };
|
|||
|
||||
struct D { ~D(); };
|
||||
|
||||
// CHECK: @__dso_handle = external global i8
|
||||
// CHECK: @__dso_handle = external hidden global i8
|
||||
// CHECK: @c = global %struct.C zeroinitializer, align 8
|
||||
|
||||
// PR6205: The casts should not require global initializers
|
||||
|
|
|
@ -176,7 +176,7 @@ struct S5 {
|
|||
// CHECK-TLS-DAG: [[ST_S4_ST:@.+]] = linkonce_odr thread_local global %struct.S4 zeroinitializer
|
||||
// CHECK-TLS-DAG: [[ST_S4_ST_GUARD:@_ZGVN2STI2S4E2stE]] = linkonce_odr thread_local global i64 0
|
||||
// CHECK-TLS-DAG: @__tls_guard = internal thread_local global i8 0
|
||||
// CHECK-TLS-DAG: @__dso_handle = external global i8
|
||||
// CHECK-TLS-DAG: @__dso_handle = external hidden global i8
|
||||
// CHECK-TLS-DAG: [[GS1_TLS_INIT:@_ZTHL3gs1]] = internal alias void (), void ()* @__tls_init
|
||||
// CHECK-TLS-DAG: [[ARR_X_TLS_INIT:@_ZTH5arr_x]] = alias void (), void ()* @__tls_init
|
||||
|
||||
|
|
Loading…
Reference in New Issue