method.c (synthesized_method_walk): Avoid changing EH spec based on cleanups in other...
authorJason Merrill <jason@redhat.com>
Tue, 10 Jul 2012 00:03:11 +0000 (20:03 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 10 Jul 2012 00:03:11 +0000 (20:03 -0400)
* method.c (synthesized_method_walk): Avoid changing
EH spec based on cleanups in other places, too.

From-SVN: r189395

gcc/cp/ChangeLog
gcc/cp/method.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/implicit13.C

index 1afef7a..e4c5506 100644 (file)
@@ -1,3 +1,8 @@
+2012-07-10  Jason Merrill  <jason@redhat.com>
+
+       * method.c (synthesized_method_walk): Avoid changing
+       EH spec based on cleanups in other places, too.
+
 2012-07-09  Sterling Augustine  <saugustine@google.com>
 
        * error.c (lang_decl_name): Use TFF_UNQUALIFIED_NAME flag.
index 0237456..7ea2de9 100644 (file)
@@ -1315,7 +1315,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
            {
              rval = locate_fn_flags (base_binfo, complete_dtor_identifier,
                                      NULL_TREE, flags, complain);
-             process_subob_fn (rval, false, spec_p, NULL,
+             process_subob_fn (rval, false, NULL, NULL,
                                deleted_p, NULL, NULL,
                                basetype);
            }
@@ -1335,7 +1335,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
   if (ctor_p)
     walk_field_subobs (TYPE_FIELDS (ctype), complete_dtor_identifier,
                       sfk_destructor, TYPE_UNQUALIFIED, false,
-                      false, false, spec_p, NULL,
+                      false, false, NULL, NULL,
                       deleted_p, NULL,
                       NULL, flags, complain);
 
index 8f1b931..41e3c64 100644 (file)
@@ -1,3 +1,7 @@
+2012-07-10  Jason Merrill  <jason@redhat.com>
+
+       * g++.dg/cpp0x/implicit13.C: Add vbase and member tests.
+
 2012-07-09  Sterling Augustine  <saugustine@google.com>
 
        * g++.dg/debug/dwarf2/pubnames-2.C: New.
index 96bc770..3165863 100644 (file)
@@ -14,7 +14,7 @@ struct B: A { };
 // { dg-final { scan-assembler-not "_ZN1BC1Ev" } }
 B b;
 
-struct C { C() noexcept; ~C(); };
+struct C { C() noexcept; ~C() noexcept(false); };
 struct D: C { };
 extern D d;
 
@@ -22,3 +22,11 @@ void *operator new(__SIZE_TYPE__, void*) noexcept;
 
 #define SA(X) static_assert((X),#X)
 SA(noexcept(new (&d) D));
+
+struct E: virtual C { };
+extern E e;
+SA(noexcept (new (&e) E));
+
+struct F { C c; };
+extern F f;
+SA(noexcept (new (&f) F));