summaryrefslogtreecommitdiffstats
path: root/include/llvm/MC/MCSection.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-31 17:02:00 +0000
committerChris Lattner <sabre@nondot.org>2009-07-31 17:02:00 +0000
commited47a0409b187d5dcd2bddfd054326fc809d00ae (patch)
tree1eb72cbdff0013882e33b1981147868c8613ef5c /include/llvm/MC/MCSection.h
parent23b6ecffe1ee5992cc1e057850bb1f36bc237ac0 (diff)
downloadexternal_llvm-ed47a0409b187d5dcd2bddfd054326fc809d00ae.zip
external_llvm-ed47a0409b187d5dcd2bddfd054326fc809d00ae.tar.gz
external_llvm-ed47a0409b187d5dcd2bddfd054326fc809d00ae.tar.bz2
split MCSection stuff out to its own .cpp file, add a new
MCSectionWithKind subclass of MCSection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77684 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC/MCSection.h')
-rw-r--r--include/llvm/MC/MCSection.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h
index 024bc6c..3223858 100644
--- a/include/llvm/MC/MCSection.h
+++ b/include/llvm/MC/MCSection.h
@@ -17,24 +17,45 @@
#include <string>
#include "llvm/ADT/StringRef.h"
-namespace llvm {
+// FIXME: HORRIBLE HACK: major layering violation to get an enum.
+#include "llvm/Target/TargetLoweringObjectFile.h"
+namespace llvm {
+ class MCContext;
+
/// MCSection - Instances of this class represent a uniqued identifier for a
/// section in the current translation unit. The MCContext class uniques and
/// creates these.
class MCSection {
std::string Name;
- private:
MCSection(const MCSection&); // DO NOT IMPLEMENT
void operator=(const MCSection&); // DO NOT IMPLEMENT
- MCSection(const StringRef &_Name, MCContext &Ctx);
+ protected:
+ MCSection(const StringRef &Name, MCContext &Ctx);
public:
+ virtual ~MCSection();
- static MCSection *Create(const StringRef &_Name, MCContext &Ctx);
+ static MCSection *Create(const StringRef &Name, MCContext &Ctx);
const std::string &getName() const { return Name; }
};
+ /// MCSectionWithKind - This is used by targets that use the SectionKind enum
+ /// to classify their sections.
+ class MCSectionWithKind : public MCSection {
+ SectionKind Kind;
+ MCSectionWithKind(const StringRef &Name, SectionKind K, MCContext &Ctx)
+ : MCSection(Name, Ctx), Kind(K) {}
+ public:
+
+ static MCSectionWithKind *Create(const StringRef &Name, SectionKind K,
+ MCContext &Ctx);
+
+ SectionKind getKind() const { return Kind; }
+ };
+
+
+
} // end namespace llvm
#endif