aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2004-02-27 00:31:49 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-02-27 00:31:49 +0000
commit4d5fe28997dc77c3afeb47d400b6e62418705c34 (patch)
treed42213868857a4b33f33ee7fb955052441783705
parent93b5da76a495e2f4628307e83554df95db31d131 (diff)
downloadgcc-4d5fe28997dc77c3afeb47d400b6e62418705c34.zip
gcc-4d5fe28997dc77c3afeb47d400b6e62418705c34.tar.gz
gcc-4d5fe28997dc77c3afeb47d400b6e62418705c34.tar.bz2
re PR c++/14278 (fails when calling through a function pointer)
PR c++/14278 * parser.c (cp_parser_parameter_declaration_list): Commit to fewer tentative parses. PR c++/14278 * g++.dg/parse/comma1.C: New test. From-SVN: r78542
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/parse/comma1.C13
4 files changed, 25 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index affca567..214dc92 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14278
+ * parser.c (cp_parser_parameter_declaration_list): Commit
+ to fewer tentative parses.
+
2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/14284
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 3d6efe1..3e26c2d 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -11108,6 +11108,7 @@ cp_parser_parameter_declaration_list (cp_parser* parser)
cannot use this technique when inside a template argument
list. */
if (!parser->in_template_argument_list_p
+ && !parser->in_type_id_in_expr_p
&& cp_parser_parsing_tentatively (parser)
&& !cp_parser_committed_to_tentative_parse (parser)
/* However, a parameter-declaration of the form
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f66cd59..dda6ed7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14278
+ * g++.dg/parse/comma1.C: New test.
+
2004-02-26 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/14284
diff --git a/gcc/testsuite/g++.dg/parse/comma1.C b/gcc/testsuite/g++.dg/parse/comma1.C
new file mode 100644
index 0000000..33d222c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/comma1.C
@@ -0,0 +1,13 @@
+// PR c++/14278
+
+struct X {
+ X (int p);
+};
+
+struct A {
+ A(X);
+};
+
+void *p_fun;
+
+A a(X ((*(int (*)(int, int)) p_fun)(0, 0)));