From 26604d06b6fe10bb047a3620cf306be8648dcc20 Mon Sep 17 00:00:00 2001 From: Xiangling Liao Date: Fri, 29 May 2020 11:41:10 -0400 Subject: [AIX] Emit AvailableExternally Linkage on AIX Since on AIX, our strategy is to not use -u to suppress any undefined symbols, we need to emit .extern for the symbols with AvailableExternally linkage. Differential Revision: https://reviews.llvm.org/D80642 --- llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp') diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 586de4fd97f0..68df50f1a87a 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -1983,7 +1983,7 @@ TargetLoweringObjectFileXCOFF::getTargetSymbol(const GlobalValue *GV, // function entry point. We choose to always return a function descriptor // here. if (const GlobalObject *GO = dyn_cast(GV)) { - if (GO->isDeclaration()) + if (GO->isDeclarationForLinker()) return cast(getSectionForExternalReference(GO, TM)) ->getQualNameSymbol(); @@ -2011,7 +2011,7 @@ MCSection *TargetLoweringObjectFileXCOFF::getExplicitSectionGlobal( MCSection *TargetLoweringObjectFileXCOFF::getSectionForExternalReference( const GlobalObject *GO, const TargetMachine &TM) const { - assert(GO->isDeclaration() && + assert(GO->isDeclarationForLinker() && "Tried to get ER section for a defined global."); SmallString<128> Name; @@ -2133,6 +2133,7 @@ XCOFF::StorageClass TargetLoweringObjectFileXCOFF::getStorageClassForGlobal( return XCOFF::C_HIDEXT; case GlobalValue::ExternalLinkage: case GlobalValue::CommonLinkage: + case GlobalValue::AvailableExternallyLinkage: return XCOFF::C_EXT; case GlobalValue::ExternalWeakLinkage: case GlobalValue::LinkOnceAnyLinkage: @@ -2143,9 +2144,6 @@ XCOFF::StorageClass TargetLoweringObjectFileXCOFF::getStorageClassForGlobal( case GlobalValue::AppendingLinkage: report_fatal_error( "There is no mapping that implements AppendingLinkage for XCOFF."); - case GlobalValue::AvailableExternallyLinkage: - report_fatal_error("unhandled AvailableExternallyLinkage when mapping " - "linkage to StorageClass"); } llvm_unreachable("Unknown linkage type!"); } -- cgit v1.2.3