mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-07 01:38:26 +00:00
Add a test for .seh_pushframe parsing. Fix the bug exposed by it (and another
one I found by inspection). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132037 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fc2bb8c444
commit
47268164f3
@ -343,13 +343,16 @@ bool COFFAsmParser::ParseSEHDirectiveSaveXMM(StringRef, SMLoc L) {
|
||||
}
|
||||
|
||||
bool COFFAsmParser::ParseSEHDirectivePushFrame(StringRef, SMLoc) {
|
||||
bool Code;
|
||||
bool Code = false;
|
||||
StringRef CodeID;
|
||||
SMLoc startLoc = getLexer().getLoc();
|
||||
if (!getParser().ParseIdentifier(CodeID)) {
|
||||
if (CodeID != "@code")
|
||||
return Error(startLoc, "expected @code");
|
||||
Code = true;
|
||||
if (getLexer().is(AsmToken::At)) {
|
||||
SMLoc startLoc = getLexer().getLoc();
|
||||
Lex();
|
||||
if (!getParser().ParseIdentifier(CodeID)) {
|
||||
if (CodeID != "code")
|
||||
return Error(startLoc, "expected @code");
|
||||
Code = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (getLexer().isNot(AsmToken::EndOfStatement))
|
||||
|
@ -1,6 +1,7 @@
|
||||
# RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s
|
||||
|
||||
# CHECK: .seh_proc func
|
||||
# CHECK: .seh_pushframe @code
|
||||
# CHECK: .seh_stackalloc 24
|
||||
# CHECK: .seh_endprologue
|
||||
# CHECK: .seh_handler __C_specific_handler, @except
|
||||
@ -11,6 +12,7 @@
|
||||
.def func; .scl 2; .type 32; .endef
|
||||
.seh_proc func
|
||||
func:
|
||||
.seh_pushframe @code
|
||||
subq $24, %rsp
|
||||
.seh_stackalloc 24
|
||||
.seh_endprologue
|
||||
|
Loading…
x
Reference in New Issue
Block a user