Have getCurrentSectionData return a MCSection.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 26 May 2015 14:48:11 +0000 (14:48 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 26 May 2015 14:48:11 +0000 (14:48 +0000)
I will fix the name shortly.

llvm-svn: 238204

llvm/include/llvm/MC/MCObjectStreamer.h
llvm/lib/MC/MCELFStreamer.cpp
llvm/lib/MC/MCMachOStreamer.cpp
llvm/lib/MC/MCObjectStreamer.cpp

index b35eb86..44c43b2 100644 (file)
@@ -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
index 110dd33..8854866 100644 (file)
@@ -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);
index 204dccf..2db463c 100644 (file)
@@ -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;
   }
index e6fd7ad..f5a282d 100644 (file)
@@ -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))