diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index cb78daa5d5537d0eec6e8a2ff75a7851c5ded468..858246061be0368bd10ed8936e385784d4815cfe 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
+
+	* parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
+	declaration and code.  Update copyright year.
+
 2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
 
 	PR c++/34399
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 6462f35aaf8cb827287610f0ece0a1c9a2128a55..e66144812902b2a48575f764d9e2829832b5459f 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -1,6 +1,6 @@
 /* C++ Parser.
    Copyright (C) 2000, 2001, 2002, 2003, 2004,
-   2005, 2007  Free Software Foundation, Inc.
+   2005, 2007, 2008  Free Software Foundation, Inc.
    Written by Mark Mitchell <mark@codesourcery.com>.
 
    This file is part of GCC.
@@ -9318,6 +9318,7 @@ cp_parser_template_parameter (cp_parser* parser, bool *is_non_type,
 {
   cp_token *token;
   cp_parameter_declarator *parameter_declarator;
+  cp_declarator *id_declarator;
   tree parm;
 
   /* Assume it is a type parameter or a template parameter.  */
@@ -9408,7 +9409,7 @@ cp_parser_template_parameter (cp_parser* parser, bool *is_non_type,
 	  cp_lexer_consume_token (parser->lexer);
 
 	  /* Find the name of the parameter pack.  */     
-	  cp_declarator *id_declarator = parameter_declarator->declarator;
+	  id_declarator = parameter_declarator->declarator;
 	  while (id_declarator && id_declarator->kind != cdk_id)
 	    id_declarator = id_declarator->declarator;