diff options
author | Mark Mitchell <mark@codesourcery.com> | 2003-01-08 16:59:31 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2003-01-08 16:59:31 +0000 |
commit | 8caf4c38d83943bcc708ee5707e81076a16f5f43 (patch) | |
tree | 415b417ba0ff5c1625a508dad26509d303d8adb5 /gcc | |
parent | 918c4fe41e55d3968a1ce0a528a695e4256751b7 (diff) | |
download | gcc-8caf4c38d83943bcc708ee5707e81076a16f5f43.zip gcc-8caf4c38d83943bcc708ee5707e81076a16f5f43.tar.gz gcc-8caf4c38d83943bcc708ee5707e81076a16f5f43.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/parser.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ext/asm4.C | 4 |
4 files changed, 22 insertions, 3 deletions
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 <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 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 <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 0000000..2726d8e --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/asm4.C @@ -0,0 +1,4 @@ +void f () +{ + __asm__ __volatile__ ("" : : ); +} |