aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/pt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 29047d7..cc18eef 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -3962,10 +3962,14 @@ lookup_template_class (d1, arglist, in_decl, context, entering_scope)
if (comp_template_args (TREE_PURPOSE (*tp), arglist))
{
found = *tp;
+
+ /* Use the move-to-front heuristic to speed up future
+ searches. */
*tp = TREE_CHAIN (*tp);
TREE_CHAIN (found)
= DECL_TEMPLATE_INSTANTIATIONS (template);
DECL_TEMPLATE_INSTANTIATIONS (template) = found;
+
return TREE_VALUE (found);
}