diff options
author | Pedro Artigas <partigas@apple.com> | 2012-12-14 18:52:11 +0000 |
---|---|---|
committer | Pedro Artigas <partigas@apple.com> | 2012-12-14 18:52:11 +0000 |
commit | b95c53e216e593a871d8c6f37f8f07f4b6b57623 (patch) | |
tree | 5dafba9112786166d13f7f019b58dbecf97932f6 /llvm/lib/MC | |
parent | f8e9a5a061734115bbf43a1e859a5da9d7b6ea1d (diff) | |
download | bcm5719-llvm-b95c53e216e593a871d8c6f37f8f07f4b6b57623.tar.gz bcm5719-llvm-b95c53e216e593a871d8c6f37f8f07f4b6b57623.zip |
Add more reset methods to make all objects that the backend may use for outputting code have a reset, some are not used but were declared for completeness
llvm-svn: 170227
Diffstat (limited to 'llvm/lib/MC')
-rw-r--r-- | llvm/lib/MC/MCAssembler.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/MC/MCObjectStreamer.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/MC/MachObjectWriter.cpp | 10 |
3 files changed, 17 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp index 8ca849be17b..2558eff0455 100644 --- a/llvm/lib/MC/MCAssembler.cpp +++ b/llvm/lib/MC/MCAssembler.cpp @@ -232,6 +232,11 @@ void MCAssembler::reset() { RelaxAll = false; NoExecStack = false; SubsectionsViaSymbols = false; + + // reset objects owned by us + getBackend().reset(); + getEmitter().reset(); + getWriter().reset(); } bool MCAssembler::isSymbolLinkerVisible(const MCSymbol &Symbol) const { diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index 98c8bdac3ab..c69d76428cb 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -45,7 +45,8 @@ MCObjectStreamer::~MCObjectStreamer() { } void MCObjectStreamer::reset() { - Assembler->reset(); + if (Assembler) + Assembler->reset(); MCStreamer::reset(); } diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp index cc8d2fb4771..0098bead45c 100644 --- a/llvm/lib/MC/MachObjectWriter.cpp +++ b/llvm/lib/MC/MachObjectWriter.cpp @@ -27,6 +27,16 @@ using namespace llvm; using namespace llvm::object; +void MachObjectWriter::reset() { + Relocations.clear(); + IndirectSymBase.clear(); + StringTable.clear(); + LocalSymbolData.clear(); + ExternalSymbolData.clear(); + UndefinedSymbolData.clear(); + MCObjectWriter::reset(); +} + bool MachObjectWriter:: doesSymbolRequireExternRelocation(const MCSymbolData *SD) { // Undefined symbols are always extern. |