mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-01 01:30:36 +00:00
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
This commit is contained in:
parent
23b6ecffe1
commit
ed47a0409b
@ -17,24 +17,45 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include "llvm/ADT/StringRef.h"
|
#include "llvm/ADT/StringRef.h"
|
||||||
|
|
||||||
|
// FIXME: HORRIBLE HACK: major layering violation to get an enum.
|
||||||
|
#include "llvm/Target/TargetLoweringObjectFile.h"
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
class MCContext;
|
||||||
|
|
||||||
/// MCSection - Instances of this class represent a uniqued identifier for a
|
/// MCSection - Instances of this class represent a uniqued identifier for a
|
||||||
/// section in the current translation unit. The MCContext class uniques and
|
/// section in the current translation unit. The MCContext class uniques and
|
||||||
/// creates these.
|
/// creates these.
|
||||||
class MCSection {
|
class MCSection {
|
||||||
std::string Name;
|
std::string Name;
|
||||||
private:
|
|
||||||
MCSection(const MCSection&); // DO NOT IMPLEMENT
|
MCSection(const MCSection&); // DO NOT IMPLEMENT
|
||||||
void operator=(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:
|
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; }
|
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
|
} // end namespace llvm
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3,6 +3,7 @@ add_llvm_library(LLVMMC
|
|||||||
MCAsmParser.cpp
|
MCAsmParser.cpp
|
||||||
MCAsmStreamer.cpp
|
MCAsmStreamer.cpp
|
||||||
MCContext.cpp
|
MCContext.cpp
|
||||||
|
MCSection.cpp
|
||||||
MCStreamer.cpp
|
MCStreamer.cpp
|
||||||
TargetAsmParser.cpp
|
TargetAsmParser.cpp
|
||||||
)
|
)
|
||||||
|
@ -25,18 +25,6 @@ MCSection *MCContext::GetSection(const StringRef &Name) const {
|
|||||||
return I != Sections.end() ? I->second : 0;
|
return I != Sections.end() ? I->second : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MCSection::MCSection(const StringRef &_Name, MCContext &Ctx) : Name(_Name) {
|
|
||||||
MCSection *&Entry = Ctx.Sections[Name];
|
|
||||||
assert(Entry == 0 && "Multiple sections with the same name created");
|
|
||||||
Entry = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
MCSection *MCSection::Create(const StringRef &Name, MCContext &Ctx) {
|
|
||||||
return new (Ctx) MCSection(Name, Ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
MCSymbol *MCContext::CreateSymbol(const StringRef &Name) {
|
MCSymbol *MCContext::CreateSymbol(const StringRef &Name) {
|
||||||
assert(Name[0] != '\0' && "Normal symbols cannot be unnamed!");
|
assert(Name[0] != '\0' && "Normal symbols cannot be unnamed!");
|
||||||
|
|
||||||
|
31
lib/MC/MCSection.cpp
Normal file
31
lib/MC/MCSection.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
//===- lib/MC/MCSection.cpp - Machine Code Section Representation ---------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "llvm/MC/MCSection.h"
|
||||||
|
#include "llvm/MC/MCContext.h"
|
||||||
|
using namespace llvm;
|
||||||
|
|
||||||
|
MCSection::~MCSection() {
|
||||||
|
}
|
||||||
|
|
||||||
|
MCSection::MCSection(const StringRef &N, MCContext &Ctx) : Name(N) {
|
||||||
|
MCSection *&Entry = Ctx.Sections[Name];
|
||||||
|
assert(Entry == 0 && "Multiple sections with the same name created");
|
||||||
|
Entry = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
MCSection *MCSection::Create(const StringRef &Name, MCContext &Ctx) {
|
||||||
|
return new (Ctx) MCSection(Name, Ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MCSectionWithKind *
|
||||||
|
MCSectionWithKind::Create(const StringRef &Name, SectionKind K, MCContext &Ctx){
|
||||||
|
return new (Ctx) MCSectionWithKind(Name, K, Ctx);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user