aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2020-03-10 17:31:33 -0400
committerJason Merrill <jason@redhat.com>2020-03-10 22:01:03 -0400
commit481fcfe6fec156ca2a6baea4b623076e2eefa6a6 (patch)
treee8c94ae808cfe7717547a95214c6c4057d0dc1de /gcc
parentdf15a82804e1f7f4a7432670b33387779de46549 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/pt.c14
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;