Turn MCSectionData into a field of MCSection.

This also changes MCAssembler to store a vector of MCSections instead of an
iplist of MCSectionData.

llvm-svn: 238159
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 2fa023e..fe4e22d 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -69,11 +69,11 @@
  {
   // Compute the section layout order. Virtual sections must go last.
   for (MCAssembler::iterator it = Asm.begin(), ie = Asm.end(); it != ie; ++it)
-    if (!it->getSection().isVirtualSection())
-      SectionOrder.push_back(&*it);
+    if (!it->isVirtualSection())
+      SectionOrder.push_back(&it->getSectionData());
   for (MCAssembler::iterator it = Asm.begin(), ie = Asm.end(); it != ie; ++it)
-    if (it->getSection().isVirtualSection())
-      SectionOrder.push_back(&*it);
+    if (it->isVirtualSection())
+      SectionOrder.push_back(&it->getSectionData());
 }
 
 bool MCAsmLayout::isFragmentValid(const MCFragment *F) const {
@@ -290,8 +290,6 @@
 
 /* *** */
 
-MCSectionData::MCSectionData() : Section(nullptr) {}
-
 MCSectionData::MCSectionData(MCSection &Section) : Section(&Section) {}
 
 MCSectionData::iterator
@@ -342,7 +340,6 @@
 void MCAssembler::reset() {
   Sections.clear();
   Symbols.clear();
-  SectionMap.clear();
   IndirectSymbols.clear();
   DataRegions.clear();
   LinkerOptions.clear();
@@ -862,9 +859,9 @@
     // Create dummy fragments to eliminate any empty sections, this simplifies
     // layout.
     if (it->getFragmentList().empty())
-      new MCDataFragment(it);
+      new MCDataFragment(&it->getSectionData());
 
-    it->getSection().setOrdinal(SectionIndex++);
+    it->setOrdinal(SectionIndex++);
   }
 
   // Assign layout order indices to sections and fragments.
@@ -1084,8 +1081,8 @@
 
   bool WasRelaxed = false;
   for (iterator it = begin(), ie = end(); it != ie; ++it) {
-    MCSectionData &SD = *it;
-    while (layoutSectionOnce(Layout, SD))
+    MCSection &Sec = *it;
+    while (layoutSectionOnce(Layout, Sec.getSectionData()))
       WasRelaxed = true;
   }
 
@@ -1261,7 +1258,7 @@
   OS << "  Sections:[\n    ";
   for (iterator it = begin(), ie = end(); it != ie; ++it) {
     if (it != begin()) OS << ",\n    ";
-    it->dump();
+    it->getSectionData().dump();
   }
   OS << "],\n";
   OS << "  Symbols:[";