diff options
author | Charles Davis <cdavis@mines.edu> | 2011-05-25 04:08:15 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2011-05-25 04:08:15 +0000 |
commit | b0c4f3917319dc1505de0496c788db38f44af0a6 (patch) | |
tree | d41ff8e14ab266bbd73a90ced72124ac09f0372d /llvm/lib/MC/MCParser/COFFAsmParser.cpp | |
parent | c1ee12c95296bd82f5f27c7a3d3a5fdc43cce6a5 (diff) | |
download | bcm5719-llvm-b0c4f3917319dc1505de0496c788db38f44af0a6.tar.gz bcm5719-llvm-b0c4f3917319dc1505de0496c788db38f44af0a6.zip |
Add a test for .seh_pushframe parsing. Fix the bug exposed by it (and another
one I found by inspection).
llvm-svn: 132037
Diffstat (limited to 'llvm/lib/MC/MCParser/COFFAsmParser.cpp')
-rw-r--r-- | llvm/lib/MC/MCParser/COFFAsmParser.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/llvm/lib/MC/MCParser/COFFAsmParser.cpp b/llvm/lib/MC/MCParser/COFFAsmParser.cpp index fa7ae5cf148..540df377bbd 100644 --- a/llvm/lib/MC/MCParser/COFFAsmParser.cpp +++ b/llvm/lib/MC/MCParser/COFFAsmParser.cpp @@ -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)) |