From: Jason Merrill Date: Wed, 16 Nov 2005 20:27:26 +0000 (-0500) Subject: re PR c++/24580 (virtual base class cause exception not to be caught) X-Git-Tag: releases/gcc-3.4.5~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=61b542e1c9661bbe9ee737b19ba453c217390d66;p=thirdparty%2Fgcc.git re PR c++/24580 (virtual base class cause exception not to be caught) PR c++/24580 * method.c (locate_copy): Also use skip_artificial_parms here. (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking for RECORD_TYPE. From-SVN: r107099 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7913b5fca257..95b6845ce390 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2005-11-15 Jason Merrill + + PR c++/24580 + * method.c (locate_copy): Also use skip_artificial_parms here. + (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking + for RECORD_TYPE. + 2005-11-16 Volker Reichelt Backport from mainline: diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 6e7f5d8c1100..9f3e72e9cf73 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -851,7 +851,7 @@ synthesize_exception_spec (tree type, tree (*extractor) (tree, void*), continue; while (TREE_CODE (type) == ARRAY_TYPE) type = TREE_TYPE (type); - if (TREE_CODE (type) != RECORD_TYPE) + if (!CLASS_TYPE_P (type)) continue; fn = (*extractor) (type, client); @@ -942,7 +942,7 @@ locate_copy (tree type, void *client_) int excess; int quals; - parms = TREE_CHAIN (parms); + parms = skip_artificial_parms_for (fn, parms); if (!parms) continue; src_type = non_reference (TREE_VALUE (parms));