Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit c63035a

Browse files
committed
Add and update reset() and doInitialization() methods to MC* and passes.
This enables reusing a PassManager instead of re-constructing it every time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217948 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 4378ff0 commit c63035a

File tree

8 files changed

+41
-0
lines changed

8 files changed

+41
-0
lines changed

include/llvm/CodeGen/StackMaps.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ class StackMaps {
118118

119119
StackMaps(AsmPrinter &AP);
120120

121+
void reset() {
122+
CSInfos.clear();
123+
ConstPool.clear();
124+
FnStackSize.clear();
125+
}
126+
121127
/// \brief Generate a stackmap record for a stackmap instruction.
122128
///
123129
/// MI must be a raw STACKMAP, not a PATCHPOINT.

include/llvm/MC/MCELFStreamer.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ class MCELFStreamer : public MCObjectStreamer {
4141

4242
virtual ~MCELFStreamer();
4343

44+
/// state management
45+
void reset() override {
46+
LocalCommons.clear();
47+
BindingExplicitlySet.clear();
48+
SeenIdent = false;
49+
MCObjectStreamer::reset();
50+
}
51+
4452
/// @name MCStreamer Interface
4553
/// @{
4654

include/llvm/MC/MCWinCOFFStreamer.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ class MCWinCOFFStreamer : public MCObjectStreamer {
3030
MCWinCOFFStreamer(MCContext &Context, MCAsmBackend &MAB, MCCodeEmitter &CE,
3131
raw_ostream &OS);
3232

33+
/// state management
34+
void reset() override {
35+
CurSymbol = nullptr;
36+
MCObjectStreamer::reset();
37+
}
38+
3339
/// \name MCStreamer interface
3440
/// \{
3541

lib/MC/MCAssembler.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,11 +364,16 @@ void MCAssembler::reset() {
364364
SymbolMap.clear();
365365
IndirectSymbols.clear();
366366
DataRegions.clear();
367+
LinkerOptions.clear();
368+
FileNames.clear();
367369
ThumbFuncs.clear();
370+
BundleAlignSize = 0;
368371
RelaxAll = false;
369372
NoExecStack = false;
370373
SubsectionsViaSymbols = false;
371374
ELFHeaderEFlags = 0;
375+
LOHContainer.reset();
376+
VersionMinInfo.Major = 0;
372377

373378
// reset objects owned by us
374379
getBackend().reset();

lib/MC/MCContext.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ void MCContext::reset() {
7373
Symbols.clear();
7474
Allocator.Reset();
7575
Instances.clear();
76+
CompilationDir.clear();
77+
MainFileName.clear();
7678
MCDwarfLineTablesCUMap.clear();
79+
SectionStartEndSyms.clear();
7780
MCGenDwarfLabelEntries.clear();
7881
DwarfDebugFlags = StringRef();
7982
DwarfCompileUnitID = 0;

lib/MC/MCMachOStreamer.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ class MCMachOStreamer : public MCObjectStreamer {
5555
: MCObjectStreamer(Context, MAB, OS, Emitter),
5656
LabelSections(label) {}
5757

58+
/// state management
59+
void reset() override {
60+
HasSectionLabel.clear();
61+
MCObjectStreamer::reset();
62+
}
63+
5864
/// @name MCStreamer Interface
5965
/// @{
6066

lib/MC/MCStreamer.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ MCStreamer::~MCStreamer() {
4848
}
4949

5050
void MCStreamer::reset() {
51+
DwarfFrameInfos.clear();
5152
for (unsigned i = 0; i < getNumWinFrameInfos(); ++i)
5253
delete WinFrameInfos[i];
5354
WinFrameInfos.clear();

lib/Target/X86/X86AsmPrinter.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,12 @@ class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter {
116116
/// \brief Return the symbol for the specified constant pool entry.
117117
MCSymbol *GetCPISymbol(unsigned CPID) const override;
118118

119+
bool doInitialization(Module &M) override {
120+
SMShadowTracker.reset(0);
121+
SM.reset();
122+
return AsmPrinter::doInitialization(M);
123+
}
124+
119125
bool runOnMachineFunction(MachineFunction &F) override;
120126
};
121127

0 commit comments

Comments
 (0)