]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/24580 (virtual base class cause exception not to be caught)
authorJason Merrill <jason@redhat.com>
Wed, 16 Nov 2005 20:27:26 +0000 (15:27 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 16 Nov 2005 20:27:26 +0000 (15:27 -0500)
        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

gcc/cp/ChangeLog
gcc/cp/method.c

index 7913b5fca257d2c08ce2748de5257eb3cbb944cb..95b6845ce390c0a928e866b058cd8e60b95de6c1 100644 (file)
@@ -1,3 +1,10 @@
+2005-11-15  Jason Merrill  <jason@redhat.com>
+
+       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  <reichelt@igpm.rwth-aachen.de>
 
        Backport from mainline:
index 6e7f5d8c110088c2ce4917533ee576ef5a52ff35..9f3e72e9cf730f31dbe1fa289937ee224b79e947 100644 (file)
@@ -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));