Bernhard's pestering finally got through. There was an early out that failed to stop the timer.

fixed by rearranging the code.

nathan
--
Nathan Sidwell
2017-05-11  Nathan Sidwell  <nat...@acm.org>

	* name-lookup.c (pushdecl_outermost_localscope): Always
	conditionally stop timer.

Index: name-lookup.c
===================================================================
--- name-lookup.c	(revision 247909)
+++ name-lookup.c	(working copy)
@@ -2874,19 +2874,17 @@ pushdecl_with_scope_1 (tree x, cp_bindin
 tree
 pushdecl_outermost_localscope (tree x)
 {
+  cp_binding_level *b = NULL;
   bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
-  cp_binding_level *b  = NULL, *n = current_binding_level;
 
-  if (n->kind == sk_function_parms)
-    return error_mark_node;
-  do
-    {
-      b = n;
-      n = b->level_chain;
-    }
-  while (n->kind != sk_function_parms);
-  tree ret = pushdecl_with_scope_1 (x, b, false);
+  /* Find the scope just inside the function parms.  */
+  for (cp_binding_level *n = current_binding_level;
+       n->kind != sk_function_parms; n = b->level_chain)
+    b = n;
+
+  tree ret = b ? pushdecl_with_scope_1 (x, b, false) : error_mark_node;
   timevar_cond_stop (TV_NAME_LOOKUP, subtime);
+
   return ret;
 }
 

Reply via email to