From f2050a0c6dd2af28d84878f535107b4310981e0c Mon Sep 17 00:00:00 2001 From: mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 8 Jan 2003 16:59:31 +0000 Subject: [PATCH] * parser.c (cp_parser_asm_definition): Correct handling of omitted operands. * g++.dg/ext/asm4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61048 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/parser.c | 12 +++++++++--- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/g++.dg/ext/asm4.C | 4 ++++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/asm4.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 26207b7a3736..c1992227e76e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-01-07 Mark Mitchell <mark@codesourcery.com> + + * parser.c (cp_parser_asm_definition): Correct handling of omitted + operands. + 2003-01-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> PR c++/9030 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index e9b41e4a0178..f5ada05c0e49 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -9592,7 +9592,9 @@ cp_parser_asm_definition (parser) if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON) && cp_lexer_next_token_is_not (parser->lexer, - CPP_SCOPE)) + CPP_SCOPE) + && cp_lexer_next_token_is_not (parser->lexer, + CPP_CLOSE_PAREN)) outputs = cp_parser_asm_operand_list (parser); } /* If the next token is `::', there are no outputs, and the @@ -9616,7 +9618,9 @@ cp_parser_asm_definition (parser) if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON) && cp_lexer_next_token_is_not (parser->lexer, - CPP_SCOPE)) + CPP_SCOPE) + && cp_lexer_next_token_is_not (parser->lexer, + CPP_CLOSE_PAREN)) inputs = cp_parser_asm_operand_list (parser); } else if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE)) @@ -9631,7 +9635,9 @@ cp_parser_asm_definition (parser) /* Consume the `:'. */ cp_lexer_consume_token (parser->lexer); /* Parse the clobbers. */ - clobbers = cp_parser_asm_clobber_list (parser); + if (cp_lexer_next_token_is_not (parser->lexer, + CPP_CLOSE_PAREN)) + clobbers = cp_parser_asm_clobber_list (parser); } } /* Look for the closing `)'. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 848423d59d3a..4852fd235129 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-01-07 Mark Mitchell <mark@codesourcery.com> + + * g++.dg/ext/asm4.C: New test. + 2003-01-08 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> PR c++/9030 diff --git a/gcc/testsuite/g++.dg/ext/asm4.C b/gcc/testsuite/g++.dg/ext/asm4.C new file mode 100644 index 000000000000..2726d8e42073 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm4.C @@ -0,0 +1,4 @@ +void f () +{ + __asm__ __volatile__ ("" : : ); +} -- GitLab