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 | 99cbdde6198623ff014c776743caec2cf48f4840 (patch) | |
tree | 37ba9f08c31167816c6ba44f76b8833601780ebf /lib | |
parent | a5ed031fbcec67081d4857c9000f0180840fe2d5 (diff) | |
download | external_llvm-99cbdde6198623ff014c776743caec2cf48f4840.zip external_llvm-99cbdde6198623ff014c776743caec2cf48f4840.tar.gz external_llvm-99cbdde6198623ff014c776743caec2cf48f4840.tar.bz2 |
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170227 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/MC/MCAssembler.cpp | 5 | ||||
-rw-r--r-- | lib/MC/MCObjectStreamer.cpp | 3 | ||||
-rw-r--r-- | lib/MC/MachObjectWriter.cpp | 10 |
3 files changed, 17 insertions, 1 deletions
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp index 8ca849b..2558eff 100644 --- a/lib/MC/MCAssembler.cpp +++ b/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/lib/MC/MCObjectStreamer.cpp b/lib/MC/MCObjectStreamer.cpp index 98c8bda..c69d764 100644 --- a/lib/MC/MCObjectStreamer.cpp +++ b/lib/MC/MCObjectStreamer.cpp @@ -45,7 +45,8 @@ MCObjectStreamer::~MCObjectStreamer() { } void MCObjectStreamer::reset() { - Assembler->reset(); + if (Assembler) + Assembler->reset(); MCStreamer::reset(); } diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp index cc8d2fb..0098bea 100644 --- a/lib/MC/MachObjectWriter.cpp +++ b/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. |