diff options
author | Jason Merrill <jason@redhat.com> | 2020-03-10 17:31:33 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2020-03-10 22:01:03 -0400 |
commit | 481fcfe6fec156ca2a6baea4b623076e2eefa6a6 (patch) | |
tree | e8c94ae808cfe7717547a95214c6c4057d0dc1de /gcc | |
parent | df15a82804e1f7f4a7432670b33387779de46549 (diff) | |
download | gcc-481fcfe6fec156ca2a6baea4b623076e2eefa6a6.zip gcc-481fcfe6fec156ca2a6baea4b623076e2eefa6a6.tar.gz gcc-481fcfe6fec156ca2a6baea4b623076e2eefa6a6.tar.bz2 |
c++: Fix deferred noexcept on constructor [PR93901].
My change in r10-4394 to only update clones when we actually instantiate a
deferred noexcept-spec broke this because deferred parsing updates the
primary function but not the clones. For GCC 10, let's just revert it.
gcc/cp/ChangeLog
2020-03-10 Jason Merrill <jason@redhat.com>
PR c++/93901
* pt.c (maybe_instantiate_noexcept): Always update clones.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 14 |
2 files changed, 12 insertions, 7 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b60b1ec..9e0b488 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2020-03-10 Jason Merrill <jason@redhat.com> + PR c++/93901 + * pt.c (maybe_instantiate_noexcept): Always update clones. + +2020-03-10 Jason Merrill <jason@redhat.com> + PR c++/93956 * pt.c (maybe_aggr_guide): Check BRACE_ENCLOSED_INITIALIZER_P. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 179716b..cb237ba 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -25097,14 +25097,14 @@ maybe_instantiate_noexcept (tree fn, tsubst_flags_t complain) TREE_TYPE (fn) = build_exception_variant (fntype, spec); if (orig_fn) TREE_TYPE (orig_fn) = TREE_TYPE (fn); + } - FOR_EACH_CLONE (clone, fn) - { - if (TREE_TYPE (clone) == fntype) - TREE_TYPE (clone) = TREE_TYPE (fn); - else - TREE_TYPE (clone) = build_exception_variant (TREE_TYPE (clone), spec); - } + FOR_EACH_CLONE (clone, fn) + { + if (TREE_TYPE (clone) == fntype) + TREE_TYPE (clone) = TREE_TYPE (fn); + else + TREE_TYPE (clone) = build_exception_variant (TREE_TYPE (clone), spec); } return true; |