diff options
author | Fabien Chêne <fabien@gcc.gnu.org> | 2011-05-09 19:42:21 +0200 |
---|---|---|
committer | Fabien Chêne <fabien@gcc.gnu.org> | 2011-05-09 19:42:21 +0200 |
commit | 1c682d060b721d35ce3438e5d184a148e91599c9 (patch) | |
tree | e39462e9bc904dc0a764e8e128f8aae151b6ccc4 | |
parent | 03808d178a46df619f8470211c4cff9946a51fd4 (diff) | |
download | gcc-1c682d060b721d35ce3438e5d184a148e91599c9.zip gcc-1c682d060b721d35ce3438e5d184a148e91599c9.tar.gz gcc-1c682d060b721d35ce3438e5d184a148e91599c9.tar.bz2 |
Fix PR C++/48859
From-SVN: r173583
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/init.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/init/pr48859.C | 14 |
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4c4036a..04096de 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-05-07 Fabien Chêne <fabien@gcc.gnu.org> + + PR c++/48859 + * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the + recursion if there is user defined constructor. + 2011-05-09 Jason Merrill <jason@redhat.com> PR c++/34772 diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 7a7379e..3eb804d 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1915,6 +1915,9 @@ diagnose_uninitialized_cst_or_ref_member_1 (tree type, tree origin, field_type = strip_array_types (TREE_TYPE (field)); + if (type_has_user_provided_constructor (field_type)) + continue; + if (TREE_CODE (field_type) == REFERENCE_TYPE) { ++ error_count; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b30addc..04885cd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-05-07 Fabien Chêne <fabien@gcc.gnu.org> + PR c++/48859 + * g++.dg/init/pr48859.C: New. + 2011-05-09 Jason Merrill <jason@redhat.com> * gcc.dg/gcc.dg/uninit-D.c: Move to c-c++-common. diff --git a/gcc/testsuite/g++.dg/init/pr48859.C b/gcc/testsuite/g++.dg/init/pr48859.C new file mode 100644 index 0000000..8ef5c2e --- /dev/null +++ b/gcc/testsuite/g++.dg/init/pr48859.C @@ -0,0 +1,14 @@ +// PR c++/48859 +// { dg-do compile } + +struct HasConstructor { + HasConstructor() {} +}; + +class ConstMember { + const HasConstructor empty_; +}; + +void foo() { + new ConstMember; +} |