From 8f26d22589dd7f81d2a9f036e01a315064bbf6d0 Mon Sep 17 00:00:00 2001
From: jbeulich <jbeulich@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 12 Aug 2004 09:34:16 +0000
Subject: [PATCH] cp/ 2004-08-12 Jan Beulich <jbeulich@novell.com>

	* parser.c (cp_parser_asm_definition): Properly consume scope operator
	tokens preceding the clobbers. Don't check for scope operator
	following inputs. Simplify inputs handling to match that now used for
	clobbers.

testsuite/
2004-08-12 Jan Beulich <jbeulich@novell.com>

	* g++.dg/ext/asm5.C: New.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@85860 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/cp/ChangeLog        |  7 +++++++
 gcc/cp/parser.c         | 20 ++++++--------------
 gcc/testsuite/ChangeLog |  4 ++++
 3 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2bc5a854100f..a80e8d2bad4e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2004-08-12 Jan Beulich <jbeulich@novell.com>
+
+	* parser.c (cp_parser_asm_definition): Properly consume scope operator
+	tokens preceding the clobbers. Don't check for scope operator
+	following inputs. Simplify inputs handling to match that now used for
+	clobbers.
+
 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/16698
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index a8854dcad2d7..2193bacc3e6c 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -10367,25 +10367,18 @@ cp_parser_asm_definition (cp_parser* parser)
       /* If the next token is `::', there are no outputs, and the
 	 next token is the beginning of the inputs.  */
       else if (cp_lexer_next_token_is (parser->lexer, CPP_SCOPE))
-	{
-	  /* Consume the `::' token.  */
-	  cp_lexer_consume_token (parser->lexer);
-	  /* The inputs are coming next.  */
-	  inputs_p = true;
-	}
+	/* The inputs are coming next.  */
+	inputs_p = true;
 
       /* Look for inputs.  */
       if (inputs_p
 	  || cp_lexer_next_token_is (parser->lexer, CPP_COLON))
 	{
-	  if (!inputs_p)
-	    /* Consume the `:'.  */
-	    cp_lexer_consume_token (parser->lexer);
+	  /* Consume the `:' or `::'.  */
+	  cp_lexer_consume_token (parser->lexer);
 	  /* Parse the output-operands.  */
 	  if (cp_lexer_next_token_is_not (parser->lexer,
 					  CPP_COLON)
-	      && cp_lexer_next_token_is_not (parser->lexer,
-					     CPP_SCOPE)
 	      && cp_lexer_next_token_is_not (parser->lexer,
 					     CPP_CLOSE_PAREN))
 	    inputs = cp_parser_asm_operand_list (parser);
@@ -10398,9 +10391,8 @@ cp_parser_asm_definition (cp_parser* parser)
       if (clobbers_p
 	  || cp_lexer_next_token_is (parser->lexer, CPP_COLON))
 	{
-	  if (!clobbers_p)
-	    /* Consume the `:'.  */
-	    cp_lexer_consume_token (parser->lexer);
+	  /* Consume the `:' or `::'.  */
+	  cp_lexer_consume_token (parser->lexer);
 	  /* Parse the clobbers.  */
 	  if (cp_lexer_next_token_is_not (parser->lexer,
 					  CPP_CLOSE_PAREN))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 93a6e56c99a3..cf258754eacd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-08-12 Jan Beulich <jbeulich@novell.com>
+
+	* g++.dg/ext/asm5.C: New.
+
 2004-08-11  Mark Mitchell  <mark@codesourcery.com>
 
 	PR c++/16698
-- 
GitLab