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.

Tested x86_64-pc-linux-gnu, applying to trunk.

gcc/cp/ChangeLog
2020-03-10  Jason Merrill  <ja...@redhat.com>

        PR c++/93901
        * pt.c (maybe_instantiate_noexcept): Always update clones.
---
 gcc/cp/pt.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 179716b5680..cb237ba0d9d 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;

base-commit: b269a014771776f860730874095dffb34839a466
-- 
2.18.1

Reply via email to