]> gcc.gnu.org Git - gcc.git/commitdiff
re PR c++/57673 (pack sizeof ... groups ellipsis with preceding expression)
authorPaolo Carlini <paolo.carlini@oracle.com>
Tue, 30 Jul 2013 22:38:52 +0000 (22:38 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Tue, 30 Jul 2013 22:38:52 +0000 (22:38 +0000)
/cp
2013-07-30  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/57673
* parser.c (cp_parser_cache_defarg): In an NSDMI don't stop when
token->type == CPP_ELLIPSIS.

/testsuite
2013-07-30  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/57673
* g++.dg/cpp0x/nsdmi-sizeof.C: New.

From-SVN: r201354

gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/nsdmi-sizeof.C [new file with mode: 0644]

index b0c9dcd6448bf8beb1e00d2bdeecd8984cc079a5..cc2cc541c676df601b6c5f8ce7b96cf9b6339126 100644 (file)
@@ -1,3 +1,9 @@
+2013-07-30  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/57673
+       * parser.c (cp_parser_cache_defarg): In an NSDMI don't stop when
+       token->type == CPP_ELLIPSIS.
+
 2013-07-30  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/57947
index 56a017fdb7ef5f8ea8023705ee5db542529d4441..7f4ad1c7dbaf64a5f01a16eaa9d384b877fde1e4 100644 (file)
@@ -24145,7 +24145,9 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi)
        case CPP_SEMICOLON:
        case CPP_CLOSE_BRACE:
        case CPP_CLOSE_SQUARE:
-         if (depth == 0)
+         if (depth == 0
+             /* Handle correctly int n = sizeof ... ( p );  */
+             && !(nsdmi && token->type == CPP_ELLIPSIS))
            done = true;
          /* Update DEPTH, if necessary.  */
          else if (token->type == CPP_CLOSE_PAREN
index 22e1a1fd7f4538eb30b791a399ab83f69ed03455..905518d168d92da7b9c9b678a6350ed3ad7d8af9 100644 (file)
@@ -1,3 +1,8 @@
+2013-07-30  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/57673
+       * g++.dg/cpp0x/nsdmi-sizeof.C: New.
+
 2013-07-30  Steve Ellcey  <sellcey@mips.com>
 
        * gcc.target/mips/code-readable-1.c: Increase switch size.
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-sizeof.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-sizeof.C
new file mode 100644 (file)
index 0000000..fac979b
--- /dev/null
@@ -0,0 +1,7 @@
+// PR c++/57673
+// { dg-do compile { target c++11 } }
+
+template< int ... p >
+struct d {
+  int n = sizeof ... ( p );
+};
This page took 0.115781 seconds and 5 git commands to generate.