From aa627c39e4d5494ecf4ae94be87cf6b76b85a212 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 16 Jun 2010 20:04:29 +0000 Subject: [PATCH] MC: Simplify MCAssembler::isSymbolLinkerVisible to only take an MCSymbol. llvm-svn: 106142 --- llvm/include/llvm/MC/MCAssembler.h | 2 +- llvm/lib/MC/MCAssembler.cpp | 11 +++++------ llvm/lib/MC/MCMachOStreamer.cpp | 4 ++-- llvm/lib/MC/MachObjectWriter.cpp | 4 ++-- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/llvm/include/llvm/MC/MCAssembler.h b/llvm/include/llvm/MC/MCAssembler.h index d9963ec4821a56..6ee1fe0cd83163 100644 --- a/llvm/include/llvm/MC/MCAssembler.h +++ b/llvm/include/llvm/MC/MCAssembler.h @@ -641,7 +641,7 @@ class MCAssembler { /// 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. // diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index c971ee207f9be1..69f40a1c1915e3 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -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. diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp index d0ea3b6780681b..9eb1cb9baea192 100644 --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/lib/MC/MCMachOStreamer.cpp @@ -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); diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp index f5f444c78c2398..7be7af21b3f018 100644 --- a/llvm/lib/MC/MachObjectWriter.cpp +++ b/llvm/lib/MC/MachObjectWriter.cpp @@ -936,7 +936,7 @@ class MachObjectWriterImpl { 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 @@ class MachObjectWriterImpl { 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())