]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/58633 (ICE with decltype of destructor call)
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 16 Oct 2013 22:20:35 +0000 (22:20 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 16 Oct 2013 22:20:35 +0000 (22:20 +0000)
/cp
2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58633
* parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.

/testsuite
2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58633
* g++.dg/cpp0x/decltype57.C: New.
* g++.dg/cpp0x/enum18.C: Revert r174385 changes.

From-SVN: r203731

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

index 35b41c00cb5d3bc9b0ea5bda4a0f8a062632cfd5..57246b2bb884c23c4f33e7c489215ca67d8736d2 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58633
+       * parser.c (cp_parser_pseudo_destructor_name): Revert r174385 changes.
+
 2013-09-13  Jason Merrill  <jason@redhat.com>
 
        PR c++/58273
index 8f09b97a230204f802ba66e1ea2a17e3076d85bc..c230d90c63d4de0c4e1527aae2299dee5a63b702 100644 (file)
@@ -6317,10 +6317,6 @@ cp_parser_pseudo_destructor_name (cp_parser* parser,
   /* Look for the `~'.  */
   cp_parser_require (parser, CPP_COMPL, RT_COMPL);
 
-  /* Once we see the ~, this has to be a pseudo-destructor.  */
-  if (!processing_template_decl && !cp_parser_error_occurred (parser))
-    cp_parser_commit_to_tentative_parse (parser);
-
   /* Look for the type-name again.  We are not responsible for
      checking that it matches the first type-name.  */
   *type = cp_parser_nonclass_name (parser);
index 9861f9106e2d253918ec6ca77f2c3f51e71f80c4..aa8d6b13f0aaf360f340b74d1999749f1f5e73d8 100644 (file)
@@ -1,3 +1,9 @@
+2013-10-16  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58633
+       * g++.dg/cpp0x/decltype57.C: New.
+       * g++.dg/cpp0x/enum18.C: Revert r174385 changes.
+
 2013-09-23  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gnat.dg/opt28.ad[sb]: New test.
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype57.C b/gcc/testsuite/g++.dg/cpp0x/decltype57.C
new file mode 100644 (file)
index 0000000..353cc72
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/58633
+// { dg-do compile { target c++11 } }
+
+void foo(int i)
+{
+  typedef int I;
+  decltype(i.I::~I())* p;
+}
index 306ed8259f9709142b45bc22ee4b74e6cd0288a6..7361595c00e514d1ff61858b6537894fa1aab8f7 100644 (file)
@@ -4,5 +4,5 @@
 int main(void) {
   enum e {};
   e ev;
-  ev.e::~e_u();        // { dg-error "e_u. has not been declared" }
+  ev.e::~e_u();        // { dg-error "" }
 }