From b98b1700efe7709e7bf7eaec25cfbfd9fb490357 Mon Sep 17 00:00:00 2001 From: jasonliu Date: Fri, 17 Jul 2020 18:40:02 +0000 Subject: [XCOFF] Enable symbol alias for AIX Summary: AIX assembly's .set directive is not usable for aliasing purpose. We need to use extra-label-at-defintion strategy to generate symbol aliasing on AIX. Reviewed By: DiggerLin, Xiangling_L Differential Revision: https://reviews.llvm.org/D83252 --- llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 18 +++++++++++++----- 1 file changed, 13 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 27bebe503ce6..653127782595 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -2125,9 +2125,11 @@ const MCExpr *TargetLoweringObjectFileXCOFF::lowerRelativeReference( report_fatal_error("XCOFF not yet implemented."); } -XCOFF::StorageClass TargetLoweringObjectFileXCOFF::getStorageClassForGlobal( - const GlobalObject *GO) { - switch (GO->getLinkage()) { +XCOFF::StorageClass +TargetLoweringObjectFileXCOFF::getStorageClassForGlobal(const GlobalValue *GV) { + assert(!isa(GV) && "GlobalIFunc is not supported on AIX."); + + switch (GV->getLinkage()) { case GlobalValue::InternalLinkage: case GlobalValue::PrivateLinkage: return XCOFF::C_HIDEXT; @@ -2149,10 +2151,16 @@ XCOFF::StorageClass TargetLoweringObjectFileXCOFF::getStorageClassForGlobal( } MCSymbol *TargetLoweringObjectFileXCOFF::getFunctionEntryPointSymbol( - const Function *F, const TargetMachine &TM) const { + const GlobalValue *Func, const TargetMachine &TM) const { + assert( + isa(Func) || + (isa(Func) && + isa_and_nonnull(cast(Func)->getBaseObject())) && + "Func must be a function or an alias which has a function as base " + "object."); SmallString<128> NameStr; NameStr.push_back('.'); - getNameWithPrefix(NameStr, F, TM); + getNameWithPrefix(NameStr, Func, TM); return getContext().getOrCreateSymbol(NameStr); } -- cgit v1.2.3