https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94819

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2020-04-28
                 CC|                            |ppalka at gcc dot gnu.org

--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Confirmed, thanks for the nice testcase.  I think the problem lies with how we
cache the constraints of an inherited constructor.  I am testing the following:

--- a/gcc/cp/constraint.cc                                                      
+++ b/gcc/cp/constraint.cc                                                      
@@ -2752,7 +2752,7 @@ satisfy_declaration_constraints (tree t, subst_info info) 
   info.in_decl = t;                                                            

   if (info.quiet ())                                                           
-    if (tree *result = hash_map_safe_get (decl_satisfied_cache, t))            
+    if (tree *result = hash_map_safe_get (decl_satisfied_cache, saved_t))      
       return *result;                                                          

   /* Get the normalized constraints.  */                                       
@@ -2787,7 +2787,7 @@ satisfy_declaration_constraints (tree t, subst_info info) 
     }                                                                          

   if (info.quiet ())                                                           
-    hash_map_safe_put<hm_ggc> (decl_satisfied_cache, t, result);               
+    hash_map_safe_put<hm_ggc> (decl_satisfied_cache, saved_t, result);         

   return result;                                                               
 }

Reply via email to