From 8caf4c38d83943bcc708ee5707e81076a16f5f43 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 8 Jan 2003 16:59:31 +0000 Subject: parser.c (cp_parser_asm_definition): Correct handling of omitted operands. * parser.c (cp_parser_asm_definition): Correct handling of omitted operands. * g++.dg/ext/asm4.C: New test. From-SVN: r61048 --- 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 (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 26207b7..c199222 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-01-07 Mark Mitchell + + * parser.c (cp_parser_asm_definition): Correct handling of omitted + operands. + 2003-01-08 Kriang Lerdsuwanakij PR c++/9030 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index e9b41e4..f5ada05 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 848423d..4852fd2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-01-07 Mark Mitchell + + * g++.dg/ext/asm4.C: New test. + 2003-01-08 Kriang Lerdsuwanakij 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 0000000..2726d8e --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm4.C @@ -0,0 +1,4 @@ +void f () +{ + __asm__ __volatile__ ("" : : ); +} -- cgit v1.1