mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-14 15:39:06 +00:00
MC: Remove unused virtual function MCObjectWriter::isWeak. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299817 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1ad9b2d946
commit
b06c394fe3
@ -109,11 +109,6 @@ public:
|
||||
bool InSet,
|
||||
bool IsPCRel) const;
|
||||
|
||||
/// True if this symbol (which is a variable) is weak. This is not
|
||||
/// just STB_WEAK, but more generally whether or not we can evaluate
|
||||
/// past it.
|
||||
virtual bool isWeak(const MCSymbol &Sym) const;
|
||||
|
||||
/// Write the object file.
|
||||
///
|
||||
/// This routine is called by the assembler after layout and relaxation is
|
||||
|
@ -248,8 +248,6 @@ public:
|
||||
const MCFragment &FB, bool InSet,
|
||||
bool IsPCRel) const override;
|
||||
|
||||
bool isWeak(const MCSymbol &Sym) const override;
|
||||
|
||||
void writeObject(MCAssembler &Asm, const MCAsmLayout &Layout) override;
|
||||
void writeSection(const SectionIndexMapTy &SectionIndexMap,
|
||||
uint32_t GroupSymbolIndex, uint64_t Offset, uint64_t Size,
|
||||
@ -1359,34 +1357,13 @@ bool ELFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
|
||||
const auto &SymA = cast<MCSymbolELF>(SA);
|
||||
if (IsPCRel) {
|
||||
assert(!InSet);
|
||||
if (::isWeak(SymA))
|
||||
if (isWeak(SymA))
|
||||
return false;
|
||||
}
|
||||
return MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(Asm, SymA, FB,
|
||||
InSet, IsPCRel);
|
||||
}
|
||||
|
||||
bool ELFObjectWriter::isWeak(const MCSymbol &S) const {
|
||||
const auto &Sym = cast<MCSymbolELF>(S);
|
||||
if (::isWeak(Sym))
|
||||
return true;
|
||||
|
||||
// It is invalid to replace a reference to a global in a comdat
|
||||
// with a reference to a local since out of comdat references
|
||||
// to a local are forbidden.
|
||||
// We could try to return false for more cases, like the reference
|
||||
// being in the same comdat or Sym being an alias to another global,
|
||||
// but it is not clear if it is worth the effort.
|
||||
if (Sym.getBinding() != ELF::STB_GLOBAL)
|
||||
return false;
|
||||
|
||||
if (!Sym.isInSection())
|
||||
return false;
|
||||
|
||||
const auto &Sec = cast<MCSectionELF>(Sym.getSection());
|
||||
return Sec.getGroup();
|
||||
}
|
||||
|
||||
MCObjectWriter *llvm::createELFObjectWriter(MCELFObjectTargetWriter *MOTW,
|
||||
raw_pwrite_stream &OS,
|
||||
bool IsLittleEndian) {
|
||||
|
@ -51,5 +51,3 @@ bool MCObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
|
||||
// On ELF and COFF A - B is absolute if A and B are in the same section.
|
||||
return &SecA == &SecB;
|
||||
}
|
||||
|
||||
bool MCObjectWriter::isWeak(const MCSymbol &) const { return false; }
|
||||
|
@ -194,8 +194,6 @@ public:
|
||||
const MCFragment &FB, bool InSet,
|
||||
bool IsPCRel) const override;
|
||||
|
||||
bool isWeak(const MCSymbol &Sym) const override;
|
||||
|
||||
void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment, const MCFixup &Fixup,
|
||||
MCValue Target, bool &IsPCRel,
|
||||
@ -709,23 +707,6 @@ bool WinCOFFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
|
||||
InSet, IsPCRel);
|
||||
}
|
||||
|
||||
bool WinCOFFObjectWriter::isWeak(const MCSymbol &Sym) const {
|
||||
if (!Sym.isExternal())
|
||||
return false;
|
||||
|
||||
if (!Sym.isInSection())
|
||||
return false;
|
||||
|
||||
const auto &Sec = cast<MCSectionCOFF>(Sym.getSection());
|
||||
if (!Sec.getCOMDATSymbol())
|
||||
return false;
|
||||
|
||||
// It looks like for COFF it is invalid to replace a reference to a global
|
||||
// in a comdat with a reference to a local.
|
||||
// FIXME: Add a specification reference if available.
|
||||
return true;
|
||||
}
|
||||
|
||||
void WinCOFFObjectWriter::recordRelocation(
|
||||
MCAssembler &Asm, const MCAsmLayout &Layout, const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target, bool &IsPCRel, uint64_t &FixedValue) {
|
||||
|
Loading…
Reference in New Issue
Block a user