mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 07:17:36 +00:00
[Mips] TargetStreamer Support for .set mips16.
This patch updates .set mips16 support which affects the ELF ABI and its flags. In addition the patch uses a common interface for both the MipsTargetSteamer and MipsObjectStreamer that the assembler uses for both ELF and ASCII output for these directives. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199851 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -203,6 +203,8 @@ class MipsAsmParser : public MCTargetAsmParser {
|
||||
bool parseSetNoMacroDirective();
|
||||
bool parseSetReorderDirective();
|
||||
bool parseSetNoReorderDirective();
|
||||
bool parseSetMips16Directive();
|
||||
bool parseSetNoMips16Directive();
|
||||
|
||||
bool parseSetAssignment();
|
||||
|
||||
@@ -2341,6 +2343,30 @@ bool MipsAsmParser::parseSetNoMacroDirective() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MipsAsmParser::parseSetMips16Directive() {
|
||||
Parser.Lex();
|
||||
// If this is not the end of the statement, report an error.
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement)) {
|
||||
reportParseError("unexpected token in statement");
|
||||
return false;
|
||||
}
|
||||
getTargetStreamer().emitDirectiveSetMips16(true);
|
||||
Parser.Lex(); // Consume the EndOfStatement.
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MipsAsmParser::parseSetNoMips16Directive() {
|
||||
Parser.Lex();
|
||||
// If this is not the end of the statement, report an error.
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement)) {
|
||||
reportParseError("unexpected token in statement");
|
||||
return false;
|
||||
}
|
||||
// For now do nothing.
|
||||
Parser.Lex(); // Consume the EndOfStatement.
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MipsAsmParser::parseSetAssignment() {
|
||||
StringRef Name;
|
||||
const MCExpr *Value;
|
||||
@@ -2382,10 +2408,10 @@ bool MipsAsmParser::parseDirectiveSet() {
|
||||
return parseSetMacroDirective();
|
||||
} else if (Tok.getString() == "nomacro") {
|
||||
return parseSetNoMacroDirective();
|
||||
} else if (Tok.getString() == "mips16") {
|
||||
return parseSetMips16Directive();
|
||||
} else if (Tok.getString() == "nomips16") {
|
||||
// Ignore this directive for now.
|
||||
Parser.eatToEndOfStatement();
|
||||
return false;
|
||||
return parseSetNoMips16Directive();
|
||||
} else if (Tok.getString() == "nomicromips") {
|
||||
getTargetStreamer().emitDirectiveSetNoMicroMips();
|
||||
Parser.eatToEndOfStatement();
|
||||
|
||||
Reference in New Issue
Block a user