* pt.c (instantiate_decl): Avoid recalculation.
authorJason Merrill <jason@redhat.com>
Tue, 31 May 2016 19:49:22 +0000 (15:49 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 31 May 2016 19:49:22 +0000 (15:49 -0400)
From-SVN: r236947

gcc/cp/ChangeLog
gcc/cp/pt.c

index dabf2ec8d897c5858e5a3b51c2eb74d6c30ea62b..2850334efff75b26be9b77c57069a17142715246 100644 (file)
@@ -1,5 +1,7 @@
 2016-05-31  Jason Merrill  <jason@redhat.com>
 
+       * pt.c (instantiate_decl): Avoid recalculation.
+
        PR c++/60095
        PR c++/69515
        PR c++/69009
index b25cd13659e31af13f3e8c16c1557d5e812ccde4..64fef68c9e389ebcd67e2ab811ff592e60b35d52 100644 (file)
@@ -21971,7 +21971,6 @@ instantiate_decl (tree d, int defer_ok,
   else if (TREE_CODE (d) == FUNCTION_DECL)
     {
       hash_map<tree, tree> *saved_local_specializations;
-      tree subst_decl;
       tree tmpl_parm;
       tree spec_parm;
       tree block = NULL_TREE;
@@ -21994,18 +21993,17 @@ instantiate_decl (tree d, int defer_ok,
         access checked at template instantiation time, i.e now. These
         types were added to the template at parsing time. Let's get those
         and perform the access checks then.  */
-      perform_typedefs_access_check (DECL_TEMPLATE_RESULT (gen_tmpl),
-                                    gen_args);
+      perform_typedefs_access_check (DECL_TEMPLATE_RESULT (td),
+                                    args);
 
       /* Create substitution entries for the parameters.  */
-      subst_decl = DECL_TEMPLATE_RESULT (template_for_substitution (d));
-      tmpl_parm = DECL_ARGUMENTS (subst_decl);
+      tmpl_parm = DECL_ARGUMENTS (code_pattern);
       spec_parm = DECL_ARGUMENTS (d);
       if (DECL_NONSTATIC_MEMBER_FUNCTION_P (d))
        {
          register_local_specialization (spec_parm, tmpl_parm);
          spec_parm = skip_artificial_parms_for (d, spec_parm);
-         tmpl_parm = skip_artificial_parms_for (subst_decl, tmpl_parm);
+         tmpl_parm = skip_artificial_parms_for (code_pattern, tmpl_parm);
        }
       for (; tmpl_parm; tmpl_parm = DECL_CHAIN (tmpl_parm))
        {