summaryrefslogtreecommitdiff
path: root/lib/MC/MCAsmStreamer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MC/MCAsmStreamer.cpp')
-rw-r--r--lib/MC/MCAsmStreamer.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp
index 759058efcb..85d4dd79b3 100644
--- a/lib/MC/MCAsmStreamer.cpp
+++ b/lib/MC/MCAsmStreamer.cpp
@@ -57,6 +57,8 @@ private:
EHPrivateExtern = 1 << 2 };
DenseMap<const MCSymbol*, unsigned> FlagMap;
+ DenseMap<const MCSymbol*, MCSymbolData*> SymbolMap;
+
bool needsSet(const MCExpr *Value);
void EmitRegisterName(int64_t Register);
@@ -252,6 +254,8 @@ public:
void EmitRawTextImpl(StringRef String) override;
void FinishImpl() override;
+
+ virtual MCSymbolData &getOrCreateSymbolData(const MCSymbol *Symbol) override;
};
} // end anonymous namespace.
@@ -1417,6 +1421,15 @@ void MCAsmStreamer::FinishImpl() {
EmitFrames(AsmBackend.get(), false);
}
+MCSymbolData &MCAsmStreamer::getOrCreateSymbolData(const MCSymbol *Symbol) {
+ MCSymbolData *&Entry = SymbolMap[Symbol];
+
+ if (!Entry)
+ Entry = new MCSymbolData(*Symbol, 0, 0, 0);
+
+ return *Entry;
+}
+
MCStreamer *llvm::createAsmStreamer(MCContext &Context,
formatted_raw_ostream &OS,
bool isVerboseAsm, bool useCFI,