mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-24 07:35:04 +00:00
[ms-inline asm] Pass the length of the IDVal, so we can do a proper AsmRewrite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174999 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ab9d251e85
commit
e1d6403128
@ -444,7 +444,8 @@ private:
|
||||
bool ParseDirectiveEndr(SMLoc DirectiveLoc); // ".endr"
|
||||
|
||||
// "_emit"
|
||||
bool ParseDirectiveEmit(SMLoc DirectiveLoc, ParseStatementInfo &Info);
|
||||
bool ParseDirectiveEmit(SMLoc DirectiveLoc, ParseStatementInfo &Info,
|
||||
size_t len);
|
||||
|
||||
void initializeDirectiveKindMap();
|
||||
};
|
||||
@ -1448,7 +1449,7 @@ bool AsmParser::ParseStatement(ParseStatementInfo &Info) {
|
||||
|
||||
// _emit or __emit
|
||||
if (ParsingInlineAsm && (IDVal == "_emit" || IDVal == "__emit"))
|
||||
return ParseDirectiveEmit(IDLoc, Info);
|
||||
return ParseDirectiveEmit(IDLoc, Info, IDVal.size());
|
||||
|
||||
CheckForValidSection();
|
||||
|
||||
@ -3985,7 +3986,7 @@ bool AsmParser::ParseDirectiveEndr(SMLoc DirectiveLoc) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AsmParser::ParseDirectiveEmit(SMLoc IDLoc, ParseStatementInfo &Info) {
|
||||
bool AsmParser::ParseDirectiveEmit(SMLoc IDLoc, ParseStatementInfo &Info, size_t len) {
|
||||
const MCExpr *Value;
|
||||
SMLoc ExprLoc = getLexer().getLoc();
|
||||
if (ParseExpression(Value))
|
||||
@ -3997,7 +3998,7 @@ bool AsmParser::ParseDirectiveEmit(SMLoc IDLoc, ParseStatementInfo &Info) {
|
||||
if (!isUIntN(8, IntValue) && !isIntN(8, IntValue))
|
||||
return Error(ExprLoc, "literal value out of range for directive");
|
||||
|
||||
Info.AsmRewrites->push_back(AsmRewrite(AOK_Emit, IDLoc, 5));
|
||||
Info.AsmRewrites->push_back(AsmRewrite(AOK_Emit, IDLoc, len));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user