aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2012-07-09 20:03:11 -0400
committerJason Merrill <jason@gcc.gnu.org>2012-07-09 20:03:11 -0400
commit60b9991b6105eeba6f825a2d300a9c35d2bfdf81 (patch)
tree14d19b79aa29ba20b29c6dfda51f0a42337039b1 /gcc
parent83d88a6dd16bc8414522b09481a6479662ead0fd (diff)
downloadgcc-60b9991b6105eeba6f825a2d300a9c35d2bfdf81.zip
gcc-60b9991b6105eeba6f825a2d300a9c35d2bfdf81.tar.gz
gcc-60b9991b6105eeba6f825a2d300a9c35d2bfdf81.tar.bz2
method.c (synthesized_method_walk): Avoid changing EH spec based on cleanups in other places, too.
* method.c (synthesized_method_walk): Avoid changing EH spec based on cleanups in other places, too. From-SVN: r189395
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/method.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/implicit13.C10
4 files changed, 20 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1afef7a..e4c5506 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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.
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 0237456..7ea2de9 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 8f1b931..41e3c64 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit13.C b/gcc/testsuite/g++.dg/cpp0x/implicit13.C
index 96bc770..3165863 100644
--- a/gcc/testsuite/g++.dg/cpp0x/implicit13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit13.C
@@ -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));