We are using the following patch from Fabien in our tree to fix
a rejects-valid bug quite appearant in our own codebase.

Re-bootstrap and regtest on the branch head currently running,
ok if that succeeds?

Thanks,
Richard.

2012-06-04  Fabien Chêne  <fab...@gcc.gnu.org>

        PR c++/52841
        * parser.c (cp_parser_alias_declaration): Return earlier
        if an error occured.

        * g++.dg/cpp0x/pr52841.C: New testcase.

Index: gcc/cp/parser.c
===================================================================
--- gcc/cp/parser.c     (revision 186200)
+++ gcc/cp/parser.c     (working copy)
@@ -15072,6 +15072,9 @@ cp_parser_alias_declaration (cp_parser*
 
   cp_parser_require (parser, CPP_EQ, RT_EQ);
 
+  if (cp_parser_error_occurred (parser))
+    return error_mark_node;
+
   /* Now we are going to parse the type-id of the declaration.  */
 
   /*
Index: gcc/testsuite/g++.dg/cpp0x/pr52841.C
===================================================================
--- gcc/testsuite/g++.dg/cpp0x/pr52841.C        (revision 0)
+++ gcc/testsuite/g++.dg/cpp0x/pr52841.C        (revision 0)
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+struct Solvable;
+namespace sat
+{
+  class Solvable
+    {
+  public:
+      typedef bool bool_type;
+    };
+}
+
+class Resolvable : public sat::Solvable
+{
+public:
+  using sat::Solvable::bool_type;
+};

Reply via email to