diff options
Diffstat (limited to 'include/llvm/MC/MCSection.h')
| -rw-r--r-- | include/llvm/MC/MCSection.h | 41 | 
1 files changed, 15 insertions, 26 deletions
diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h index e9c19fce20aa..808767c8da62 100644 --- a/include/llvm/MC/MCSection.h +++ b/include/llvm/MC/MCSection.h @@ -17,6 +17,7 @@  #include <string>  #include "llvm/ADT/StringRef.h"  #include "llvm/MC/SectionKind.h" +#include "llvm/Support/Casting.h"  namespace llvm {    class MCContext; @@ -27,15 +28,27 @@ namespace llvm {    /// section in the current translation unit.  The MCContext class uniques and    /// creates these.    class MCSection { +  public: +    enum SectionVariant { +      SV_COFF = 0, +      SV_ELF, +      SV_MachO, +      SV_PIC16 +    }; + +  private:      MCSection(const MCSection&);      // DO NOT IMPLEMENT      void operator=(const MCSection&); // DO NOT IMPLEMENT    protected: -    MCSection(SectionKind K) : Kind(K) {} +    MCSection(SectionVariant V, SectionKind K) : Variant(V), Kind(K) {} +    SectionVariant Variant;      SectionKind Kind;    public:      virtual ~MCSection();      SectionKind getKind() const { return Kind; } + +    SectionVariant getVariant() const { return Variant; }      virtual void PrintSwitchToSection(const MCAsmInfo &MAI,                                        raw_ostream &OS) const = 0; @@ -47,32 +60,8 @@ namespace llvm {      virtual bool isBaseAddressKnownZero() const {        return false;      } -  }; - -  class MCSectionCOFF : public MCSection { -    // The memory for this string is stored in the same MCContext as *this. -    StringRef Name; -     -    /// IsDirective - This is true if the section name is a directive, not -    /// something that should be printed with ".section". -    /// -    /// FIXME: This is a hack.  Switch to a semantic view of the section instead -    /// of a syntactic one. -    bool IsDirective; -     -    MCSectionCOFF(StringRef name, bool isDirective, SectionKind K) -      : MCSection(K), Name(name), IsDirective(isDirective) { -    } -  public: -     -    static MCSectionCOFF *Create(StringRef Name, bool IsDirective,  -                                 SectionKind K, MCContext &Ctx); -    StringRef getName() const { return Name; } -    bool isDirective() const { return IsDirective; } -     -    virtual void PrintSwitchToSection(const MCAsmInfo &MAI, -                                      raw_ostream &OS) const; +    static bool classof(const MCSection *) { return true; }    };  } // end namespace llvm  | 
