re PR c++/22454 (ICE with operator in default argument in template class)
authorNathan Sidwell <nathan@codesourcery.com>
Wed, 24 Aug 2005 10:21:46 +0000 (10:21 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 24 Aug 2005 10:21:46 +0000 (10:21 +0000)
cp:
PR c++/22454
* parser.c (cp_lexer_peek_nth_token): Relax assert.
testsuite:
PR c++/22454
* g++.dg/parse/crash29.C: New.

From-SVN: r103438

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/parse/crash29.C [new file with mode: 0644]

index 305cf5179c2c4a60c1961b307dbd02d4014c270a..75c4500028239f0da2b0e9042f62bded0aa583b4 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/22454
+       * parser.c (cp_lexer_peek_nth_token): Relax assert.
+
 2005-08-23  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR c++/23044
index 6eaf530b410f3e64a0cda39bbe45d690318889e0..6712f00ae82324d997e22d2164f8d2c6cf1e0914 100644 (file)
@@ -497,14 +497,15 @@ cp_lexer_peek_nth_token (cp_lexer* lexer, size_t n)
   cp_token *token;
 
   /* N is 1-based, not zero-based.  */
-  gcc_assert (n > 0 && lexer->next_token != &eof_token);
-
+  gcc_assert (n > 0);
+  
   if (cp_lexer_debugging_p (lexer))
     fprintf (cp_lexer_debug_stream,
             "cp_lexer: peeking ahead %ld at token: ", (long)n);
 
   --n;
   token = lexer->next_token;
+  gcc_assert (!n || token != &eof_token);
   while (n != 0)
     {
       ++token;
index da7441dc04ce4c565fc766c46b1a5f41393554af..e787eaa4c1c040dc39b9ee9954ad2f5a57ba4aaf 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-24  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/22454
+       * g++.dg/parse/crash29.C: New.
+
 2005-08-23  DJ Delorie  <dj@redhat.com>
 
        * gcc.c-torture/execute/stdarg-2.c (main): Make sure long
diff --git a/gcc/testsuite/g++.dg/parse/crash29.C b/gcc/testsuite/g++.dg/parse/crash29.C
new file mode 100644 (file)
index 0000000..29ede04
--- /dev/null
@@ -0,0 +1,10 @@
+// Copyright (C) 2005 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 23 Aug 2005 <nathan@codesourcery.com>
+
+// PR 22454: ICE
+// Origin: Volker Reichelt reichelt@gcc.gnu.org
+
+template<int> struct A
+{
+    A(void* = &operator new);
+};