Add a test for .seh_pushframe parsing. Fix the bug exposed by it (and another

one I found by inspection).

llvm-svn: 132037
This commit is contained in:
Charles Davis 2011-05-25 04:08:15 +00:00
parent c1ee12c952
commit b0c4f39173
2 changed files with 11 additions and 6 deletions

View File

@ -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))

View File

@ -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