From 3d2aeb2e20c1906ac8b607290828917322a14394 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 26 May 2015 14:48:11 +0000 Subject: [PATCH] Have getCurrentSectionData return a MCSection. I will fix the name shortly. llvm-svn: 238204 --- llvm/include/llvm/MC/MCObjectStreamer.h | 8 +++----- llvm/lib/MC/MCELFStreamer.cpp | 21 +++++++-------------- llvm/lib/MC/MCMachOStreamer.cpp | 2 +- llvm/lib/MC/MCObjectStreamer.cpp | 14 ++++++++------ 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/llvm/include/llvm/MC/MCObjectStreamer.h b/llvm/include/llvm/MC/MCObjectStreamer.h index b35eb862991b..44c43b2269d0 100644 --- a/llvm/include/llvm/MC/MCObjectStreamer.h +++ b/llvm/include/llvm/MC/MCObjectStreamer.h @@ -36,7 +36,7 @@ class raw_pwrite_stream; /// implementation. class MCObjectStreamer : public MCStreamer { MCAssembler *Assembler; - MCSectionData *CurSectionData; + MCSection *CurSectionData; MCSectionData::iterator CurInsertionPoint; bool EmitEHFrame; bool EmitDebugFrame; @@ -65,16 +65,14 @@ public: void EmitCFISections(bool EH, bool Debug) override; protected: - MCSectionData *getCurrentSectionData() const { - return CurSectionData; - } + MCSection *getCurrentSectionData() const { return CurSectionData; } MCFragment *getCurrentFragment() const; void insert(MCFragment *F) { flushPendingLabels(F); CurSectionData->getFragmentList().insert(CurInsertionPoint, F); - F->setParent(&CurSectionData->getSection()); + F->setParent(CurSectionData); } /// Get a data fragment to write into, creating a new one if the current diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp index 110dd3338bda..8854866bca70 100644 --- a/llvm/lib/MC/MCELFStreamer.cpp +++ b/llvm/lib/MC/MCELFStreamer.cpp @@ -39,7 +39,7 @@ using namespace llvm; bool MCELFStreamer::isBundleLocked() const { - return getCurrentSectionData()->getSection().isBundleLocked(); + return getCurrentSectionData()->isBundleLocked(); } MCELFStreamer::~MCELFStreamer() { @@ -146,9 +146,7 @@ static void setSectionAlignmentForBundling(const MCAssembler &Assembler, void MCELFStreamer::ChangeSection(MCSection *Section, const MCExpr *Subsection) { - MCSectionData *CurSectionData = getCurrentSectionData(); - MCSection *CurSection = - CurSectionData ? &CurSectionData->getSection() : nullptr; + MCSection *CurSection = getCurrentSectionData(); if (CurSection && isBundleLocked()) report_fatal_error("Unterminated .bundle_lock when changing a section"); @@ -203,7 +201,7 @@ bool MCELFStreamer::EmitSymbolAttribute(MCSymbol *Symbol, // important for matching the string table that 'as' generates. IndirectSymbolData ISD; ISD.Symbol = Symbol; - ISD.Section = &getCurrentSectionData()->getSection(); + ISD.Section = getCurrentSectionData(); getAssembler().getIndirectSymbols().push_back(ISD); return true; } @@ -508,8 +506,7 @@ void MCELFStreamer::EmitInstToData(const MCInst &Inst, MCDataFragment *DF; if (Assembler.isBundlingEnabled()) { - MCSectionData *SD = getCurrentSectionData(); - MCSection &Sec = SD->getSection(); + MCSection &Sec = *getCurrentSectionData(); if (Assembler.getRelaxAll() && isBundleLocked()) // If the -mc-relax-all flag is used and we are bundle-locked, we re-use // the current bundle group. @@ -577,8 +574,7 @@ void MCELFStreamer::EmitBundleAlignMode(unsigned AlignPow2) { } void MCELFStreamer::EmitBundleLock(bool AlignToEnd) { - MCSectionData *SD = getCurrentSectionData(); - MCSection &Sec = SD->getSection(); + MCSection &Sec = *getCurrentSectionData(); // Sanity checks // @@ -599,8 +595,7 @@ void MCELFStreamer::EmitBundleLock(bool AlignToEnd) { } void MCELFStreamer::EmitBundleUnlock() { - MCSectionData *SD = getCurrentSectionData(); - MCSection &Sec = SD->getSection(); + MCSection &Sec = *getCurrentSectionData(); // Sanity checks if (!getAssembler().isBundlingEnabled()) @@ -659,9 +654,7 @@ void MCELFStreamer::Flush() { void MCELFStreamer::FinishImpl() { // Ensure the last section gets aligned if necessary. - MCSectionData *CurSectionData = getCurrentSectionData(); - MCSection *CurSection = - CurSectionData ? &CurSectionData->getSection() : nullptr; + MCSection *CurSection = getCurrentSectionData(); setSectionAlignmentForBundling(getAssembler(), CurSection); EmitFrames(nullptr); diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp index 204dccf02f60..2db463c86b58 100644 --- a/llvm/lib/MC/MCMachOStreamer.cpp +++ b/llvm/lib/MC/MCMachOStreamer.cpp @@ -287,7 +287,7 @@ bool MCMachOStreamer::EmitSymbolAttribute(MCSymbol *Symbol, // important for matching the string table that 'as' generates. IndirectSymbolData ISD; ISD.Symbol = Symbol; - ISD.Section = &getCurrentSectionData()->getSection(); + ISD.Section = getCurrentSectionData(); getAssembler().getIndirectSymbols().push_back(ISD); return true; } diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp index e6fd7adbfa96..f5a282d603c1 100644 --- a/llvm/lib/MC/MCObjectStreamer.cpp +++ b/llvm/lib/MC/MCObjectStreamer.cpp @@ -43,7 +43,7 @@ void MCObjectStreamer::flushPendingLabels(MCFragment *F, uint64_t FOffset) { if (!F) { F = new MCDataFragment(); CurSectionData->getFragmentList().insert(CurInsertionPoint, F); - F->setParent(&CurSectionData->getSection()); + F->setParent(CurSectionData); } for (MCSymbolData *SD : PendingLabels) { SD->setFragment(F); @@ -212,7 +212,8 @@ bool MCObjectStreamer::changeSectionImpl(MCSection *Section, flushPendingLabels(nullptr); bool Created; - CurSectionData = &getAssembler().getOrCreateSectionData(*Section, &Created); + getAssembler().getOrCreateSectionData(*Section, &Created); + CurSectionData = Section; int64_t IntSubsection = 0; if (Subsection && @@ -221,7 +222,8 @@ bool MCObjectStreamer::changeSectionImpl(MCSection *Section, if (IntSubsection < 0 || IntSubsection > 8192) report_fatal_error("Subsection number out of range"); CurInsertionPoint = - CurSectionData->getSubsectionInsertionPoint(unsigned(IntSubsection)); + CurSectionData->getSectionData().getSubsectionInsertionPoint( + unsigned(IntSubsection)); return Created; } @@ -238,8 +240,8 @@ void MCObjectStreamer::EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) { MCStreamer::EmitInstruction(Inst, STI); - MCSectionData *SD = getCurrentSectionData(); - SD->getSection().setHasInstructions(true); + MCSection *Sec = getCurrentSectionData(); + Sec->setHasInstructions(true); // Now that a machine instruction has been assembled into this section, make // a line entry for any .loc directive that has been seen. @@ -258,7 +260,7 @@ void MCObjectStreamer::EmitInstruction(const MCInst &Inst, // group. We want to emit all such instructions into the same data // fragment. if (Assembler.getRelaxAll() || - (Assembler.isBundlingEnabled() && SD->getSection().isBundleLocked())) { + (Assembler.isBundlingEnabled() && Sec->isBundleLocked())) { MCInst Relaxed; getAssembler().getBackend().relaxInstruction(Inst, Relaxed); while (getAssembler().getBackend().mayNeedRelaxation(Relaxed))