mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
Implement .seh_stackalloc and .seh_pushframe parsing.
I haven't implemented any of the ones that take registers yet. The problem is that for x86-64 the streamer methods expect a native x86 register number (note: %r8-%r15 want 8-15 instead of 0-7; same for %xmm8-%xmm15). I haven't figured out exactly how I want to do that yet. llvm-svn: 131899
This commit is contained in:
parent
c64a4d1170
commit
b38506e3a7
@ -256,8 +256,17 @@ bool COFFAsmParser::ParseSEHDirectiveSetFrame(StringRef, SMLoc L) {
|
||||
return Error(L, "not implemented yet");
|
||||
}
|
||||
|
||||
bool COFFAsmParser::ParseSEHDirectiveAllocStack(StringRef, SMLoc L) {
|
||||
return Error(L, "not implemented yet");
|
||||
bool COFFAsmParser::ParseSEHDirectiveAllocStack(StringRef, SMLoc) {
|
||||
int64_t Size;
|
||||
if (getParser().ParseAbsoluteExpression(Size))
|
||||
return true;
|
||||
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement))
|
||||
return TokError("unexpected token in directive");
|
||||
|
||||
Lex();
|
||||
getStreamer().EmitWin64EHAllocStack(Size);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool COFFAsmParser::ParseSEHDirectiveSaveReg(StringRef, SMLoc L) {
|
||||
@ -268,8 +277,22 @@ bool COFFAsmParser::ParseSEHDirectiveSaveXMM(StringRef, SMLoc L) {
|
||||
return Error(L, "not implemented yet");
|
||||
}
|
||||
|
||||
bool COFFAsmParser::ParseSEHDirectivePushFrame(StringRef, SMLoc L) {
|
||||
return Error(L, "not implemented yet");
|
||||
bool COFFAsmParser::ParseSEHDirectivePushFrame(StringRef, SMLoc) {
|
||||
bool Code;
|
||||
StringRef CodeID;
|
||||
SMLoc startLoc = getLexer().getLoc();
|
||||
if (!getParser().ParseIdentifier(CodeID)) {
|
||||
if (CodeID != "@code")
|
||||
return Error(startLoc, "expected @code");
|
||||
Code = true;
|
||||
}
|
||||
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement))
|
||||
return TokError("unexpected token in directive");
|
||||
|
||||
Lex();
|
||||
getStreamer().EmitWin64EHPushFrame(Code);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool COFFAsmParser::ParseSEHDirectiveEndProlog(StringRef, SMLoc) {
|
||||
|
Loading…
Reference in New Issue
Block a user