diff options
Diffstat (limited to 'gcc/cp/pt.cc')
-rw-r--r-- | gcc/cp/pt.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 00b61ae..6a5d650 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -1913,9 +1913,7 @@ iterative_hash_template_arg (tree arg, hashval_t val) // to hash differently from its TYPE_CANONICAL, to avoid hash // collisions that compare as different in template_args_equal. // These could be dependent specializations that strip_typedefs - // left alone, or untouched specializations because - // coerce_template_parms returns the unconverted template - // arguments if it sees incomplete argument packs. + // left alone for example. tree ti = TYPE_ALIAS_TEMPLATE_INFO (ats); return hash_tmpl_and_args (TI_TEMPLATE (ti), TI_ARGS (ti)); } @@ -9301,7 +9299,9 @@ coerce_template_parms (tree parms, /* We don't know how many args we have yet, just use the unconverted (and still packed) ones for now. */ ggc_free (new_inner_args); - new_inner_args = orig_inner_args; + new_inner_args = strip_typedefs (orig_inner_args, + /*remove_attrs=*/nullptr, + STF_KEEP_INJ_CLASS_NAME); arg_idx = nargs; break; } @@ -9357,7 +9357,9 @@ coerce_template_parms (tree parms, /* We don't know how many args we have yet, just use the unconverted (but unpacked) ones for now. */ ggc_free (new_inner_args); - new_inner_args = inner_args; + new_inner_args = strip_typedefs (inner_args, + /*remove_attrs=*/nullptr, + STF_KEEP_INJ_CLASS_NAME); arg_idx = nargs; break; } |