summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-05-16 00:35:24 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-05-16 00:35:24 +0000
commitf48de1cb7b1c3c59011f9d3d34e00bcf8ca29b01 (patch)
tree4764ea4f92f40d7202727cc3f599eb4085ce9ca5 /llvm
parent7f6290ca9ab4b02eab67262a8a103473c9148acc (diff)
downloadbcm5719-llvm-f48de1cb7b1c3c59011f9d3d34e00bcf8ca29b01.tar.gz
bcm5719-llvm-f48de1cb7b1c3c59011f9d3d34e00bcf8ca29b01.zip
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`. llvm-svn: 237496
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/MC/MCAssembler.h4
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp8
-rw-r--r--llvm/lib/MC/MCMachOStreamer.cpp6
-rw-r--r--llvm/lib/MC/MachObjectWriter.cpp11
-rw-r--r--llvm/lib/MC/WinCOFFObjectWriter.cpp6
5 files changed, 17 insertions, 18 deletions
diff --git a/llvm/include/llvm/MC/MCAssembler.h b/llvm/include/llvm/MC/MCAssembler.h
index a27482c32a9..945f4220975 100644
--- a/llvm/include/llvm/MC/MCAssembler.h
+++ b/llvm/include/llvm/MC/MCAssembler.h
@@ -676,7 +676,7 @@ class MCAssembler {
public:
typedef iplist<MCSectionData> SectionDataListType;
- typedef std::vector<MCSymbolData *> SymbolDataListType;
+ typedef std::vector<const MCSymbol *> 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/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index b0158014a9e..892f1526de8 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/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/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp
index 263d79adb08..ee3f35878ed 100644
--- a/llvm/lib/MC/MCMachOStreamer.cpp
+++ b/llvm/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<const MCFragment*, MCSymbolData*> 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/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index 248775c625e..3ffdc701e65 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/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/llvm/lib/MC/WinCOFFObjectWriter.cpp b/llvm/lib/MC/WinCOFFObjectWriter.cpp
index 11a83791368..261534ed668 100644
--- a/llvm/lib/MC/WinCOFFObjectWriter.cpp
+++ b/llvm/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(
OpenPOWER on IntegriCloud