Author: Fangrui Song Date: 2020-12-20T21:26:36-08:00 New Revision: 7b9890e17e9e9be4d14845f3bfe52e1a06ab032a
URL: https://github.com/llvm/llvm-project/commit/7b9890e17e9e9be4d14845f3bfe52e1a06ab032a DIFF: https://github.com/llvm/llvm-project/commit/7b9890e17e9e9be4d14845f3bfe52e1a06ab032a.diff LOG: [MC][ELF] Remove unneeded MCSymbol::setExternal calls ELF code uses symbol bindings and does not call isExternal(). Added: Modified: llvm/include/llvm/MC/MCSymbol.h llvm/lib/MC/MCELFStreamer.cpp llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp Removed: ################################################################################ diff --git a/llvm/include/llvm/MC/MCSymbol.h b/llvm/include/llvm/MC/MCSymbol.h index a89de5dfa22f..a83781f5c586 100644 --- a/llvm/include/llvm/MC/MCSymbol.h +++ b/llvm/include/llvm/MC/MCSymbol.h @@ -94,7 +94,8 @@ class MCSymbol { mutable unsigned IsRegistered : 1; - /// This symbol is visible outside this translation unit. + /// True if this symbol is visible outside this translation unit. Note: ELF + /// uses binding instead of this bit. mutable unsigned IsExternal : 1; /// This symbol is private extern. diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 17beca1c3556..db45aef7d506 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -221,7 +221,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { case MCSA_ELF_TypeGnuUniqueObject: Symbol->setType(CombineSymbolTypes(Symbol->getType(), ELF::STT_OBJECT)); Symbol->setBinding(ELF::STB_GNU_UNIQUE); - Symbol->setExternal(true); break; case MCSA_Global: @@ -233,7 +232,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { Symbol->getName() + " changed binding to STB_GLOBAL"); Symbol->setBinding(ELF::STB_GLOBAL); - Symbol->setExternal(true); break; case MCSA_WeakReference: @@ -244,7 +242,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { getContext().reportWarning( getStartTokLoc(), Symbol->getName() + " changed binding to STB_WEAK"); Symbol->setBinding(ELF::STB_WEAK); - Symbol->setExternal(true); break; case MCSA_Local: @@ -253,7 +250,6 @@ bool MCELFStreamer::emitSymbolAttribute(MCSymbol *S, MCSymbolAttr Attribute) { Symbol->getName() + " changed binding to STB_LOCAL"); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); break; case MCSA_ELF_TypeFunction: @@ -308,10 +304,8 @@ void MCELFStreamer::emitCommonSymbol(MCSymbol *S, uint64_t Size, auto *Symbol = cast<MCSymbolELF>(S); getAssembler().registerSymbol(*Symbol); - if (!Symbol->isBindingSet()) { + if (!Symbol->isBindingSet()) Symbol->setBinding(ELF::STB_GLOBAL); - Symbol->setExternal(true); - } Symbol->setType(ELF::STT_OBJECT); @@ -352,7 +346,6 @@ void MCELFStreamer::emitLocalCommonSymbol(MCSymbol *S, uint64_t Size, // FIXME: Should this be caught and done earlier? getAssembler().registerSymbol(*Symbol); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); emitCommonSymbol(Symbol, Size, ByteAlignment); } @@ -499,10 +492,8 @@ void MCELFStreamer::finalizeCGProfileEntry(const MCSymbolRefExpr *&SRE) { // Not a temporary, referece it as a weak undefined. bool Created; getAssembler().registerSymbol(*S, &Created); - if (Created) { + if (Created) cast<MCSymbolELF>(S)->setBinding(ELF::STB_WEAK); - cast<MCSymbolELF>(S)->setExternal(true); - } } void MCELFStreamer::finalizeCGProfile() { diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index 876741d6c343..07ca5c29f0ec 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -644,7 +644,6 @@ class ARMELFStreamer : public MCELFStreamer { Symbol->setType(ELF::STT_NOTYPE); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); } void EmitMappingSymbol(StringRef Name, SMLoc Loc, MCFragment *F, @@ -654,7 +653,6 @@ class ARMELFStreamer : public MCELFStreamer { emitLabelAtPos(Symbol, Loc, F, Offset); Symbol->setType(ELF::STT_NOTYPE); Symbol->setBinding(ELF::STB_LOCAL); - Symbol->setExternal(false); } void emitThumbFunc(MCSymbol *Func) override { diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp index 00f319fc37e1..8780c602a269 100644 --- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp +++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp @@ -205,10 +205,8 @@ void SparcMCExpr::fixELFSymbolsInTLSFixups(MCAssembler &Asm) const { MCSymbol *Symbol = Asm.getContext().getOrCreateSymbol("__tls_get_addr"); Asm.registerSymbol(*Symbol); auto ELFSymbol = cast<MCSymbolELF>(Symbol); - if (!ELFSymbol->isBindingSet()) { + if (!ELFSymbol->isBindingSet()) ELFSymbol->setBinding(ELF::STB_GLOBAL); - ELFSymbol->setExternal(true); - } LLVM_FALLTHROUGH; } case VK_Sparc_TLS_GD_HI22: _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits