diff options
author | Jason Merrill <jason@redhat.com> | 2014-10-10 22:26:33 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-10-10 22:26:33 -0400 |
commit | 51115027530f64fe29b5c755a161581658a32c38 (patch) | |
tree | b2ac8f947c880b8f62ab85ef2a928b7a19efe354 /gcc | |
parent | b9a6ba678efb79a3a84deae3e4f22678bb55c31f (diff) | |
download | gcc-51115027530f64fe29b5c755a161581658a32c38.zip gcc-51115027530f64fe29b5c755a161581658a32c38.tar.gz gcc-51115027530f64fe29b5c755a161581658a32c38.tar.bz2 |
re PR c++/63194 (ICE in maybe_explain_implicit_delete, at cp/method.c:1552)
PR c++/63194
* method.c (defaulted_late_check): Call maybe_instantiate_noexcept.
From-SVN: r216114
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/method.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/noexcept25.C | 12 |
3 files changed, 16 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3e2ab6e..acdb354 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-10-10 Jason Merrill <jason@redhat.com> + PR c++/63194 + * method.c (defaulted_late_check): Call maybe_instantiate_noexcept. + * method.c (implicitly_declare_fn): Handle deleted lambda default ctor and copy assop here. * class.c (check_bases_and_members): Not here. diff --git a/gcc/cp/method.c b/gcc/cp/method.c index dce2d2b..418ed88 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1979,6 +1979,7 @@ defaulted_late_check (tree fn) is explicitly defaulted on its first declaration, (...) it is implicitly considered to have the same exception-specification as if it had been implicitly declared. */ + maybe_instantiate_noexcept (fn); tree fn_spec = TYPE_RAISES_EXCEPTIONS (TREE_TYPE (fn)); if (!fn_spec) { diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept25.C b/gcc/testsuite/g++.dg/cpp0x/noexcept25.C new file mode 100644 index 0000000..e79b786 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/noexcept25.C @@ -0,0 +1,12 @@ +// PR c++/63194 +// { dg-do compile { target c++11 } } + +template <int> +class A { + public: + A() noexcept(noexcept(0)) = default; +}; +class B { + A<0> m_points; +}; +void fn1(A<0>, A<0>) { B(); } |