diff options
author | Xiangling Liao <Xiangling.Liao@ibm.com> | 2020-05-29 11:41:10 -0400 |
---|---|---|
committer | Xiangling Liao <Xiangling.Liao@ibm.com> | 2020-05-29 13:12:59 -0400 |
commit | 26604d06b6fe10bb047a3620cf306be8648dcc20 (patch) | |
tree | 28f0948897aa5699c034683d0cb573c5f1ddf5b2 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | |
parent | b82a95f8bc91976a9ba663f8fa2edf15708b5c0f (diff) | |
download | llvm-26604d06b6fe10bb047a3620cf306be8648dcc20.zip llvm-26604d06b6fe10bb047a3620cf306be8648dcc20.tar.gz llvm-26604d06b6fe10bb047a3620cf306be8648dcc20.tar.bz2 |
[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
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 586de4f..68df50f 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<GlobalObject>(GV)) { - if (GO->isDeclaration()) + if (GO->isDeclarationForLinker()) return cast<MCSectionXCOFF>(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!"); } |