From 38cd601cf1c867604790ae0bb9308d49083b69a4 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 6 Sep 2007 03:33:46 +0000 Subject: [PATCH] PR c++/15745 * except.c (prepare_eh_type): Use type_decays_to. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128174 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/except.c | 3 +++ gcc/testsuite/g++.dg/eh/spec9.C | 19 +++++++++++++++++++ gcc/testsuite/g++.dg/ext/vla4.C | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/eh/spec9.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a32ecdb1560..6bcc3ef3cfe 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2007-09-05 Jason Merrill + PR c++/15745 + * except.c (prepare_eh_type): Use type_decays_to. + PR c++/15097 * init.c (build_delete): Use build_headof to get the address of the complete object if we aren't using the deleting destructor. diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 199d18574f0..38111b16338 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -115,6 +115,9 @@ prepare_eh_type (tree type) /* Peel off cv qualifiers. */ type = TYPE_MAIN_VARIANT (type); + /* Functions and arrays decay to pointers. */ + type = type_decays_to (type); + return type; } diff --git a/gcc/testsuite/g++.dg/eh/spec9.C b/gcc/testsuite/g++.dg/eh/spec9.C new file mode 100644 index 00000000000..9e00d1c7535 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/spec9.C @@ -0,0 +1,19 @@ +// PR c++/15745 +// { dg-do run } + +typedef int IntArray[10]; +IntArray i; + +void test_array() throw (IntArray) +{ + throw i; +} + +int main () +{ + try + { + test_array(); + } + catch (IntArray) {} +} diff --git a/gcc/testsuite/g++.dg/ext/vla4.C b/gcc/testsuite/g++.dg/ext/vla4.C index 8b7f38f8ba8..ecec908074d 100644 --- a/gcc/testsuite/g++.dg/ext/vla4.C +++ b/gcc/testsuite/g++.dg/ext/vla4.C @@ -7,7 +7,7 @@ void f(int i) { try { int a[i]; throw &a; // { dg-error "variable size" } - } catch (int (&)[i]) { // { dg-error "variable size" } + } catch (int (*)[i]) { // { dg-error "variable size" } } } -- 2.11.4.GIT