diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 26207b7a3736ce8f1933c9976efae612ba5b2c4e..c1992227e76e9ceaf97578304016d8bc0fbc282d 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 e9b41e4a0178338f3c70e1ddeab2225c7902a5e4..f5ada05c0e4925e4697532284e43af28affb5920 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 848423d59d3a28b8ca5913ab88c4b7f124fe1efb..4852fd235129a40125ca8571a059b3e48e4e92fa 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 0000000000000000000000000000000000000000..2726d8e42073f2356b13a55647c7dc7e6f9b9891 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm4.C @@ -0,0 +1,4 @@ +void f () +{ + __asm__ __volatile__ ("" : : ); +}