sink the 'name' and 'isdirective' state out of MCSection into its derived classes.
This totally optimizes PIC16 sections by not having an 'isdirective' bit anymore!! ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78517 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PIC16/PIC16Section.h b/lib/Target/PIC16/PIC16Section.h
index 4c2ae05..f69cc2c 100644
--- a/lib/Target/PIC16/PIC16Section.h
+++ b/lib/Target/PIC16/PIC16Section.h
@@ -15,27 +15,23 @@
 #define LLVM_PIC16SECTION_H
 
 #include "llvm/MC/MCSection.h"
-#include "llvm/MC/MCContext.h"
-#include "llvm/Support/raw_ostream.h"
 
 namespace llvm {
 
   class MCSectionPIC16 : public MCSection {
-    MCSectionPIC16(const StringRef &Name, bool IsDirective, SectionKind K,
-                 MCContext &Ctx) : MCSection(Name, IsDirective, K, Ctx) {}
+    std::string Name;
+    
+    MCSectionPIC16(const StringRef &name, SectionKind K,
+                   MCContext &Ctx);
   public:
     
-    static MCSectionPIC16 *Create(const StringRef &Name, bool IsDirective, 
-                                  SectionKind K, MCContext &Ctx) {
-      return new (Ctx) MCSectionPIC16(Name, IsDirective, K, Ctx);
-    }
+    const std::string &getName() const { return Name; }
     
+    static MCSectionPIC16 *Create(const StringRef &Name, 
+                                  SectionKind K, MCContext &Ctx);
     
     virtual void PrintSwitchToSection(const TargetAsmInfo &TAI,
-                                      raw_ostream &OS) const {
-      OS << getName() << '\n';
-    }
-
+                                      raw_ostream &OS) const;
   };
 
 } // end namespace llvm