except.c (can_convert_eh): Don't check template parms, typename types etc.
authorNathan Sidwell <nathan@codesourcery.com>
Fri, 27 Apr 2001 13:33:46 +0000 (13:33 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Fri, 27 Apr 2001 13:33:46 +0000 (13:33 +0000)
cp:
* except.c (can_convert_eh): Don't check template parms,
typename types etc.
testsuite:
* g++.old-deja/g++.eh/crash6.C: New test.

From-SVN: r41628

gcc/cp/ChangeLog
gcc/cp/except.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.eh/crash6.C [new file with mode: 0644]

index 7e49e69..fa97ff8 100644 (file)
@@ -1,5 +1,10 @@
 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
 
+       * except.c (can_convert_eh): Don't check template parms,
+       typename types etc.
+
+2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
+
        * optimize.c (maybe_clone_body): Copy parameter names and locations.
 
 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
index c68ea40..0a50138 100644 (file)
@@ -821,7 +821,7 @@ can_convert_eh (to, from)
       /* else fall through */
     }
 
-  if (IS_AGGR_TYPE (to) && IS_AGGR_TYPE (from)
+  if (CLASS_TYPE_P (to) && CLASS_TYPE_P (from)
       && PUBLICLY_UNIQUELY_DERIVED_P (to, from))
     return 1;
 
index d04c26c..00b94a0 100644 (file)
@@ -1,5 +1,9 @@
 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
 
+       * g++.old-deja/g++.eh/crash6.C: New test.
+
+2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
+
        * g++.old-deja/g++.other/warn7.C: New test.
 
 2001-04-27  Nathan Sidwell  <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.eh/crash6.C b/gcc/testsuite/g++.old-deja/g++.eh/crash6.C
new file mode 100644 (file)
index 0000000..1f5dcce
--- /dev/null
@@ -0,0 +1,26 @@
+// Build don't link:
+// 
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 26 April 2001 <nathan@codesourcery.com>
+// Origin: schmid@snake.iap.physik.tu-darmstadt.de
+
+// Bug 2368. When checking shadowed catchers, we didn't ignore
+// template type parms etc, leading to an ICE
+
+template<class CatchType1, class CatchType2>
+void call(int& a)
+{
+  try 
+    {
+      
+    }
+  catch (CatchType1&)
+    { 
+      
+    }
+  catch (CatchType2&)
+    { 
+      
+    }
+}
+