Fix PR7673 by allowing an empty clobbers section in an ASM statement.

llvm-svn: 109087
This commit is contained in:
Chandler Carruth 2010-07-22 07:11:21 +00:00
parent 96f2e9e418
commit 3c31aa3a44
2 changed files with 12 additions and 9 deletions

View File

@ -1367,17 +1367,19 @@ Parser::OwningStmtResult Parser::ParseAsmStatement(bool &msAsm) {
if (!AteExtraColon)
ConsumeToken();
// Parse the asm-string list for clobbers.
while (1) {
OwningExprResult Clobber(ParseAsmStringLiteral());
// Parse the asm-string list for clobbers if present.
if (Tok.isNot(tok::r_paren)) {
while (1) {
OwningExprResult Clobber(ParseAsmStringLiteral());
if (Clobber.isInvalid())
break;
if (Clobber.isInvalid())
break;
Clobbers.push_back(Clobber.release());
Clobbers.push_back(Clobber.release());
if (Tok.isNot(tok::comma)) break;
ConsumeToken();
if (Tok.isNot(tok::comma)) break;
ConsumeToken();
}
}
}

View File

@ -1,7 +1,8 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
void f1() {
asm ("ret" : : :); // expected-error {{expected string literal}}
// PR7673: Some versions of GCC support an empty clobbers section.
asm ("ret" : : :);
}
void f2() {