From: Duncan P. N. Exon Smith Date: Sat, 16 May 2015 00:35:24 +0000 (+0000) Subject: MC: Change MCAssembler::Symbols to store MCSymbol, NFC X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=a5bb842d9596bca7d97ffa8199ed9a24e2c2bb46;p=oota-llvm.git MC: Change MCAssembler::Symbols to store MCSymbol, NFC Instead of storing a list of the `MCSymbolData` in use, store the `MCSymbol`s. Churning in the direction of removing the back pointer from `MCSymbolData`. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237496 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/MC/MCAssembler.h b/include/llvm/MC/MCAssembler.h index a27482c32a9..945f4220975 100644 --- a/include/llvm/MC/MCAssembler.h +++ b/include/llvm/MC/MCAssembler.h @@ -676,7 +676,7 @@ class MCAssembler { public: typedef iplist SectionDataListType; - typedef std::vector SymbolDataListType; + typedef std::vector SymbolDataListType; typedef SectionDataListType::const_iterator const_iterator; typedef SectionDataListType::iterator iterator; @@ -1052,7 +1052,7 @@ public: *Created = !hasSymbolData(Symbol); if (!hasSymbolData(Symbol)) { Symbol.getUnsafeData().initialize(Symbol, nullptr, 0); - Symbols.push_back(&Symbol.getData()); + Symbols.push_back(&Symbol); } return Symbol.getData(); } diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index b0158014a9e..892f1526de8 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -422,8 +422,8 @@ void ELFObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm, // The presence of symbol versions causes undefined symbols and // versions declared with @@@ to be renamed. - for (MCSymbolData &OriginalData : Asm.symbols()) { - const MCSymbol &Alias = OriginalData.getSymbol(); + for (const MCSymbol &Alias : Asm.symbols()) { + MCSymbolData &OriginalData = Alias.getData(); // Not an alias. if (!Alias.isVariable()) @@ -936,8 +936,8 @@ void ELFObjectWriter::computeSymbolTable( } // Add the data for the symbols. - for (MCSymbolData &SD : Asm.symbols()) { - const MCSymbol &Symbol = SD.getSymbol(); + for (const MCSymbol &Symbol : Asm.symbols()) { + MCSymbolData &SD = Symbol.getData(); bool Used = UsedInReloc.count(&Symbol); bool WeakrefUsed = WeakrefUsedInReloc.count(&Symbol); diff --git a/lib/MC/MCMachOStreamer.cpp b/lib/MC/MCMachOStreamer.cpp index 263d79adb08..ee3f35878ed 100644 --- a/lib/MC/MCMachOStreamer.cpp +++ b/lib/MC/MCMachOStreamer.cpp @@ -465,9 +465,9 @@ void MCMachOStreamer::FinishImpl() { // First, scan the symbol table to build a lookup table from fragments to // defining symbols. DenseMap DefiningSymbolMap; - for (MCSymbolData &SD : getAssembler().symbols()) { - if (getAssembler().isSymbolLinkerVisible(SD.getSymbol()) && - SD.getFragment()) { + for (const MCSymbol &Symbol : getAssembler().symbols()) { + MCSymbolData &SD = Symbol.getData(); + if (getAssembler().isSymbolLinkerVisible(Symbol) && SD.getFragment()) { // An atom defining symbol should never be internal to a fragment. assert(SD.getOffset() == 0 && "Invalid offset in atom defining symbol!"); DefiningSymbolMap[SD.getFragment()] = &SD; diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp index 248775c625e..3ffdc701e65 100644 --- a/lib/MC/MachObjectWriter.cpp +++ b/lib/MC/MachObjectWriter.cpp @@ -548,8 +548,7 @@ void MachObjectWriter::ComputeSymbolTable( assert(Index <= 256 && "Too many sections!"); // Build the string table. - for (MCSymbolData &SD : Asm.symbols()) { - const MCSymbol &Symbol = SD.getSymbol(); + for (const MCSymbol &Symbol : Asm.symbols()) { if (!Asm.isSymbolLinkerVisible(Symbol)) continue; @@ -562,8 +561,8 @@ void MachObjectWriter::ComputeSymbolTable( // The particular order that we collect and then sort the symbols is chosen to // match 'as'. Even though it doesn't matter for correctness, this is // important for letting us diff .o files. - for (MCSymbolData &SD : Asm.symbols()) { - const MCSymbol &Symbol = SD.getSymbol(); + for (const MCSymbol &Symbol : Asm.symbols()) { + MCSymbolData &SD = Symbol.getData(); // Ignore non-linker visible symbols. if (!Asm.isSymbolLinkerVisible(Symbol)) @@ -590,8 +589,8 @@ void MachObjectWriter::ComputeSymbolTable( } // Now add the data for local symbols. - for (MCSymbolData &SD : Asm.symbols()) { - const MCSymbol &Symbol = SD.getSymbol(); + for (const MCSymbol &Symbol : Asm.symbols()) { + MCSymbolData &SD = Symbol.getData(); // Ignore non-linker visible symbols. if (!Asm.isSymbolLinkerVisible(Symbol)) diff --git a/lib/MC/WinCOFFObjectWriter.cpp b/lib/MC/WinCOFFObjectWriter.cpp index 11a83791368..261534ed668 100644 --- a/lib/MC/WinCOFFObjectWriter.cpp +++ b/lib/MC/WinCOFFObjectWriter.cpp @@ -642,9 +642,9 @@ void WinCOFFObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm, for (const auto &Section : Asm) DefineSection(Section); - for (MCSymbolData &SD : Asm.symbols()) - if (ExportSymbol(SD.getSymbol(), Asm)) - DefineSymbol(SD, Asm, Layout); + for (const MCSymbol &Symbol : Asm.symbols()) + if (ExportSymbol(Symbol, Asm)) + DefineSymbol(Symbol.getData(), Asm, Layout); } bool WinCOFFObjectWriter::IsSymbolRefDifferenceFullyResolvedImpl(