mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 12:19:53 +00:00
MC: Simplify MCAssembler::isSymbolLinkerVisible to only take an MCSymbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106142 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
83b467178a
commit
843aa1f15b
@ -641,7 +641,7 @@ public:
|
||||
/// in the symbol table, or whether it can be discarded by the assembler. This
|
||||
/// also effects whether the assembler treats the label as potentially
|
||||
/// defining a separate atom.
|
||||
bool isSymbolLinkerVisible(const MCSymbolData *SD) const;
|
||||
bool isSymbolLinkerVisible(const MCSymbol &SD) const;
|
||||
|
||||
/// Emit the section contents using the given object writer.
|
||||
//
|
||||
|
@ -308,24 +308,23 @@ static bool isScatteredFixupFullyResolved(const MCAssembler &Asm,
|
||||
return !B_Base && BaseSymbol == A_Base;
|
||||
}
|
||||
|
||||
bool MCAssembler::isSymbolLinkerVisible(const MCSymbolData *SD) const {
|
||||
bool MCAssembler::isSymbolLinkerVisible(const MCSymbol &Symbol) const {
|
||||
// Non-temporary labels should always be visible to the linker.
|
||||
if (!SD->getSymbol().isTemporary())
|
||||
if (!Symbol.isTemporary())
|
||||
return true;
|
||||
|
||||
// Absolute temporary labels are never visible.
|
||||
if (!SD->getFragment())
|
||||
if (!Symbol.isInSection())
|
||||
return false;
|
||||
|
||||
// Otherwise, check if the section requires symbols even for temporary labels.
|
||||
return getBackend().doesSectionRequireSymbols(
|
||||
SD->getFragment()->getParent()->getSection());
|
||||
return getBackend().doesSectionRequireSymbols(Symbol.getSection());
|
||||
}
|
||||
|
||||
const MCSymbolData *MCAssembler::getAtom(const MCAsmLayout &Layout,
|
||||
const MCSymbolData *SD) const {
|
||||
// Linker visible symbols define atoms.
|
||||
if (isSymbolLinkerVisible(SD))
|
||||
if (isSymbolLinkerVisible(SD->getSymbol()))
|
||||
return SD;
|
||||
|
||||
// Absolute and undefined symbols have no defining atom.
|
||||
|
@ -159,7 +159,7 @@ void MCMachOStreamer::EmitLabel(MCSymbol *Symbol) {
|
||||
|
||||
// Update the current atom map, if necessary.
|
||||
bool MustCreateFragment = false;
|
||||
if (getAssembler().isSymbolLinkerVisible(&SD)) {
|
||||
if (getAssembler().isSymbolLinkerVisible(SD.getSymbol())) {
|
||||
CurrentAtomMap[getCurrentSectionData()] = &SD;
|
||||
|
||||
// We have to create a new fragment, fragments cannot span atoms.
|
||||
@ -328,7 +328,7 @@ void MCMachOStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol,
|
||||
|
||||
MCFragment *F = new MCFillFragment(0, 0, Size, &SectData);
|
||||
SD.setFragment(F);
|
||||
if (getAssembler().isSymbolLinkerVisible(&SD))
|
||||
if (getAssembler().isSymbolLinkerVisible(SD.getSymbol()))
|
||||
F->setAtom(&SD);
|
||||
|
||||
Symbol->setSection(*Section);
|
||||
|
@ -936,7 +936,7 @@ public:
|
||||
const MCSymbol &Symbol = it->getSymbol();
|
||||
|
||||
// Ignore non-linker visible symbols.
|
||||
if (!Asm.isSymbolLinkerVisible(it))
|
||||
if (!Asm.isSymbolLinkerVisible(it->getSymbol()))
|
||||
continue;
|
||||
|
||||
if (!it->isExternal() && !Symbol.isUndefined())
|
||||
@ -972,7 +972,7 @@ public:
|
||||
const MCSymbol &Symbol = it->getSymbol();
|
||||
|
||||
// Ignore non-linker visible symbols.
|
||||
if (!Asm.isSymbolLinkerVisible(it))
|
||||
if (!Asm.isSymbolLinkerVisible(it->getSymbol()))
|
||||
continue;
|
||||
|
||||
if (it->isExternal() || Symbol.isUndefined())
|
||||
|
Loading…
Reference in New Issue
Block a user