From 91c39aa6285247aefbf627f4210f7931076bae49 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 25 Jun 2014 18:37:33 +0000 Subject: Merge the used symbol scanning of MCObjectStreamer and RecordStreamer. This completes the refactoring of RecordStreamer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211727 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/LTO/LTOModule.cpp | 8 ++------ lib/MC/MCNullStreamer.cpp | 2 -- lib/MC/MCObjectStreamer.cpp | 11 ++++------- lib/MC/MCStreamer.cpp | 13 ++++++++++++- 4 files changed, 18 insertions(+), 16 deletions(-) (limited to 'lib') diff --git a/lib/LTO/LTOModule.cpp b/lib/LTO/LTOModule.cpp index 22ccff3dda..5987971bb4 100644 --- a/lib/LTO/LTOModule.cpp +++ b/lib/LTO/LTOModule.cpp @@ -624,19 +624,15 @@ namespace { void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override { - // Scan for values. - for (unsigned i = Inst.getNumOperands(); i--; ) - if (Inst.getOperand(i).isExpr()) - visitUsedExpr(*Inst.getOperand(i).getExpr()); + MCStreamer::EmitInstruction(Inst, STI); } void EmitLabel(MCSymbol *Symbol) override { MCStreamer::EmitLabel(Symbol); markDefined(*Symbol); } void EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) override { - // FIXME: should we handle aliases? markDefined(*Symbol); - visitUsedExpr(*Value); + MCStreamer::EmitAssignment(Symbol, Value); } bool EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override { diff --git a/lib/MC/MCNullStreamer.cpp b/lib/MC/MCNullStreamer.cpp index d174a2e06e..d5434023db 100644 --- a/lib/MC/MCNullStreamer.cpp +++ b/lib/MC/MCNullStreamer.cpp @@ -35,8 +35,6 @@ namespace { void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = nullptr, uint64_t Size = 0, unsigned ByteAlignment = 0) override {} void EmitGPRel32Value(const MCExpr *Value) override {} - - void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo&) override {} }; } diff --git a/lib/MC/MCObjectStreamer.cpp b/lib/MC/MCObjectStreamer.cpp index 9d92f1ddca..a721b59bd1 100644 --- a/lib/MC/MCObjectStreamer.cpp +++ b/lib/MC/MCObjectStreamer.cpp @@ -95,13 +95,13 @@ void MCObjectStreamer::EmitCFISections(bool EH, bool Debug) { void MCObjectStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size, const SMLoc &Loc) { + MCStreamer::EmitValueImpl(Value, Size, Loc); MCDataFragment *DF = getOrCreateDataFragment(); MCLineEntry::Make(this, getCurrentSection().first); // Avoid fixups when possible. int64_t AbsValue; - visitUsedExpr(*Value); if (Value->EvaluateAsAbsolute(AbsValue, getAssembler())) { EmitIntValue(AbsValue, Size); return; @@ -181,15 +181,12 @@ void MCObjectStreamer::ChangeSection(const MCSection *Section, void MCObjectStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) { getAssembler().getOrCreateSymbolData(*Symbol); - visitUsedExpr(*Value); MCStreamer::EmitAssignment(Symbol, Value); } -void MCObjectStreamer::EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) { - // Scan for values. - for (unsigned i = Inst.getNumOperands(); i--; ) - if (Inst.getOperand(i).isExpr()) - visitUsedExpr(*Inst.getOperand(i).getExpr()); +void MCObjectStreamer::EmitInstruction(const MCInst &Inst, + const MCSubtargetInfo &STI) { + MCStreamer::EmitInstruction(Inst, STI); MCSectionData *SD = getCurrentSectionData(); SD->setHasInstructions(true); diff --git a/lib/MC/MCStreamer.cpp b/lib/MC/MCStreamer.cpp index 6b4bb6f432..ab7e4c7576 100644 --- a/lib/MC/MCStreamer.cpp +++ b/lib/MC/MCStreamer.cpp @@ -607,6 +607,7 @@ void MCStreamer::Finish() { } void MCStreamer::EmitAssignment(MCSymbol *Symbol, const MCExpr *Value) { + visitUsedExpr(*Value); Symbol->setVariableValue(Value); MCTargetStreamer *TS = getTargetStreamer(); @@ -643,6 +644,14 @@ void MCStreamer::visitUsedExpr(const MCExpr &Expr) { } } +void MCStreamer::EmitInstruction(const MCInst &Inst, + const MCSubtargetInfo &STI) { + // Scan for values. + for (unsigned i = Inst.getNumOperands(); i--;) + if (Inst.getOperand(i).isExpr()) + visitUsedExpr(*Inst.getOperand(i).getExpr()); +} + void MCStreamer::EmitAssemblerFlag(MCAssemblerFlag Flag) {} void MCStreamer::EmitThumbFunc(MCSymbol *Func) {} void MCStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {} @@ -660,7 +669,9 @@ void MCStreamer::ChangeSection(const MCSection *, const MCExpr *) {} void MCStreamer::EmitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol) {} void MCStreamer::EmitBytes(StringRef Data) {} void MCStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size, - const SMLoc &Loc) {} + const SMLoc &Loc) { + visitUsedExpr(*Value); +} void MCStreamer::EmitULEB128Value(const MCExpr *Value) {} void MCStreamer::EmitSLEB128Value(const MCExpr *Value) {} void MCStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value, -- cgit v1.2.3