diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp
index 6333835..061d7c2 100644
--- a/lib/MC/MCContext.cpp
+++ b/lib/MC/MCContext.cpp
@@ -22,11 +22,6 @@
   // we don't need to free them here.
 }
 
-MCSection *MCContext::GetSection(const StringRef &Name) const {
-  StringMap<MCSection*>::const_iterator I = Sections.find(Name);
-  return I != Sections.end() ? I->second : 0;
-}
-
 MCSymbol *MCContext::CreateSymbol(const StringRef &Name) {
   assert(Name[0] != '\0' && "Normal symbols cannot be unnamed!");
 
diff --git a/lib/MC/MCSection.cpp b/lib/MC/MCSection.cpp
index f6ac5cc..8b7fcd2 100644
--- a/lib/MC/MCSection.cpp
+++ b/lib/MC/MCSection.cpp
@@ -27,16 +27,9 @@
 
 MCSectionELF *MCSectionELF::
 Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) {
-  return new (Ctx) MCSectionELF(Name, IsDirective, K, Ctx);
+  return new (Ctx) MCSectionELF(Name, IsDirective, K);
 }
 
-MCSectionELF::MCSectionELF(const StringRef &name, bool isDirective,
-                           SectionKind K, MCContext &Ctx)
-  : MCSection(K), Name(name), IsDirective(isDirective) {
-  Ctx.SetSection(Name, this);
-}
-
-
 void MCSectionELF::PrintSwitchToSection(const TargetAsmInfo &TAI,
                                         raw_ostream &OS) const {
   if (isDirective()) {
@@ -118,16 +111,9 @@
 
 MCSectionCOFF *MCSectionCOFF::
 Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx) {
-  return new (Ctx) MCSectionCOFF(Name, IsDirective, K, Ctx);
+  return new (Ctx) MCSectionCOFF(Name, IsDirective, K);
 }
 
-MCSectionCOFF::MCSectionCOFF(const StringRef &name, bool isDirective,
-                             SectionKind K, MCContext &Ctx)
-  : MCSection(K), Name(name), IsDirective(isDirective) {
-  Ctx.SetSection(Name, this);
-}
-
-
 void MCSectionCOFF::PrintSwitchToSection(const TargetAsmInfo &TAI,
                                          raw_ostream &OS) const {
   
