mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-22 10:33:23 +00:00
MC/AsmParser: Add a DarwinAsmParser extension.
- Currently initialization is a bit of a hack, but harmless. We need to rework various parts of target initialization to clean this up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108165 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9d544d0416
commit
e47497087b
@ -45,6 +45,7 @@ private:
|
||||
MCStreamer &Out;
|
||||
SourceMgr &SrcMgr;
|
||||
MCAsmParserExtension *GenericParser;
|
||||
MCAsmParserExtension *PlatformParser;
|
||||
TargetAsmParser *TargetParser;
|
||||
|
||||
/// This is the current buffer index we're lexing from as managed by the
|
||||
|
@ -56,6 +56,18 @@ public:
|
||||
bool ParseDirectiveLoc(StringRef, SMLoc DirectiveLoc); // ".loc"
|
||||
};
|
||||
|
||||
/// \brief Implementation of directive handling which is shared across all
|
||||
/// Darwin targets.
|
||||
class DarwinAsmParser : public MCAsmParserExtension {
|
||||
public:
|
||||
DarwinAsmParser() {}
|
||||
|
||||
virtual void Initialize(MCAsmParser &Parser) {
|
||||
// Call the base implementation.
|
||||
this->MCAsmParserExtension::Initialize(Parser);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
enum { DEFAULT_ADDRSPACE = 0 };
|
||||
@ -63,14 +75,25 @@ enum { DEFAULT_ADDRSPACE = 0 };
|
||||
AsmParser::AsmParser(const Target &T, SourceMgr &_SM, MCContext &_Ctx,
|
||||
MCStreamer &_Out, const MCAsmInfo &_MAI)
|
||||
: Lexer(_MAI), Ctx(_Ctx), Out(_Out), SrcMgr(_SM),
|
||||
GenericParser(new GenericAsmParser), TargetParser(0), CurBuffer(0) {
|
||||
GenericParser(new GenericAsmParser), PlatformParser(0),
|
||||
TargetParser(0), CurBuffer(0) {
|
||||
Lexer.setBuffer(SrcMgr.getMemoryBuffer(CurBuffer));
|
||||
|
||||
// Initialize the generic parser.
|
||||
GenericParser->Initialize(*this);
|
||||
|
||||
// Initialize the platform / file format parser.
|
||||
//
|
||||
// FIXME: This is a hack, we need to (majorly) cleanup how these objects are
|
||||
// created.
|
||||
if (_MAI.hasSubsectionsViaSymbols()) {
|
||||
PlatformParser = new DarwinAsmParser;
|
||||
PlatformParser->Initialize(*this);
|
||||
}
|
||||
}
|
||||
|
||||
AsmParser::~AsmParser() {
|
||||
delete PlatformParser;
|
||||
delete GenericParser;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user