name-lookup.c revision 1.1.1.1.4.2
1/* Definitions for C++ name lookup routines.
2   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
3   Free Software Foundation, Inc.
4   Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
5
6This file is part of GCC.
7
8GCC is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 3, or (at your option)
11any later version.
12
13GCC is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with GCC; see the file COPYING3.  If not see
20<http://www.gnu.org/licenses/>.  */
21
22#include "config.h"
23#include "system.h"
24#include "coretypes.h"
25#include "tm.h"
26#include "flags.h"
27#include "tree.h"
28#include "cp-tree.h"
29#include "name-lookup.h"
30#include "timevar.h"
31#include "toplev.h"
32#include "diagnostic.h"
33#include "debug.h"
34#include "c-pragma.h"
35
36/* The bindings for a particular name in a particular scope.  */
37
38struct scope_binding {
39  tree value;
40  tree type;
41};
42#define EMPTY_SCOPE_BINDING { NULL_TREE, NULL_TREE }
43
44static cxx_scope *innermost_nonclass_level (void);
45static cxx_binding *binding_for_name (cxx_scope *, tree);
46static tree push_overloaded_decl (tree, int, bool);
47static bool lookup_using_namespace (tree, struct scope_binding *, tree,
48				    tree, int);
49static bool qualified_lookup_using_namespace (tree, tree,
50					      struct scope_binding *, int);
51static tree lookup_type_current_level (tree);
52static tree push_using_directive (tree);
53static cxx_binding* lookup_extern_c_fun_binding_in_all_ns (tree);
54
55/* The :: namespace.  */
56
57tree global_namespace;
58
59/* The name of the anonymous namespace, throughout this translation
60   unit.  */
61static GTY(()) tree anonymous_namespace_name;
62
63/* Initialize anonymous_namespace_name if necessary, and return it.  */
64
65static tree
66get_anonymous_namespace_name (void)
67{
68  if (!anonymous_namespace_name)
69    {
70      /* The anonymous namespace has to have a unique name
71	 if typeinfo objects are being compared by name.  */
72      if (! flag_weak || ! SUPPORTS_ONE_ONLY)
73       anonymous_namespace_name = get_file_function_name ("N");
74      else
75       /* The demangler expects anonymous namespaces to be called
76          something starting with '_GLOBAL__N_'.  */
77       anonymous_namespace_name = get_identifier ("_GLOBAL__N_1");
78    }
79  return anonymous_namespace_name;
80}
81
82/* Compute the chain index of a binding_entry given the HASH value of its
83   name and the total COUNT of chains.  COUNT is assumed to be a power
84   of 2.  */
85
86#define ENTRY_INDEX(HASH, COUNT) (((HASH) >> 3) & ((COUNT) - 1))
87
88/* A free list of "binding_entry"s awaiting for re-use.  */
89
90static GTY((deletable)) binding_entry free_binding_entry = NULL;
91
92/* Create a binding_entry object for (NAME, TYPE).  */
93
94static inline binding_entry
95binding_entry_make (tree name, tree type)
96{
97  binding_entry entry;
98
99  if (free_binding_entry)
100    {
101      entry = free_binding_entry;
102      free_binding_entry = entry->chain;
103    }
104  else
105    entry = GGC_NEW (struct binding_entry_s);
106
107  entry->name = name;
108  entry->type = type;
109  entry->chain = NULL;
110
111  return entry;
112}
113
114/* Put ENTRY back on the free list.  */
115#if 0
116static inline void
117binding_entry_free (binding_entry entry)
118{
119  entry->name = NULL;
120  entry->type = NULL;
121  entry->chain = free_binding_entry;
122  free_binding_entry = entry;
123}
124#endif
125
126/* The datatype used to implement the mapping from names to types at
127   a given scope.  */
128struct GTY(()) binding_table_s {
129  /* Array of chains of "binding_entry"s  */
130  binding_entry * GTY((length ("%h.chain_count"))) chain;
131
132  /* The number of chains in this table.  This is the length of the
133     member "chain" considered as an array.  */
134  size_t chain_count;
135
136  /* Number of "binding_entry"s in this table.  */
137  size_t entry_count;
138};
139
140/* Construct TABLE with an initial CHAIN_COUNT.  */
141
142static inline void
143binding_table_construct (binding_table table, size_t chain_count)
144{
145  table->chain_count = chain_count;
146  table->entry_count = 0;
147  table->chain = GGC_CNEWVEC (binding_entry, table->chain_count);
148}
149
150/* Make TABLE's entries ready for reuse.  */
151#if 0
152static void
153binding_table_free (binding_table table)
154{
155  size_t i;
156  size_t count;
157
158  if (table == NULL)
159    return;
160
161  for (i = 0, count = table->chain_count; i < count; ++i)
162    {
163      binding_entry temp = table->chain[i];
164      while (temp != NULL)
165	{
166	  binding_entry entry = temp;
167	  temp = entry->chain;
168	  binding_entry_free (entry);
169	}
170      table->chain[i] = NULL;
171    }
172  table->entry_count = 0;
173}
174#endif
175
176/* Allocate a table with CHAIN_COUNT, assumed to be a power of two.  */
177
178static inline binding_table
179binding_table_new (size_t chain_count)
180{
181  binding_table table = GGC_NEW (struct binding_table_s);
182  table->chain = NULL;
183  binding_table_construct (table, chain_count);
184  return table;
185}
186
187/* Expand TABLE to twice its current chain_count.  */
188
189static void
190binding_table_expand (binding_table table)
191{
192  const size_t old_chain_count = table->chain_count;
193  const size_t old_entry_count = table->entry_count;
194  const size_t new_chain_count = 2 * old_chain_count;
195  binding_entry *old_chains = table->chain;
196  size_t i;
197
198  binding_table_construct (table, new_chain_count);
199  for (i = 0; i < old_chain_count; ++i)
200    {
201      binding_entry entry = old_chains[i];
202      for (; entry != NULL; entry = old_chains[i])
203	{
204	  const unsigned int hash = IDENTIFIER_HASH_VALUE (entry->name);
205	  const size_t j = ENTRY_INDEX (hash, new_chain_count);
206
207	  old_chains[i] = entry->chain;
208	  entry->chain = table->chain[j];
209	  table->chain[j] = entry;
210	}
211    }
212  table->entry_count = old_entry_count;
213}
214
215/* Insert a binding for NAME to TYPE into TABLE.  */
216
217static void
218binding_table_insert (binding_table table, tree name, tree type)
219{
220  const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
221  const size_t i = ENTRY_INDEX (hash, table->chain_count);
222  binding_entry entry = binding_entry_make (name, type);
223
224  entry->chain = table->chain[i];
225  table->chain[i] = entry;
226  ++table->entry_count;
227
228  if (3 * table->chain_count < 5 * table->entry_count)
229    binding_table_expand (table);
230}
231
232/* Return the binding_entry, if any, that maps NAME.  */
233
234binding_entry
235binding_table_find (binding_table table, tree name)
236{
237  const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
238  binding_entry entry = table->chain[ENTRY_INDEX (hash, table->chain_count)];
239
240  while (entry != NULL && entry->name != name)
241    entry = entry->chain;
242
243  return entry;
244}
245
246/* Apply PROC -- with DATA -- to all entries in TABLE.  */
247
248void
249binding_table_foreach (binding_table table, bt_foreach_proc proc, void *data)
250{
251  const size_t chain_count = table->chain_count;
252  size_t i;
253
254  for (i = 0; i < chain_count; ++i)
255    {
256      binding_entry entry = table->chain[i];
257      for (; entry != NULL; entry = entry->chain)
258	proc (entry, data);
259    }
260}
261
262#ifndef ENABLE_SCOPE_CHECKING
263#  define ENABLE_SCOPE_CHECKING 0
264#else
265#  define ENABLE_SCOPE_CHECKING 1
266#endif
267
268/* A free list of "cxx_binding"s, connected by their PREVIOUS.  */
269
270static GTY((deletable)) cxx_binding *free_bindings;
271
272/* Initialize VALUE and TYPE field for BINDING, and set the PREVIOUS
273   field to NULL.  */
274
275static inline void
276cxx_binding_init (cxx_binding *binding, tree value, tree type)
277{
278  binding->value = value;
279  binding->type = type;
280  binding->previous = NULL;
281}
282
283/* (GC)-allocate a binding object with VALUE and TYPE member initialized.  */
284
285static cxx_binding *
286cxx_binding_make (tree value, tree type)
287{
288  cxx_binding *binding;
289  if (free_bindings)
290    {
291      binding = free_bindings;
292      free_bindings = binding->previous;
293    }
294  else
295    binding = GGC_NEW (cxx_binding);
296
297  cxx_binding_init (binding, value, type);
298
299  return binding;
300}
301
302/* Put BINDING back on the free list.  */
303
304static inline void
305cxx_binding_free (cxx_binding *binding)
306{
307  binding->scope = NULL;
308  binding->previous = free_bindings;
309  free_bindings = binding;
310}
311
312/* Create a new binding for NAME (with the indicated VALUE and TYPE
313   bindings) in the class scope indicated by SCOPE.  */
314
315static cxx_binding *
316new_class_binding (tree name, tree value, tree type, cxx_scope *scope)
317{
318  cp_class_binding *cb;
319  cxx_binding *binding;
320
321  if (VEC_length (cp_class_binding, scope->class_shadowed))
322    {
323      cp_class_binding *old_base;
324      old_base = VEC_index (cp_class_binding, scope->class_shadowed, 0);
325      if (VEC_reserve (cp_class_binding, gc, scope->class_shadowed, 1))
326	{
327	  /* Fixup the current bindings, as they might have moved.  */
328	  size_t i;
329
330	  for (i = 0;
331	       VEC_iterate (cp_class_binding, scope->class_shadowed, i, cb);
332	       i++)
333	    {
334	      cxx_binding **b;
335	      b = &IDENTIFIER_BINDING (cb->identifier);
336	      while (*b != &old_base[i].base)
337		b = &((*b)->previous);
338	      *b = &cb->base;
339	    }
340	}
341      cb = VEC_quick_push (cp_class_binding, scope->class_shadowed, NULL);
342    }
343  else
344    cb = VEC_safe_push (cp_class_binding, gc, scope->class_shadowed, NULL);
345
346  cb->identifier = name;
347  binding = &cb->base;
348  binding->scope = scope;
349  cxx_binding_init (binding, value, type);
350  return binding;
351}
352
353/* Make DECL the innermost binding for ID.  The LEVEL is the binding
354   level at which this declaration is being bound.  */
355
356static void
357push_binding (tree id, tree decl, cxx_scope* level)
358{
359  cxx_binding *binding;
360
361  if (level != class_binding_level)
362    {
363      binding = cxx_binding_make (decl, NULL_TREE);
364      binding->scope = level;
365    }
366  else
367    binding = new_class_binding (id, decl, /*type=*/NULL_TREE, level);
368
369  /* Now, fill in the binding information.  */
370  binding->previous = IDENTIFIER_BINDING (id);
371  INHERITED_VALUE_BINDING_P (binding) = 0;
372  LOCAL_BINDING_P (binding) = (level != class_binding_level);
373
374  /* And put it on the front of the list of bindings for ID.  */
375  IDENTIFIER_BINDING (id) = binding;
376}
377
378/* Remove the binding for DECL which should be the innermost binding
379   for ID.  */
380
381void
382pop_binding (tree id, tree decl)
383{
384  cxx_binding *binding;
385
386  if (id == NULL_TREE)
387    /* It's easiest to write the loops that call this function without
388       checking whether or not the entities involved have names.  We
389       get here for such an entity.  */
390    return;
391
392  /* Get the innermost binding for ID.  */
393  binding = IDENTIFIER_BINDING (id);
394
395  /* The name should be bound.  */
396  gcc_assert (binding != NULL);
397
398  /* The DECL will be either the ordinary binding or the type
399     binding for this identifier.  Remove that binding.  */
400  if (binding->value == decl)
401    binding->value = NULL_TREE;
402  else
403    {
404      gcc_assert (binding->type == decl);
405      binding->type = NULL_TREE;
406    }
407
408  if (!binding->value && !binding->type)
409    {
410      /* We're completely done with the innermost binding for this
411	 identifier.  Unhook it from the list of bindings.  */
412      IDENTIFIER_BINDING (id) = binding->previous;
413
414      /* Add it to the free list.  */
415      cxx_binding_free (binding);
416    }
417}
418
419/* BINDING records an existing declaration for a name in the current scope.
420   But, DECL is another declaration for that same identifier in the
421   same scope.  This is the `struct stat' hack whereby a non-typedef
422   class name or enum-name can be bound at the same level as some other
423   kind of entity.
424   3.3.7/1
425
426     A class name (9.1) or enumeration name (7.2) can be hidden by the
427     name of an object, function, or enumerator declared in the same scope.
428     If a class or enumeration name and an object, function, or enumerator
429     are declared in the same scope (in any order) with the same name, the
430     class or enumeration name is hidden wherever the object, function, or
431     enumerator name is visible.
432
433   It's the responsibility of the caller to check that
434   inserting this name is valid here.  Returns nonzero if the new binding
435   was successful.  */
436
437static bool
438supplement_binding (cxx_binding *binding, tree decl)
439{
440  tree bval = binding->value;
441  bool ok = true;
442
443  timevar_push (TV_NAME_LOOKUP);
444  if (TREE_CODE (decl) == TYPE_DECL && DECL_ARTIFICIAL (decl))
445    /* The new name is the type name.  */
446    binding->type = decl;
447  else if (/* BVAL is null when push_class_level_binding moves an
448	      inherited type-binding out of the way to make room for a
449	      new value binding.  */
450	   !bval
451	   /* BVAL is error_mark_node when DECL's name has been used
452	      in a non-class scope prior declaration.  In that case,
453	      we should have already issued a diagnostic; for graceful
454	      error recovery purpose, pretend this was the intended
455	      declaration for that name.  */
456	   || bval == error_mark_node
457	   /* If BVAL is anticipated but has not yet been declared,
458	      pretend it is not there at all.  */
459	   || (TREE_CODE (bval) == FUNCTION_DECL
460	       && DECL_ANTICIPATED (bval)
461	       && !DECL_HIDDEN_FRIEND_P (bval)))
462    binding->value = decl;
463  else if (TREE_CODE (bval) == TYPE_DECL && DECL_ARTIFICIAL (bval))
464    {
465      /* The old binding was a type name.  It was placed in
466	 VALUE field because it was thought, at the point it was
467	 declared, to be the only entity with such a name.  Move the
468	 type name into the type slot; it is now hidden by the new
469	 binding.  */
470      binding->type = bval;
471      binding->value = decl;
472      binding->value_is_inherited = false;
473    }
474  else if (TREE_CODE (bval) == TYPE_DECL
475	   && TREE_CODE (decl) == TYPE_DECL
476	   && DECL_NAME (decl) == DECL_NAME (bval)
477	   && binding->scope->kind != sk_class
478	   && (same_type_p (TREE_TYPE (decl), TREE_TYPE (bval))
479	       /* If either type involves template parameters, we must
480		  wait until instantiation.  */
481	       || uses_template_parms (TREE_TYPE (decl))
482	       || uses_template_parms (TREE_TYPE (bval))))
483    /* We have two typedef-names, both naming the same type to have
484       the same name.  In general, this is OK because of:
485
486	 [dcl.typedef]
487
488	 In a given scope, a typedef specifier can be used to redefine
489	 the name of any type declared in that scope to refer to the
490	 type to which it already refers.
491
492       However, in class scopes, this rule does not apply due to the
493       stricter language in [class.mem] prohibiting redeclarations of
494       members.  */
495    ok = false;
496  /* There can be two block-scope declarations of the same variable,
497     so long as they are `extern' declarations.  However, there cannot
498     be two declarations of the same static data member:
499
500       [class.mem]
501
502       A member shall not be declared twice in the
503       member-specification.  */
504  else if (TREE_CODE (decl) == VAR_DECL && TREE_CODE (bval) == VAR_DECL
505	   && DECL_EXTERNAL (decl) && DECL_EXTERNAL (bval)
506	   && !DECL_CLASS_SCOPE_P (decl))
507    {
508      duplicate_decls (decl, binding->value, /*newdecl_is_friend=*/false);
509      ok = false;
510    }
511  else if (TREE_CODE (decl) == NAMESPACE_DECL
512	   && TREE_CODE (bval) == NAMESPACE_DECL
513	   && DECL_NAMESPACE_ALIAS (decl)
514	   && DECL_NAMESPACE_ALIAS (bval)
515	   && ORIGINAL_NAMESPACE (bval) == ORIGINAL_NAMESPACE (decl))
516    /* [namespace.alias]
517
518      In a declarative region, a namespace-alias-definition can be
519      used to redefine a namespace-alias declared in that declarative
520      region to refer only to the namespace to which it already
521      refers.  */
522    ok = false;
523  else
524    {
525      error ("declaration of %q#D", decl);
526      error ("conflicts with previous declaration %q+#D", bval);
527      ok = false;
528    }
529
530  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ok);
531}
532
533/* Add DECL to the list of things declared in B.  */
534
535static void
536add_decl_to_level (tree decl, cxx_scope *b)
537{
538  /* We used to record virtual tables as if they were ordinary
539     variables, but no longer do so.  */
540  gcc_assert (!(TREE_CODE (decl) == VAR_DECL && DECL_VIRTUAL_P (decl)));
541
542  if (TREE_CODE (decl) == NAMESPACE_DECL
543      && !DECL_NAMESPACE_ALIAS (decl))
544    {
545      TREE_CHAIN (decl) = b->namespaces;
546      b->namespaces = decl;
547    }
548  else
549    {
550      /* We build up the list in reverse order, and reverse it later if
551	 necessary.  */
552      TREE_CHAIN (decl) = b->names;
553      b->names = decl;
554      b->names_size++;
555
556      /* If appropriate, add decl to separate list of statics.  We
557	 include extern variables because they might turn out to be
558	 static later.  It's OK for this list to contain a few false
559	 positives.  */
560      if (b->kind == sk_namespace)
561	if ((TREE_CODE (decl) == VAR_DECL
562	     && (TREE_STATIC (decl) || DECL_EXTERNAL (decl)))
563	    || (TREE_CODE (decl) == FUNCTION_DECL
564		&& (!TREE_PUBLIC (decl) || DECL_DECLARED_INLINE_P (decl))))
565	  VEC_safe_push (tree, gc, b->static_decls, decl);
566    }
567}
568
569/* Record a decl-node X as belonging to the current lexical scope.
570   Check for errors (such as an incompatible declaration for the same
571   name already seen in the same scope).  IS_FRIEND is true if X is
572   declared as a friend.
573
574   Returns either X or an old decl for the same name.
575   If an old decl is returned, it may have been smashed
576   to agree with what X says.  */
577
578tree
579pushdecl_maybe_friend (tree x, bool is_friend)
580{
581  tree t;
582  tree name;
583  int need_new_binding;
584
585  timevar_push (TV_NAME_LOOKUP);
586
587  if (x == error_mark_node)
588    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
589
590  need_new_binding = 1;
591
592  if (DECL_TEMPLATE_PARM_P (x))
593    /* Template parameters have no context; they are not X::T even
594       when declared within a class or namespace.  */
595    ;
596  else
597    {
598      if (current_function_decl && x != current_function_decl
599	  /* A local declaration for a function doesn't constitute
600	     nesting.  */
601	  && TREE_CODE (x) != FUNCTION_DECL
602	  /* A local declaration for an `extern' variable is in the
603	     scope of the current namespace, not the current
604	     function.  */
605	  && !(TREE_CODE (x) == VAR_DECL && DECL_EXTERNAL (x))
606	  /* When parsing the parameter list of a function declarator,
607	     don't set DECL_CONTEXT to an enclosing function.  When we
608	     push the PARM_DECLs in order to process the function body,
609	     current_binding_level->this_entity will be set.  */
610	  && !(TREE_CODE (x) == PARM_DECL
611	       && current_binding_level->kind == sk_function_parms
612	       && current_binding_level->this_entity == NULL)
613	  && !DECL_CONTEXT (x))
614	DECL_CONTEXT (x) = current_function_decl;
615
616      /* If this is the declaration for a namespace-scope function,
617	 but the declaration itself is in a local scope, mark the
618	 declaration.  */
619      if (TREE_CODE (x) == FUNCTION_DECL
620	  && DECL_NAMESPACE_SCOPE_P (x)
621	  && current_function_decl
622	  && x != current_function_decl)
623	DECL_LOCAL_FUNCTION_P (x) = 1;
624    }
625
626  name = DECL_NAME (x);
627  if (name)
628    {
629      int different_binding_level = 0;
630
631      if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
632	name = TREE_OPERAND (name, 0);
633
634      /* In case this decl was explicitly namespace-qualified, look it
635	 up in its namespace context.  */
636      if (DECL_NAMESPACE_SCOPE_P (x) && namespace_bindings_p ())
637	t = namespace_binding (name, DECL_CONTEXT (x));
638      else
639	t = lookup_name_innermost_nonclass_level (name);
640
641      /* [basic.link] If there is a visible declaration of an entity
642	 with linkage having the same name and type, ignoring entities
643	 declared outside the innermost enclosing namespace scope, the
644	 block scope declaration declares that same entity and
645	 receives the linkage of the previous declaration.  */
646      if (! t && current_function_decl && x != current_function_decl
647	  && (TREE_CODE (x) == FUNCTION_DECL || TREE_CODE (x) == VAR_DECL)
648	  && DECL_EXTERNAL (x))
649	{
650	  /* Look in block scope.  */
651	  t = innermost_non_namespace_value (name);
652	  /* Or in the innermost namespace.  */
653	  if (! t)
654	    t = namespace_binding (name, DECL_CONTEXT (x));
655	  /* Does it have linkage?  Note that if this isn't a DECL, it's an
656	     OVERLOAD, which is OK.  */
657	  if (t && DECL_P (t) && ! (TREE_STATIC (t) || DECL_EXTERNAL (t)))
658	    t = NULL_TREE;
659	  if (t)
660	    different_binding_level = 1;
661	}
662
663      /* If we are declaring a function, and the result of name-lookup
664	 was an OVERLOAD, look for an overloaded instance that is
665	 actually the same as the function we are declaring.  (If
666	 there is one, we have to merge our declaration with the
667	 previous declaration.)  */
668      if (t && TREE_CODE (t) == OVERLOAD)
669	{
670	  tree match;
671
672	  if (TREE_CODE (x) == FUNCTION_DECL)
673	    for (match = t; match; match = OVL_NEXT (match))
674	      {
675		if (decls_match (OVL_CURRENT (match), x))
676		  break;
677	      }
678	  else
679	    /* Just choose one.  */
680	    match = t;
681
682	  if (match)
683	    t = OVL_CURRENT (match);
684	  else
685	    t = NULL_TREE;
686	}
687
688      if (t && t != error_mark_node)
689	{
690	  if (different_binding_level)
691	    {
692	      if (decls_match (x, t))
693		/* The standard only says that the local extern
694		   inherits linkage from the previous decl; in
695		   particular, default args are not shared.  Add
696		   the decl into a hash table to make sure only
697		   the previous decl in this case is seen by the
698		   middle end.  */
699		{
700		  struct cxx_int_tree_map *h;
701		  void **loc;
702
703		  TREE_PUBLIC (x) = TREE_PUBLIC (t);
704
705		  if (cp_function_chain->extern_decl_map == NULL)
706		    cp_function_chain->extern_decl_map
707		      = htab_create_ggc (20, cxx_int_tree_map_hash,
708					 cxx_int_tree_map_eq, NULL);
709
710		  h = GGC_NEW (struct cxx_int_tree_map);
711		  h->uid = DECL_UID (x);
712		  h->to = t;
713		  loc = htab_find_slot_with_hash
714			  (cp_function_chain->extern_decl_map, h,
715			   h->uid, INSERT);
716		  *(struct cxx_int_tree_map **) loc = h;
717		}
718	    }
719	  else if (TREE_CODE (t) == PARM_DECL)
720	    {
721	      /* Check for duplicate params.  */
722	      tree d = duplicate_decls (x, t, is_friend);
723	      if (d)
724		POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, d);
725	    }
726	  else if ((DECL_EXTERN_C_FUNCTION_P (x)
727		    || DECL_FUNCTION_TEMPLATE_P (x))
728		   && is_overloaded_fn (t))
729	    /* Don't do anything just yet.  */;
730	  else if (t == wchar_decl_node)
731	    {
732	      if (! DECL_IN_SYSTEM_HEADER (x))
733		pedwarn (input_location, OPT_pedantic, "redeclaration of %<wchar_t%> as %qT",
734			 TREE_TYPE (x));
735
736	      /* Throw away the redeclaration.  */
737	      POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
738	    }
739	  else
740	    {
741	      tree olddecl = duplicate_decls (x, t, is_friend);
742
743	      /* If the redeclaration failed, we can stop at this
744		 point.  */
745	      if (olddecl == error_mark_node)
746		POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
747
748	      if (olddecl)
749		{
750		  if (TREE_CODE (t) == TYPE_DECL)
751		    SET_IDENTIFIER_TYPE_VALUE (name, TREE_TYPE (t));
752
753		  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
754		}
755	      else if (DECL_MAIN_P (x) && TREE_CODE (t) == FUNCTION_DECL)
756		{
757		  /* A redeclaration of main, but not a duplicate of the
758		     previous one.
759
760		     [basic.start.main]
761
762		     This function shall not be overloaded.  */
763		  error ("invalid redeclaration of %q+D", t);
764		  error ("as %qD", x);
765		  /* We don't try to push this declaration since that
766		     causes a crash.  */
767		  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
768		}
769	    }
770	}
771
772      /* If x has C linkage-specification, (extern "C"),
773	 lookup its binding, in case it's already bound to an object.
774	 The lookup is done in all namespaces.
775	 If we find an existing binding, make sure it has the same
776	 exception specification as x, otherwise, bail in error [7.5, 7.6].  */
777      if ((TREE_CODE (x) == FUNCTION_DECL)
778	  && DECL_EXTERN_C_P (x)
779          /* We should ignore declarations happening in system headers.  */
780	  && !DECL_ARTIFICIAL (x)
781	  && !DECL_IN_SYSTEM_HEADER (x))
782	{
783	  cxx_binding *function_binding =
784	      lookup_extern_c_fun_binding_in_all_ns (x);
785	  tree previous = (function_binding
786			   ? function_binding->value
787			   : NULL_TREE);
788	  if (previous
789	      && !DECL_ARTIFICIAL (previous)
790              && !DECL_IN_SYSTEM_HEADER (previous)
791	      && DECL_CONTEXT (previous) != DECL_CONTEXT (x))
792	    {
793	      tree previous = function_binding->value;
794
795	      /* In case either x or previous is declared to throw an exception,
796	         make sure both exception specifications are equal.  */
797	      if (decls_match (x, previous))
798		{
799		  tree x_exception_spec = NULL_TREE;
800		  tree previous_exception_spec = NULL_TREE;
801
802		  x_exception_spec =
803				TYPE_RAISES_EXCEPTIONS (TREE_TYPE (x));
804		  previous_exception_spec =
805				TYPE_RAISES_EXCEPTIONS (TREE_TYPE (previous));
806		  if (!comp_except_specs (previous_exception_spec,
807					  x_exception_spec,
808					  true))
809		    {
810		      pedwarn (input_location, 0, "declaration of %q#D with C language linkage",
811			       x);
812		      pedwarn (input_location, 0, "conflicts with previous declaration %q+#D",
813			       previous);
814		      pedwarn (input_location, 0, "due to different exception specifications");
815		      POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
816		    }
817		}
818	      else
819		{
820		  pedwarn (input_location, 0,
821			   "declaration of %q#D with C language linkage", x);
822		  pedwarn (input_location, 0,
823			   "conflicts with previous declaration %q+#D",
824			   previous);
825		}
826	    }
827	}
828
829      check_template_shadow (x);
830
831      /* If this is a function conjured up by the back end, massage it
832	 so it looks friendly.  */
833      if (DECL_NON_THUNK_FUNCTION_P (x) && ! DECL_LANG_SPECIFIC (x))
834	{
835	  retrofit_lang_decl (x);
836	  SET_DECL_LANGUAGE (x, lang_c);
837	}
838
839      t = x;
840      if (DECL_NON_THUNK_FUNCTION_P (x) && ! DECL_FUNCTION_MEMBER_P (x))
841	{
842	  t = push_overloaded_decl (x, PUSH_LOCAL, is_friend);
843	  if (!namespace_bindings_p ())
844	    /* We do not need to create a binding for this name;
845	       push_overloaded_decl will have already done so if
846	       necessary.  */
847	    need_new_binding = 0;
848	}
849      else if (DECL_FUNCTION_TEMPLATE_P (x) && DECL_NAMESPACE_SCOPE_P (x))
850	{
851	  t = push_overloaded_decl (x, PUSH_GLOBAL, is_friend);
852	  if (t == x)
853	    add_decl_to_level (x, NAMESPACE_LEVEL (CP_DECL_CONTEXT (t)));
854	}
855
856      if (TREE_CODE (t) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (t))
857	check_default_args (t);
858
859      if (t != x || DECL_FUNCTION_TEMPLATE_P (t))
860	POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
861
862      /* If declaring a type as a typedef, copy the type (unless we're
863	 at line 0), and install this TYPE_DECL as the new type's typedef
864	 name.  See the extensive comment of set_underlying_type ().  */
865      if (TREE_CODE (x) == TYPE_DECL)
866	{
867	  tree type = TREE_TYPE (x);
868
869	  if (DECL_IS_BUILTIN (x)
870	      || (TREE_TYPE (x) != error_mark_node
871		  && TYPE_NAME (type) != x
872		  /* We don't want to copy the type when all we're
873		     doing is making a TYPE_DECL for the purposes of
874		     inlining.  */
875		  && (!TYPE_NAME (type)
876		      || TYPE_NAME (type) != DECL_ABSTRACT_ORIGIN (x))))
877	    cp_set_underlying_type (x);
878
879	  if (type != error_mark_node
880	      && TYPE_NAME (type)
881	      && TYPE_IDENTIFIER (type))
882	    set_identifier_type_value (DECL_NAME (x), x);
883	}
884
885      /* Multiple external decls of the same identifier ought to match.
886
887	 We get warnings about inline functions where they are defined.
888	 We get warnings about other functions from push_overloaded_decl.
889
890	 Avoid duplicate warnings where they are used.  */
891      if (TREE_PUBLIC (x) && TREE_CODE (x) != FUNCTION_DECL)
892	{
893	  tree decl;
894
895	  decl = IDENTIFIER_NAMESPACE_VALUE (name);
896	  if (decl && TREE_CODE (decl) == OVERLOAD)
897	    decl = OVL_FUNCTION (decl);
898
899	  if (decl && decl != error_mark_node
900	      && (DECL_EXTERNAL (decl) || TREE_PUBLIC (decl))
901	      /* If different sort of thing, we already gave an error.  */
902	      && TREE_CODE (decl) == TREE_CODE (x)
903	      && !same_type_p (TREE_TYPE (x), TREE_TYPE (decl)))
904	    {
905	      permerror (input_location, "type mismatch with previous external decl of %q#D", x);
906	      permerror (input_location, "previous external decl of %q+#D", decl);
907	    }
908	}
909
910      if (TREE_CODE (x) == FUNCTION_DECL
911	  && is_friend
912	  && !flag_friend_injection)
913	{
914	  /* This is a new declaration of a friend function, so hide
915	     it from ordinary function lookup.  */
916	  DECL_ANTICIPATED (x) = 1;
917	  DECL_HIDDEN_FRIEND_P (x) = 1;
918	}
919
920      /* This name is new in its binding level.
921	 Install the new declaration and return it.  */
922      if (namespace_bindings_p ())
923	{
924	  /* Install a global value.  */
925
926	  /* If the first global decl has external linkage,
927	     warn if we later see static one.  */
928	  if (IDENTIFIER_GLOBAL_VALUE (name) == NULL_TREE && TREE_PUBLIC (x))
929	    TREE_PUBLIC (name) = 1;
930
931	  /* Bind the name for the entity.  */
932	  if (!(TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x)
933		&& t != NULL_TREE)
934	      && (TREE_CODE (x) == TYPE_DECL
935		  || TREE_CODE (x) == VAR_DECL
936		  || TREE_CODE (x) == NAMESPACE_DECL
937		  || TREE_CODE (x) == CONST_DECL
938		  || TREE_CODE (x) == TEMPLATE_DECL))
939	    SET_IDENTIFIER_NAMESPACE_VALUE (name, x);
940
941	  /* If new decl is `static' and an `extern' was seen previously,
942	     warn about it.  */
943	  if (x != NULL_TREE && t != NULL_TREE && decls_match (x, t))
944	    warn_extern_redeclared_static (x, t);
945	}
946      else
947	{
948	  /* Here to install a non-global value.  */
949	  tree oldlocal = innermost_non_namespace_value (name);
950	  tree oldglobal = IDENTIFIER_NAMESPACE_VALUE (name);
951
952	  if (need_new_binding)
953	    {
954	      push_local_binding (name, x, 0);
955	      /* Because push_local_binding will hook X on to the
956		 current_binding_level's name list, we don't want to
957		 do that again below.  */
958	      need_new_binding = 0;
959	    }
960
961	  /* If this is a TYPE_DECL, push it into the type value slot.  */
962	  if (TREE_CODE (x) == TYPE_DECL)
963	    set_identifier_type_value (name, x);
964
965	  /* Clear out any TYPE_DECL shadowed by a namespace so that
966	     we won't think this is a type.  The C struct hack doesn't
967	     go through namespaces.  */
968	  if (TREE_CODE (x) == NAMESPACE_DECL)
969	    set_identifier_type_value (name, NULL_TREE);
970
971	  if (oldlocal)
972	    {
973	      tree d = oldlocal;
974
975	      while (oldlocal
976		     && TREE_CODE (oldlocal) == VAR_DECL
977		     && DECL_DEAD_FOR_LOCAL (oldlocal))
978		oldlocal = DECL_SHADOWED_FOR_VAR (oldlocal);
979
980	      if (oldlocal == NULL_TREE)
981		oldlocal = IDENTIFIER_NAMESPACE_VALUE (DECL_NAME (d));
982	    }
983
984	  /* If this is an extern function declaration, see if we
985	     have a global definition or declaration for the function.  */
986	  if (oldlocal == NULL_TREE
987	      && DECL_EXTERNAL (x)
988	      && oldglobal != NULL_TREE
989	      && TREE_CODE (x) == FUNCTION_DECL
990	      && TREE_CODE (oldglobal) == FUNCTION_DECL)
991	    {
992	      /* We have one.  Their types must agree.  */
993	      if (decls_match (x, oldglobal))
994		/* OK */;
995	      else
996		{
997		  warning (0, "extern declaration of %q#D doesn't match", x);
998		  warning (0, "global declaration %q+#D", oldglobal);
999		}
1000	    }
1001	  /* If we have a local external declaration,
1002	     and no file-scope declaration has yet been seen,
1003	     then if we later have a file-scope decl it must not be static.  */
1004	  if (oldlocal == NULL_TREE
1005	      && oldglobal == NULL_TREE
1006	      && DECL_EXTERNAL (x)
1007	      && TREE_PUBLIC (x))
1008	    TREE_PUBLIC (name) = 1;
1009
1010	  /* Don't complain about the parms we push and then pop
1011	     while tentatively parsing a function declarator.  */
1012	  if (TREE_CODE (x) == PARM_DECL && DECL_CONTEXT (x) == NULL_TREE)
1013	    /* Ignore.  */;
1014
1015	  /* Warn if shadowing an argument at the top level of the body.  */
1016	  else if (oldlocal != NULL_TREE && !DECL_EXTERNAL (x)
1017		   /* Inline decls shadow nothing.  */
1018		   && !DECL_FROM_INLINE (x)
1019		   && TREE_CODE (oldlocal) == PARM_DECL
1020		   /* Don't check the `this' parameter.  */
1021		   && !DECL_ARTIFICIAL (oldlocal))
1022	    {
1023	      bool err = false;
1024
1025	      /* Don't complain if it's from an enclosing function.  */
1026	      if (DECL_CONTEXT (oldlocal) == current_function_decl
1027		  && TREE_CODE (x) != PARM_DECL)
1028		{
1029		  /* Go to where the parms should be and see if we find
1030		     them there.  */
1031		  struct cp_binding_level *b = current_binding_level->level_chain;
1032
1033		  if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
1034		    /* Skip the ctor/dtor cleanup level.  */
1035		    b = b->level_chain;
1036
1037		  /* ARM $8.3 */
1038		  if (b->kind == sk_function_parms)
1039		    {
1040		      error ("declaration of %q#D shadows a parameter", x);
1041		      err = true;
1042		    }
1043		}
1044
1045	      if (warn_shadow && !err)
1046		{
1047		  warning_at (input_location, OPT_Wshadow,
1048			      "declaration of %q#D shadows a parameter", x);
1049		  warning_at (DECL_SOURCE_LOCATION (oldlocal), OPT_Wshadow,
1050			      "shadowed declaration is here");
1051		}
1052	    }
1053
1054	  /* Maybe warn if shadowing something else.  */
1055	  else if (warn_shadow && !DECL_EXTERNAL (x)
1056	      /* No shadow warnings for internally generated vars.  */
1057	      && ! DECL_ARTIFICIAL (x)
1058	      /* No shadow warnings for vars made for inlining.  */
1059	      && ! DECL_FROM_INLINE (x))
1060	    {
1061	      tree member;
1062
1063	      if (current_class_ptr)
1064		member = lookup_member (current_class_type,
1065					name,
1066					/*protect=*/0,
1067					/*want_type=*/false);
1068	      else
1069		member = NULL_TREE;
1070
1071	      if (member && !TREE_STATIC (member))
1072		{
1073		  /* Location of previous decl is not useful in this case.  */
1074		  warning (OPT_Wshadow, "declaration of %qD shadows a member of 'this'",
1075			   x);
1076		}
1077	      else if (oldlocal != NULL_TREE
1078		       && TREE_CODE (oldlocal) == VAR_DECL)
1079		{
1080		  warning_at (input_location, OPT_Wshadow,
1081			      "declaration of %qD shadows a previous local", x);
1082		  warning_at (DECL_SOURCE_LOCATION (oldlocal), OPT_Wshadow,
1083			      "shadowed declaration is here");
1084		}
1085	      else if (oldglobal != NULL_TREE
1086		       && TREE_CODE (oldglobal) == VAR_DECL)
1087		/* XXX shadow warnings in outer-more namespaces */
1088		{
1089		  warning_at (input_location, OPT_Wshadow,
1090			      "declaration of %qD shadows a global declaration", x);
1091		  warning_at (DECL_SOURCE_LOCATION (oldglobal), OPT_Wshadow,
1092			      "shadowed declaration is here");
1093		}
1094	    }
1095	}
1096
1097      if (TREE_CODE (x) == VAR_DECL)
1098	maybe_register_incomplete_var (x);
1099    }
1100
1101  if (need_new_binding)
1102    add_decl_to_level (x,
1103		       DECL_NAMESPACE_SCOPE_P (x)
1104		       ? NAMESPACE_LEVEL (CP_DECL_CONTEXT (x))
1105		       : current_binding_level);
1106
1107  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
1108}
1109
1110/* Record a decl-node X as belonging to the current lexical scope.  */
1111
1112tree
1113pushdecl (tree x)
1114{
1115  return pushdecl_maybe_friend (x, false);
1116}
1117
1118/* Enter DECL into the symbol table, if that's appropriate.  Returns
1119   DECL, or a modified version thereof.  */
1120
1121tree
1122maybe_push_decl (tree decl)
1123{
1124  tree type = TREE_TYPE (decl);
1125
1126  /* Add this decl to the current binding level, but not if it comes
1127     from another scope, e.g. a static member variable.  TEM may equal
1128     DECL or it may be a previous decl of the same name.  */
1129  if (decl == error_mark_node
1130      || (TREE_CODE (decl) != PARM_DECL
1131	  && DECL_CONTEXT (decl) != NULL_TREE
1132	  /* Definitions of namespace members outside their namespace are
1133	     possible.  */
1134	  && TREE_CODE (DECL_CONTEXT (decl)) != NAMESPACE_DECL)
1135      || (TREE_CODE (decl) == TEMPLATE_DECL && !namespace_bindings_p ())
1136      || TREE_CODE (type) == UNKNOWN_TYPE
1137      /* The declaration of a template specialization does not affect
1138	 the functions available for overload resolution, so we do not
1139	 call pushdecl.  */
1140      || (TREE_CODE (decl) == FUNCTION_DECL
1141	  && DECL_TEMPLATE_SPECIALIZATION (decl)))
1142    return decl;
1143  else
1144    return pushdecl (decl);
1145}
1146
1147/* Bind DECL to ID in the current_binding_level, assumed to be a local
1148   binding level.  If PUSH_USING is set in FLAGS, we know that DECL
1149   doesn't really belong to this binding level, that it got here
1150   through a using-declaration.  */
1151
1152void
1153push_local_binding (tree id, tree decl, int flags)
1154{
1155  struct cp_binding_level *b;
1156
1157  /* Skip over any local classes.  This makes sense if we call
1158     push_local_binding with a friend decl of a local class.  */
1159  b = innermost_nonclass_level ();
1160
1161  if (lookup_name_innermost_nonclass_level (id))
1162    {
1163      /* Supplement the existing binding.  */
1164      if (!supplement_binding (IDENTIFIER_BINDING (id), decl))
1165	/* It didn't work.  Something else must be bound at this
1166	   level.  Do not add DECL to the list of things to pop
1167	   later.  */
1168	return;
1169    }
1170  else
1171    /* Create a new binding.  */
1172    push_binding (id, decl, b);
1173
1174  if (TREE_CODE (decl) == OVERLOAD || (flags & PUSH_USING))
1175    /* We must put the OVERLOAD into a TREE_LIST since the
1176       TREE_CHAIN of an OVERLOAD is already used.  Similarly for
1177       decls that got here through a using-declaration.  */
1178    decl = build_tree_list (NULL_TREE, decl);
1179
1180  /* And put DECL on the list of things declared by the current
1181     binding level.  */
1182  add_decl_to_level (decl, b);
1183}
1184
1185/* Check to see whether or not DECL is a variable that would have been
1186   in scope under the ARM, but is not in scope under the ANSI/ISO
1187   standard.  If so, issue an error message.  If name lookup would
1188   work in both cases, but return a different result, this function
1189   returns the result of ANSI/ISO lookup.  Otherwise, it returns
1190   DECL.  */
1191
1192tree
1193check_for_out_of_scope_variable (tree decl)
1194{
1195  tree shadowed;
1196
1197  /* We only care about out of scope variables.  */
1198  if (!(TREE_CODE (decl) == VAR_DECL && DECL_DEAD_FOR_LOCAL (decl)))
1199    return decl;
1200
1201  shadowed = DECL_HAS_SHADOWED_FOR_VAR_P (decl)
1202    ? DECL_SHADOWED_FOR_VAR (decl) : NULL_TREE ;
1203  while (shadowed != NULL_TREE && TREE_CODE (shadowed) == VAR_DECL
1204	 && DECL_DEAD_FOR_LOCAL (shadowed))
1205    shadowed = DECL_HAS_SHADOWED_FOR_VAR_P (shadowed)
1206      ? DECL_SHADOWED_FOR_VAR (shadowed) : NULL_TREE;
1207  if (!shadowed)
1208    shadowed = IDENTIFIER_NAMESPACE_VALUE (DECL_NAME (decl));
1209  if (shadowed)
1210    {
1211      if (!DECL_ERROR_REPORTED (decl))
1212	{
1213	  warning (0, "name lookup of %qD changed", DECL_NAME (decl));
1214	  warning (0, "  matches this %q+D under ISO standard rules",
1215		   shadowed);
1216	  warning (0, "  matches this %q+D under old rules", decl);
1217	  DECL_ERROR_REPORTED (decl) = 1;
1218	}
1219      return shadowed;
1220    }
1221
1222  /* If we have already complained about this declaration, there's no
1223     need to do it again.  */
1224  if (DECL_ERROR_REPORTED (decl))
1225    return decl;
1226
1227  DECL_ERROR_REPORTED (decl) = 1;
1228
1229  if (TREE_TYPE (decl) == error_mark_node)
1230    return decl;
1231
1232  if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
1233    {
1234      error ("name lookup of %qD changed for ISO %<for%> scoping",
1235	     DECL_NAME (decl));
1236      error ("  cannot use obsolete binding at %q+D because "
1237	     "it has a destructor", decl);
1238      return error_mark_node;
1239    }
1240  else
1241    {
1242      permerror (input_location, "name lookup of %qD changed for ISO %<for%> scoping",
1243	         DECL_NAME (decl));
1244      if (flag_permissive)
1245        permerror (input_location, "  using obsolete binding at %q+D", decl);
1246      else
1247	{
1248	  static bool hint;
1249	  if (!hint)
1250	    {
1251	      inform (input_location, "(if you use %<-fpermissive%> G++ will accept your code)");
1252	      hint = true;
1253	    }
1254	}
1255    }
1256
1257  return decl;
1258}
1259
1260/* true means unconditionally make a BLOCK for the next level pushed.  */
1261
1262static bool keep_next_level_flag;
1263
1264static int binding_depth = 0;
1265
1266static void
1267indent (int depth)
1268{
1269  int i;
1270
1271  for (i = 0; i < depth * 2; i++)
1272    putc (' ', stderr);
1273}
1274
1275/* Return a string describing the kind of SCOPE we have.  */
1276static const char *
1277cxx_scope_descriptor (cxx_scope *scope)
1278{
1279  /* The order of this table must match the "scope_kind"
1280     enumerators.  */
1281  static const char* scope_kind_names[] = {
1282    "block-scope",
1283    "cleanup-scope",
1284    "try-scope",
1285    "catch-scope",
1286    "for-scope",
1287    "function-parameter-scope",
1288    "class-scope",
1289    "namespace-scope",
1290    "template-parameter-scope",
1291    "template-explicit-spec-scope"
1292  };
1293  const scope_kind kind = scope->explicit_spec_p
1294    ? sk_template_spec : scope->kind;
1295
1296  return scope_kind_names[kind];
1297}
1298
1299/* Output a debugging information about SCOPE when performing
1300   ACTION at LINE.  */
1301static void
1302cxx_scope_debug (cxx_scope *scope, int line, const char *action)
1303{
1304  const char *desc = cxx_scope_descriptor (scope);
1305  if (scope->this_entity)
1306    verbatim ("%s %s(%E) %p %d\n", action, desc,
1307	      scope->this_entity, (void *) scope, line);
1308  else
1309    verbatim ("%s %s %p %d\n", action, desc, (void *) scope, line);
1310}
1311
1312/* Return the estimated initial size of the hashtable of a NAMESPACE
1313   scope.  */
1314
1315static inline size_t
1316namespace_scope_ht_size (tree ns)
1317{
1318  tree name = DECL_NAME (ns);
1319
1320  return name == std_identifier
1321    ? NAMESPACE_STD_HT_SIZE
1322    : (name == global_scope_name
1323       ? GLOBAL_SCOPE_HT_SIZE
1324       : NAMESPACE_ORDINARY_HT_SIZE);
1325}
1326
1327/* A chain of binding_level structures awaiting reuse.  */
1328
1329static GTY((deletable)) struct cp_binding_level *free_binding_level;
1330
1331/* Insert SCOPE as the innermost binding level.  */
1332
1333void
1334push_binding_level (struct cp_binding_level *scope)
1335{
1336  /* Add it to the front of currently active scopes stack.  */
1337  scope->level_chain = current_binding_level;
1338  current_binding_level = scope;
1339  keep_next_level_flag = false;
1340
1341  if (ENABLE_SCOPE_CHECKING)
1342    {
1343      scope->binding_depth = binding_depth;
1344      indent (binding_depth);
1345      cxx_scope_debug (scope, input_line, "push");
1346      binding_depth++;
1347    }
1348}
1349
1350/* Create a new KIND scope and make it the top of the active scopes stack.
1351   ENTITY is the scope of the associated C++ entity (namespace, class,
1352   function, C++0x enumeration); it is NULL otherwise.  */
1353
1354cxx_scope *
1355begin_scope (scope_kind kind, tree entity)
1356{
1357  cxx_scope *scope;
1358
1359  /* Reuse or create a struct for this binding level.  */
1360  if (!ENABLE_SCOPE_CHECKING && free_binding_level)
1361    {
1362      scope = free_binding_level;
1363      memset (scope, 0, sizeof (cxx_scope));
1364      free_binding_level = scope->level_chain;
1365    }
1366  else
1367    scope = GGC_CNEW (cxx_scope);
1368
1369  scope->this_entity = entity;
1370  scope->more_cleanups_ok = true;
1371  switch (kind)
1372    {
1373    case sk_cleanup:
1374      scope->keep = true;
1375      break;
1376
1377    case sk_template_spec:
1378      scope->explicit_spec_p = true;
1379      kind = sk_template_parms;
1380      /* Fall through.  */
1381    case sk_template_parms:
1382    case sk_block:
1383    case sk_try:
1384    case sk_catch:
1385    case sk_for:
1386    case sk_class:
1387    case sk_scoped_enum:
1388    case sk_function_parms:
1389    case sk_omp:
1390      scope->keep = keep_next_level_flag;
1391      break;
1392
1393    case sk_namespace:
1394      NAMESPACE_LEVEL (entity) = scope;
1395      scope->static_decls =
1396	VEC_alloc (tree, gc,
1397		   DECL_NAME (entity) == std_identifier
1398		   || DECL_NAME (entity) == global_scope_name
1399		   ? 200 : 10);
1400      break;
1401
1402    default:
1403      /* Should not happen.  */
1404      gcc_unreachable ();
1405      break;
1406    }
1407  scope->kind = kind;
1408
1409  push_binding_level (scope);
1410
1411  return scope;
1412}
1413
1414/* We're about to leave current scope.  Pop the top of the stack of
1415   currently active scopes.  Return the enclosing scope, now active.  */
1416
1417cxx_scope *
1418leave_scope (void)
1419{
1420  cxx_scope *scope = current_binding_level;
1421
1422  if (scope->kind == sk_namespace && class_binding_level)
1423    current_binding_level = class_binding_level;
1424
1425  /* We cannot leave a scope, if there are none left.  */
1426  if (NAMESPACE_LEVEL (global_namespace))
1427    gcc_assert (!global_scope_p (scope));
1428
1429  if (ENABLE_SCOPE_CHECKING)
1430    {
1431      indent (--binding_depth);
1432      cxx_scope_debug (scope, input_line, "leave");
1433    }
1434
1435  /* Move one nesting level up.  */
1436  current_binding_level = scope->level_chain;
1437
1438  /* Namespace-scopes are left most probably temporarily, not
1439     completely; they can be reopened later, e.g. in namespace-extension
1440     or any name binding activity that requires us to resume a
1441     namespace.  For classes, we cache some binding levels.  For other
1442     scopes, we just make the structure available for reuse.  */
1443  if (scope->kind != sk_namespace
1444      && scope->kind != sk_class)
1445    {
1446      scope->level_chain = free_binding_level;
1447      gcc_assert (!ENABLE_SCOPE_CHECKING
1448		  || scope->binding_depth == binding_depth);
1449      free_binding_level = scope;
1450    }
1451
1452  /* Find the innermost enclosing class scope, and reset
1453     CLASS_BINDING_LEVEL appropriately.  */
1454  if (scope->kind == sk_class)
1455    {
1456      class_binding_level = NULL;
1457      for (scope = current_binding_level; scope; scope = scope->level_chain)
1458	if (scope->kind == sk_class)
1459	  {
1460	    class_binding_level = scope;
1461	    break;
1462	  }
1463    }
1464
1465  return current_binding_level;
1466}
1467
1468static void
1469resume_scope (struct cp_binding_level* b)
1470{
1471  /* Resuming binding levels is meant only for namespaces,
1472     and those cannot nest into classes.  */
1473  gcc_assert (!class_binding_level);
1474  /* Also, resuming a non-directly nested namespace is a no-no.  */
1475  gcc_assert (b->level_chain == current_binding_level);
1476  current_binding_level = b;
1477  if (ENABLE_SCOPE_CHECKING)
1478    {
1479      b->binding_depth = binding_depth;
1480      indent (binding_depth);
1481      cxx_scope_debug (b, input_line, "resume");
1482      binding_depth++;
1483    }
1484}
1485
1486/* Return the innermost binding level that is not for a class scope.  */
1487
1488static cxx_scope *
1489innermost_nonclass_level (void)
1490{
1491  cxx_scope *b;
1492
1493  b = current_binding_level;
1494  while (b->kind == sk_class)
1495    b = b->level_chain;
1496
1497  return b;
1498}
1499
1500/* We're defining an object of type TYPE.  If it needs a cleanup, but
1501   we're not allowed to add any more objects with cleanups to the current
1502   scope, create a new binding level.  */
1503
1504void
1505maybe_push_cleanup_level (tree type)
1506{
1507  if (type != error_mark_node
1508      && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)
1509      && current_binding_level->more_cleanups_ok == 0)
1510    {
1511      begin_scope (sk_cleanup, NULL);
1512      current_binding_level->statement_list = push_stmt_list ();
1513    }
1514}
1515
1516/* Nonzero if we are currently in the global binding level.  */
1517
1518int
1519global_bindings_p (void)
1520{
1521  return global_scope_p (current_binding_level);
1522}
1523
1524/* True if we are currently in a toplevel binding level.  This
1525   means either the global binding level or a namespace in a toplevel
1526   binding level.  Since there are no non-toplevel namespace levels,
1527   this really means any namespace or template parameter level.  We
1528   also include a class whose context is toplevel.  */
1529
1530bool
1531toplevel_bindings_p (void)
1532{
1533  struct cp_binding_level *b = innermost_nonclass_level ();
1534
1535  return b->kind == sk_namespace || b->kind == sk_template_parms;
1536}
1537
1538/* True if this is a namespace scope, or if we are defining a class
1539   which is itself at namespace scope, or whose enclosing class is
1540   such a class, etc.  */
1541
1542bool
1543namespace_bindings_p (void)
1544{
1545  struct cp_binding_level *b = innermost_nonclass_level ();
1546
1547  return b->kind == sk_namespace;
1548}
1549
1550/* True if the current level needs to have a BLOCK made.  */
1551
1552bool
1553kept_level_p (void)
1554{
1555  return (current_binding_level->blocks != NULL_TREE
1556	  || current_binding_level->keep
1557	  || current_binding_level->kind == sk_cleanup
1558	  || current_binding_level->names != NULL_TREE
1559	  || current_binding_level->using_directives);
1560}
1561
1562/* Returns the kind of the innermost scope.  */
1563
1564scope_kind
1565innermost_scope_kind (void)
1566{
1567  return current_binding_level->kind;
1568}
1569
1570/* Returns true if this scope was created to store template parameters.  */
1571
1572bool
1573template_parm_scope_p (void)
1574{
1575  return innermost_scope_kind () == sk_template_parms;
1576}
1577
1578/* If KEEP is true, make a BLOCK node for the next binding level,
1579   unconditionally.  Otherwise, use the normal logic to decide whether
1580   or not to create a BLOCK.  */
1581
1582void
1583keep_next_level (bool keep)
1584{
1585  keep_next_level_flag = keep;
1586}
1587
1588/* Return the list of declarations of the current level.
1589   Note that this list is in reverse order unless/until
1590   you nreverse it; and when you do nreverse it, you must
1591   store the result back using `storedecls' or you will lose.  */
1592
1593tree
1594getdecls (void)
1595{
1596  return current_binding_level->names;
1597}
1598
1599/* For debugging.  */
1600static int no_print_functions = 0;
1601static int no_print_builtins = 0;
1602
1603static void
1604print_binding_level (struct cp_binding_level* lvl)
1605{
1606  tree t;
1607  int i = 0, len;
1608  fprintf (stderr, " blocks=%p", (void *) lvl->blocks);
1609  if (lvl->more_cleanups_ok)
1610    fprintf (stderr, " more-cleanups-ok");
1611  if (lvl->have_cleanups)
1612    fprintf (stderr, " have-cleanups");
1613  fprintf (stderr, "\n");
1614  if (lvl->names)
1615    {
1616      fprintf (stderr, " names:\t");
1617      /* We can probably fit 3 names to a line?  */
1618      for (t = lvl->names; t; t = TREE_CHAIN (t))
1619	{
1620	  if (no_print_functions && (TREE_CODE (t) == FUNCTION_DECL))
1621	    continue;
1622	  if (no_print_builtins
1623	      && (TREE_CODE (t) == TYPE_DECL)
1624	      && DECL_IS_BUILTIN (t))
1625	    continue;
1626
1627	  /* Function decls tend to have longer names.  */
1628	  if (TREE_CODE (t) == FUNCTION_DECL)
1629	    len = 3;
1630	  else
1631	    len = 2;
1632	  i += len;
1633	  if (i > 6)
1634	    {
1635	      fprintf (stderr, "\n\t");
1636	      i = len;
1637	    }
1638	  print_node_brief (stderr, "", t, 0);
1639	  if (t == error_mark_node)
1640	    break;
1641	}
1642      if (i)
1643	fprintf (stderr, "\n");
1644    }
1645  if (VEC_length (cp_class_binding, lvl->class_shadowed))
1646    {
1647      size_t i;
1648      cp_class_binding *b;
1649      fprintf (stderr, " class-shadowed:");
1650      for (i = 0;
1651	   VEC_iterate(cp_class_binding, lvl->class_shadowed, i, b);
1652	   ++i)
1653	fprintf (stderr, " %s ", IDENTIFIER_POINTER (b->identifier));
1654      fprintf (stderr, "\n");
1655    }
1656  if (lvl->type_shadowed)
1657    {
1658      fprintf (stderr, " type-shadowed:");
1659      for (t = lvl->type_shadowed; t; t = TREE_CHAIN (t))
1660	{
1661	  fprintf (stderr, " %s ", IDENTIFIER_POINTER (TREE_PURPOSE (t)));
1662	}
1663      fprintf (stderr, "\n");
1664    }
1665}
1666
1667void
1668print_other_binding_stack (struct cp_binding_level *stack)
1669{
1670  struct cp_binding_level *level;
1671  for (level = stack; !global_scope_p (level); level = level->level_chain)
1672    {
1673      fprintf (stderr, "binding level %p\n", (void *) level);
1674      print_binding_level (level);
1675    }
1676}
1677
1678void
1679print_binding_stack (void)
1680{
1681  struct cp_binding_level *b;
1682  fprintf (stderr, "current_binding_level=%p\n"
1683	   "class_binding_level=%p\n"
1684	   "NAMESPACE_LEVEL (global_namespace)=%p\n",
1685	   (void *) current_binding_level, (void *) class_binding_level,
1686	   (void *) NAMESPACE_LEVEL (global_namespace));
1687  if (class_binding_level)
1688    {
1689      for (b = class_binding_level; b; b = b->level_chain)
1690	if (b == current_binding_level)
1691	  break;
1692      if (b)
1693	b = class_binding_level;
1694      else
1695	b = current_binding_level;
1696    }
1697  else
1698    b = current_binding_level;
1699  print_other_binding_stack (b);
1700  fprintf (stderr, "global:\n");
1701  print_binding_level (NAMESPACE_LEVEL (global_namespace));
1702}
1703
1704/* Return the type associated with id.  */
1705
1706tree
1707identifier_type_value (tree id)
1708{
1709  timevar_push (TV_NAME_LOOKUP);
1710  /* There is no type with that name, anywhere.  */
1711  if (REAL_IDENTIFIER_TYPE_VALUE (id) == NULL_TREE)
1712    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
1713  /* This is not the type marker, but the real thing.  */
1714  if (REAL_IDENTIFIER_TYPE_VALUE (id) != global_type_node)
1715    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, REAL_IDENTIFIER_TYPE_VALUE (id));
1716  /* Have to search for it. It must be on the global level, now.
1717     Ask lookup_name not to return non-types.  */
1718  id = lookup_name_real (id, 2, 1, /*block_p=*/true, 0, LOOKUP_COMPLAIN);
1719  if (id)
1720    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, TREE_TYPE (id));
1721  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
1722}
1723
1724/* Return the IDENTIFIER_GLOBAL_VALUE of T, for use in common code, since
1725   the definition of IDENTIFIER_GLOBAL_VALUE is different for C and C++.  */
1726
1727tree
1728identifier_global_value	(tree t)
1729{
1730  return IDENTIFIER_GLOBAL_VALUE (t);
1731}
1732
1733/* Push a definition of struct, union or enum tag named ID.  into
1734   binding_level B.  DECL is a TYPE_DECL for the type.  We assume that
1735   the tag ID is not already defined.  */
1736
1737static void
1738set_identifier_type_value_with_scope (tree id, tree decl, cxx_scope *b)
1739{
1740  tree type;
1741
1742  if (b->kind != sk_namespace)
1743    {
1744      /* Shadow the marker, not the real thing, so that the marker
1745	 gets restored later.  */
1746      tree old_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
1747      b->type_shadowed
1748	= tree_cons (id, old_type_value, b->type_shadowed);
1749      type = decl ? TREE_TYPE (decl) : NULL_TREE;
1750      TREE_TYPE (b->type_shadowed) = type;
1751    }
1752  else
1753    {
1754      cxx_binding *binding =
1755	binding_for_name (NAMESPACE_LEVEL (current_namespace), id);
1756      gcc_assert (decl);
1757      if (binding->value)
1758	supplement_binding (binding, decl);
1759      else
1760	binding->value = decl;
1761
1762      /* Store marker instead of real type.  */
1763      type = global_type_node;
1764    }
1765  SET_IDENTIFIER_TYPE_VALUE (id, type);
1766}
1767
1768/* As set_identifier_type_value_with_scope, but using
1769   current_binding_level.  */
1770
1771void
1772set_identifier_type_value (tree id, tree decl)
1773{
1774  set_identifier_type_value_with_scope (id, decl, current_binding_level);
1775}
1776
1777/* Return the name for the constructor (or destructor) for the
1778   specified class TYPE.  When given a template, this routine doesn't
1779   lose the specialization.  */
1780
1781static inline tree
1782constructor_name_full (tree type)
1783{
1784  return TYPE_IDENTIFIER (TYPE_MAIN_VARIANT (type));
1785}
1786
1787/* Return the name for the constructor (or destructor) for the
1788   specified class.  When given a template, return the plain
1789   unspecialized name.  */
1790
1791tree
1792constructor_name (tree type)
1793{
1794  tree name;
1795  name = constructor_name_full (type);
1796  if (IDENTIFIER_TEMPLATE (name))
1797    name = IDENTIFIER_TEMPLATE (name);
1798  return name;
1799}
1800
1801/* Returns TRUE if NAME is the name for the constructor for TYPE,
1802   which must be a class type.  */
1803
1804bool
1805constructor_name_p (tree name, tree type)
1806{
1807  tree ctor_name;
1808
1809  gcc_assert (MAYBE_CLASS_TYPE_P (type));
1810
1811  if (!name)
1812    return false;
1813
1814  if (TREE_CODE (name) != IDENTIFIER_NODE)
1815    return false;
1816
1817  ctor_name = constructor_name_full (type);
1818  if (name == ctor_name)
1819    return true;
1820  if (IDENTIFIER_TEMPLATE (ctor_name)
1821      && name == IDENTIFIER_TEMPLATE (ctor_name))
1822    return true;
1823  return false;
1824}
1825
1826/* Counter used to create anonymous type names.  */
1827
1828static GTY(()) int anon_cnt;
1829
1830/* Return an IDENTIFIER which can be used as a name for
1831   anonymous structs and unions.  */
1832
1833tree
1834make_anon_name (void)
1835{
1836  char buf[32];
1837
1838  sprintf (buf, ANON_AGGRNAME_FORMAT, anon_cnt++);
1839  return get_identifier (buf);
1840}
1841
1842/* This code is practically identical to that for creating
1843   anonymous names, but is just used for lambdas instead.  This is necessary
1844   because anonymous names are recognized and cannot be passed to template
1845   functions.  */
1846/* FIXME is this still necessary? */
1847
1848static GTY(()) int lambda_cnt = 0;
1849
1850tree
1851make_lambda_name (void)
1852{
1853  char buf[32];
1854
1855  sprintf (buf, LAMBDANAME_FORMAT, lambda_cnt++);
1856  return get_identifier (buf);
1857}
1858
1859/* Return (from the stack of) the BINDING, if any, established at SCOPE.  */
1860
1861static inline cxx_binding *
1862find_binding (cxx_scope *scope, cxx_binding *binding)
1863{
1864  timevar_push (TV_NAME_LOOKUP);
1865
1866  for (; binding != NULL; binding = binding->previous)
1867    if (binding->scope == scope)
1868      POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, binding);
1869
1870  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, (cxx_binding *)0);
1871}
1872
1873/* Return the binding for NAME in SCOPE, if any.  Otherwise, return NULL.  */
1874
1875static inline cxx_binding *
1876cxx_scope_find_binding_for_name (cxx_scope *scope, tree name)
1877{
1878  cxx_binding *b = IDENTIFIER_NAMESPACE_BINDINGS (name);
1879  if (b)
1880    {
1881      /* Fold-in case where NAME is used only once.  */
1882      if (scope == b->scope && b->previous == NULL)
1883	return b;
1884      return find_binding (scope, b);
1885    }
1886  return NULL;
1887}
1888
1889/* Always returns a binding for name in scope.  If no binding is
1890   found, make a new one.  */
1891
1892static cxx_binding *
1893binding_for_name (cxx_scope *scope, tree name)
1894{
1895  cxx_binding *result;
1896
1897  result = cxx_scope_find_binding_for_name (scope, name);
1898  if (result)
1899    return result;
1900  /* Not found, make a new one.  */
1901  result = cxx_binding_make (NULL, NULL);
1902  result->previous = IDENTIFIER_NAMESPACE_BINDINGS (name);
1903  result->scope = scope;
1904  result->is_local = false;
1905  result->value_is_inherited = false;
1906  IDENTIFIER_NAMESPACE_BINDINGS (name) = result;
1907  return result;
1908}
1909
1910/* Walk through the bindings associated to the name of FUNCTION,
1911   and return the first binding that declares a function with a
1912   "C" linkage specification, a.k.a 'extern "C"'.
1913   This function looks for the binding, regardless of which scope it
1914   has been defined in. It basically looks in all the known scopes.
1915   Note that this function does not lookup for bindings of builtin functions
1916   or for functions declared in system headers.  */
1917static cxx_binding*
1918lookup_extern_c_fun_binding_in_all_ns (tree function)
1919{
1920  tree name;
1921  cxx_binding *iter;
1922
1923  gcc_assert (function && TREE_CODE (function) == FUNCTION_DECL);
1924
1925  name = DECL_NAME (function);
1926  gcc_assert (name && TREE_CODE (name) == IDENTIFIER_NODE);
1927
1928  for (iter = IDENTIFIER_NAMESPACE_BINDINGS (name);
1929       iter;
1930       iter = iter->previous)
1931    {
1932      if (iter->value
1933	  && TREE_CODE (iter->value) == FUNCTION_DECL
1934	  && DECL_EXTERN_C_P (iter->value)
1935	  && !DECL_ARTIFICIAL (iter->value))
1936	{
1937	  return iter;
1938	}
1939    }
1940  return NULL;
1941}
1942
1943/* Insert another USING_DECL into the current binding level, returning
1944   this declaration. If this is a redeclaration, do nothing, and
1945   return NULL_TREE if this not in namespace scope (in namespace
1946   scope, a using decl might extend any previous bindings).  */
1947
1948static tree
1949push_using_decl (tree scope, tree name)
1950{
1951  tree decl;
1952
1953  timevar_push (TV_NAME_LOOKUP);
1954  gcc_assert (TREE_CODE (scope) == NAMESPACE_DECL);
1955  gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
1956  for (decl = current_binding_level->usings; decl; decl = TREE_CHAIN (decl))
1957    if (USING_DECL_SCOPE (decl) == scope && DECL_NAME (decl) == name)
1958      break;
1959  if (decl)
1960    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
1961			    namespace_bindings_p () ? decl : NULL_TREE);
1962  decl = build_lang_decl (USING_DECL, name, NULL_TREE);
1963  USING_DECL_SCOPE (decl) = scope;
1964  TREE_CHAIN (decl) = current_binding_level->usings;
1965  current_binding_level->usings = decl;
1966  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
1967}
1968
1969/* Same as pushdecl, but define X in binding-level LEVEL.  We rely on the
1970   caller to set DECL_CONTEXT properly.  */
1971
1972tree
1973pushdecl_with_scope (tree x, cxx_scope *level, bool is_friend)
1974{
1975  struct cp_binding_level *b;
1976  tree function_decl = current_function_decl;
1977
1978  timevar_push (TV_NAME_LOOKUP);
1979  current_function_decl = NULL_TREE;
1980  if (level->kind == sk_class)
1981    {
1982      b = class_binding_level;
1983      class_binding_level = level;
1984      pushdecl_class_level (x);
1985      class_binding_level = b;
1986    }
1987  else
1988    {
1989      b = current_binding_level;
1990      current_binding_level = level;
1991      x = pushdecl_maybe_friend (x, is_friend);
1992      current_binding_level = b;
1993    }
1994  current_function_decl = function_decl;
1995  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
1996}
1997
1998/* DECL is a FUNCTION_DECL for a non-member function, which may have
1999   other definitions already in place.  We get around this by making
2000   the value of the identifier point to a list of all the things that
2001   want to be referenced by that name.  It is then up to the users of
2002   that name to decide what to do with that list.
2003
2004   DECL may also be a TEMPLATE_DECL, with a FUNCTION_DECL in its
2005   DECL_TEMPLATE_RESULT.  It is dealt with the same way.
2006
2007   FLAGS is a bitwise-or of the following values:
2008     PUSH_LOCAL: Bind DECL in the current scope, rather than at
2009		 namespace scope.
2010     PUSH_USING: DECL is being pushed as the result of a using
2011		 declaration.
2012
2013   IS_FRIEND is true if this is a friend declaration.
2014
2015   The value returned may be a previous declaration if we guessed wrong
2016   about what language DECL should belong to (C or C++).  Otherwise,
2017   it's always DECL (and never something that's not a _DECL).  */
2018
2019static tree
2020push_overloaded_decl (tree decl, int flags, bool is_friend)
2021{
2022  tree name = DECL_NAME (decl);
2023  tree old;
2024  tree new_binding;
2025  int doing_global = (namespace_bindings_p () || !(flags & PUSH_LOCAL));
2026
2027  timevar_push (TV_NAME_LOOKUP);
2028  if (doing_global)
2029    old = namespace_binding (name, DECL_CONTEXT (decl));
2030  else
2031    old = lookup_name_innermost_nonclass_level (name);
2032
2033  if (old)
2034    {
2035      if (TREE_CODE (old) == TYPE_DECL && DECL_ARTIFICIAL (old))
2036	{
2037	  tree t = TREE_TYPE (old);
2038	  if (MAYBE_CLASS_TYPE_P (t) && warn_shadow
2039	      && (! DECL_IN_SYSTEM_HEADER (decl)
2040		  || ! DECL_IN_SYSTEM_HEADER (old)))
2041	    warning (OPT_Wshadow, "%q#D hides constructor for %q#T", decl, t);
2042	  old = NULL_TREE;
2043	}
2044      else if (is_overloaded_fn (old))
2045	{
2046	  tree tmp;
2047
2048	  for (tmp = old; tmp; tmp = OVL_NEXT (tmp))
2049	    {
2050	      tree fn = OVL_CURRENT (tmp);
2051	      tree dup;
2052
2053	      if (TREE_CODE (tmp) == OVERLOAD && OVL_USED (tmp)
2054		  && !(flags & PUSH_USING)
2055		  && compparms (TYPE_ARG_TYPES (TREE_TYPE (fn)),
2056				TYPE_ARG_TYPES (TREE_TYPE (decl)))
2057		  && ! decls_match (fn, decl))
2058		error ("%q#D conflicts with previous using declaration %q#D",
2059		       decl, fn);
2060
2061	      dup = duplicate_decls (decl, fn, is_friend);
2062	      /* If DECL was a redeclaration of FN -- even an invalid
2063		 one -- pass that information along to our caller.  */
2064	      if (dup == fn || dup == error_mark_node)
2065		POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, dup);
2066	    }
2067
2068	  /* We don't overload implicit built-ins.  duplicate_decls()
2069	     may fail to merge the decls if the new decl is e.g. a
2070	     template function.  */
2071	  if (TREE_CODE (old) == FUNCTION_DECL
2072	      && DECL_ANTICIPATED (old)
2073	      && !DECL_HIDDEN_FRIEND_P (old))
2074	    old = NULL;
2075	}
2076      else if (old == error_mark_node)
2077	/* Ignore the undefined symbol marker.  */
2078	old = NULL_TREE;
2079      else
2080	{
2081	  error ("previous non-function declaration %q+#D", old);
2082	  error ("conflicts with function declaration %q#D", decl);
2083	  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
2084	}
2085    }
2086
2087  if (old || TREE_CODE (decl) == TEMPLATE_DECL
2088      /* If it's a using declaration, we always need to build an OVERLOAD,
2089	 because it's the only way to remember that the declaration comes
2090	 from 'using', and have the lookup behave correctly.  */
2091      || (flags & PUSH_USING))
2092    {
2093      if (old && TREE_CODE (old) != OVERLOAD)
2094	new_binding = ovl_cons (decl, ovl_cons (old, NULL_TREE));
2095      else
2096	new_binding = ovl_cons (decl, old);
2097      if (flags & PUSH_USING)
2098	OVL_USED (new_binding) = 1;
2099    }
2100  else
2101    /* NAME is not ambiguous.  */
2102    new_binding = decl;
2103
2104  if (doing_global)
2105    set_namespace_binding (name, current_namespace, new_binding);
2106  else
2107    {
2108      /* We only create an OVERLOAD if there was a previous binding at
2109	 this level, or if decl is a template. In the former case, we
2110	 need to remove the old binding and replace it with the new
2111	 binding.  We must also run through the NAMES on the binding
2112	 level where the name was bound to update the chain.  */
2113
2114      if (TREE_CODE (new_binding) == OVERLOAD && old)
2115	{
2116	  tree *d;
2117
2118	  for (d = &IDENTIFIER_BINDING (name)->scope->names;
2119	       *d;
2120	       d = &TREE_CHAIN (*d))
2121	    if (*d == old
2122		|| (TREE_CODE (*d) == TREE_LIST
2123		    && TREE_VALUE (*d) == old))
2124	      {
2125		if (TREE_CODE (*d) == TREE_LIST)
2126		  /* Just replace the old binding with the new.  */
2127		  TREE_VALUE (*d) = new_binding;
2128		else
2129		  /* Build a TREE_LIST to wrap the OVERLOAD.  */
2130		  *d = tree_cons (NULL_TREE, new_binding,
2131				  TREE_CHAIN (*d));
2132
2133		/* And update the cxx_binding node.  */
2134		IDENTIFIER_BINDING (name)->value = new_binding;
2135		POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
2136	      }
2137
2138	  /* We should always find a previous binding in this case.  */
2139	  gcc_unreachable ();
2140	}
2141
2142      /* Install the new binding.  */
2143      push_local_binding (name, new_binding, flags);
2144    }
2145
2146  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
2147}
2148
2149/* Check a non-member using-declaration. Return the name and scope
2150   being used, and the USING_DECL, or NULL_TREE on failure.  */
2151
2152static tree
2153validate_nonmember_using_decl (tree decl, tree scope, tree name)
2154{
2155  /* [namespace.udecl]
2156       A using-declaration for a class member shall be a
2157       member-declaration.  */
2158  if (TYPE_P (scope))
2159    {
2160      error ("%qT is not a namespace", scope);
2161      return NULL_TREE;
2162    }
2163  else if (scope == error_mark_node)
2164    return NULL_TREE;
2165
2166  if (TREE_CODE (decl) == TEMPLATE_ID_EXPR)
2167    {
2168      /* 7.3.3/5
2169	   A using-declaration shall not name a template-id.  */
2170      error ("a using-declaration cannot specify a template-id.  "
2171	     "Try %<using %D%>", name);
2172      return NULL_TREE;
2173    }
2174
2175  if (TREE_CODE (decl) == NAMESPACE_DECL)
2176    {
2177      error ("namespace %qD not allowed in using-declaration", decl);
2178      return NULL_TREE;
2179    }
2180
2181  if (TREE_CODE (decl) == SCOPE_REF)
2182    {
2183      /* It's a nested name with template parameter dependent scope.
2184	 This can only be using-declaration for class member.  */
2185      error ("%qT is not a namespace", TREE_OPERAND (decl, 0));
2186      return NULL_TREE;
2187    }
2188
2189  if (is_overloaded_fn (decl))
2190    decl = get_first_fn (decl);
2191
2192  gcc_assert (DECL_P (decl));
2193
2194  /* Make a USING_DECL.  */
2195  return push_using_decl (scope, name);
2196}
2197
2198/* Process local and global using-declarations.  */
2199
2200static void
2201do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype,
2202			 tree *newval, tree *newtype)
2203{
2204  struct scope_binding decls = EMPTY_SCOPE_BINDING;
2205
2206  *newval = *newtype = NULL_TREE;
2207  if (!qualified_lookup_using_namespace (name, scope, &decls, 0))
2208    /* Lookup error */
2209    return;
2210
2211  if (!decls.value && !decls.type)
2212    {
2213      error ("%qD not declared", name);
2214      return;
2215    }
2216
2217  /* Shift the old and new bindings around so we're comparing class and
2218     enumeration names to each other.  */
2219  if (oldval && DECL_IMPLICIT_TYPEDEF_P (oldval))
2220    {
2221      oldtype = oldval;
2222      oldval = NULL_TREE;
2223    }
2224
2225  if (decls.value && DECL_IMPLICIT_TYPEDEF_P (decls.value))
2226    {
2227      decls.type = decls.value;
2228      decls.value = NULL_TREE;
2229    }
2230
2231  /* It is impossible to overload a built-in function; any explicit
2232     declaration eliminates the built-in declaration.  So, if OLDVAL
2233     is a built-in, then we can just pretend it isn't there.  */
2234  if (oldval
2235      && TREE_CODE (oldval) == FUNCTION_DECL
2236      && DECL_ANTICIPATED (oldval)
2237      && !DECL_HIDDEN_FRIEND_P (oldval))
2238    oldval = NULL_TREE;
2239
2240  if (decls.value)
2241    {
2242      /* Check for using functions.  */
2243      if (is_overloaded_fn (decls.value))
2244	{
2245	  tree tmp, tmp1;
2246
2247	  if (oldval && !is_overloaded_fn (oldval))
2248	    {
2249	      error ("%qD is already declared in this scope", name);
2250	      oldval = NULL_TREE;
2251	    }
2252
2253	  *newval = oldval;
2254	  for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp))
2255	    {
2256	      tree new_fn = OVL_CURRENT (tmp);
2257
2258	      /* [namespace.udecl]
2259
2260		 If a function declaration in namespace scope or block
2261		 scope has the same name and the same parameter types as a
2262		 function introduced by a using declaration the program is
2263		 ill-formed.  */
2264	      for (tmp1 = oldval; tmp1; tmp1 = OVL_NEXT (tmp1))
2265		{
2266		  tree old_fn = OVL_CURRENT (tmp1);
2267
2268		  if (new_fn == old_fn)
2269		    /* The function already exists in the current namespace.  */
2270		    break;
2271		  else if (OVL_USED (tmp1))
2272		    continue; /* this is a using decl */
2273		  else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (new_fn)),
2274				      TYPE_ARG_TYPES (TREE_TYPE (old_fn))))
2275		    {
2276		      gcc_assert (!DECL_ANTICIPATED (old_fn)
2277				  || DECL_HIDDEN_FRIEND_P (old_fn));
2278
2279		      /* There was already a non-using declaration in
2280			 this scope with the same parameter types. If both
2281			 are the same extern "C" functions, that's ok.  */
2282		      if (decls_match (new_fn, old_fn))
2283			break;
2284		      else
2285			{
2286			  error ("%qD is already declared in this scope", name);
2287			  break;
2288			}
2289		    }
2290		}
2291
2292	      /* If we broke out of the loop, there's no reason to add
2293		 this function to the using declarations for this
2294		 scope.  */
2295	      if (tmp1)
2296		continue;
2297
2298	      /* If we are adding to an existing OVERLOAD, then we no
2299		 longer know the type of the set of functions.  */
2300	      if (*newval && TREE_CODE (*newval) == OVERLOAD)
2301		TREE_TYPE (*newval) = unknown_type_node;
2302	      /* Add this new function to the set.  */
2303	      *newval = build_overload (OVL_CURRENT (tmp), *newval);
2304	      /* If there is only one function, then we use its type.  (A
2305		 using-declaration naming a single function can be used in
2306		 contexts where overload resolution cannot be
2307		 performed.)  */
2308	      if (TREE_CODE (*newval) != OVERLOAD)
2309		{
2310		  *newval = ovl_cons (*newval, NULL_TREE);
2311		  TREE_TYPE (*newval) = TREE_TYPE (OVL_CURRENT (tmp));
2312		}
2313	      OVL_USED (*newval) = 1;
2314	    }
2315	}
2316      else
2317	{
2318	  *newval = decls.value;
2319	  if (oldval && !decls_match (*newval, oldval))
2320	    error ("%qD is already declared in this scope", name);
2321	}
2322    }
2323  else
2324    *newval = oldval;
2325
2326  if (decls.type && TREE_CODE (decls.type) == TREE_LIST)
2327    {
2328      error ("reference to %qD is ambiguous", name);
2329      print_candidates (decls.type);
2330    }
2331  else
2332    {
2333      *newtype = decls.type;
2334      if (oldtype && *newtype && !decls_match (oldtype, *newtype))
2335	error ("%qD is already declared in this scope", name);
2336    }
2337
2338    /* If *newval is empty, shift any class or enumeration name down.  */
2339    if (!*newval)
2340      {
2341	*newval = *newtype;
2342	*newtype = NULL_TREE;
2343      }
2344}
2345
2346/* Process a using-declaration at function scope.  */
2347
2348void
2349do_local_using_decl (tree decl, tree scope, tree name)
2350{
2351  tree oldval, oldtype, newval, newtype;
2352  tree orig_decl = decl;
2353
2354  decl = validate_nonmember_using_decl (decl, scope, name);
2355  if (decl == NULL_TREE)
2356    return;
2357
2358  if (building_stmt_tree ()
2359      && at_function_scope_p ())
2360    add_decl_expr (decl);
2361
2362  oldval = lookup_name_innermost_nonclass_level (name);
2363  oldtype = lookup_type_current_level (name);
2364
2365  do_nonmember_using_decl (scope, name, oldval, oldtype, &newval, &newtype);
2366
2367  if (newval)
2368    {
2369      if (is_overloaded_fn (newval))
2370	{
2371	  tree fn, term;
2372
2373	  /* We only need to push declarations for those functions
2374	     that were not already bound in the current level.
2375	     The old value might be NULL_TREE, it might be a single
2376	     function, or an OVERLOAD.  */
2377	  if (oldval && TREE_CODE (oldval) == OVERLOAD)
2378	    term = OVL_FUNCTION (oldval);
2379	  else
2380	    term = oldval;
2381	  for (fn = newval; fn && OVL_CURRENT (fn) != term;
2382	       fn = OVL_NEXT (fn))
2383	    push_overloaded_decl (OVL_CURRENT (fn),
2384				  PUSH_LOCAL | PUSH_USING,
2385				  false);
2386	}
2387      else
2388	push_local_binding (name, newval, PUSH_USING);
2389    }
2390  if (newtype)
2391    {
2392      push_local_binding (name, newtype, PUSH_USING);
2393      set_identifier_type_value (name, newtype);
2394    }
2395
2396  /* Emit debug info.  */
2397  if (!processing_template_decl)
2398    cp_emit_debug_info_for_using (orig_decl, current_scope());
2399}
2400
2401/* Returns true if ROOT (a namespace, class, or function) encloses
2402   CHILD.  CHILD may be either a class type or a namespace.  */
2403
2404bool
2405is_ancestor (tree root, tree child)
2406{
2407  gcc_assert ((TREE_CODE (root) == NAMESPACE_DECL
2408	       || TREE_CODE (root) == FUNCTION_DECL
2409	       || CLASS_TYPE_P (root)));
2410  gcc_assert ((TREE_CODE (child) == NAMESPACE_DECL
2411	       || CLASS_TYPE_P (child)));
2412
2413  /* The global namespace encloses everything.  */
2414  if (root == global_namespace)
2415    return true;
2416
2417  while (true)
2418    {
2419      /* If we've run out of scopes, stop.  */
2420      if (!child)
2421	return false;
2422      /* If we've reached the ROOT, it encloses CHILD.  */
2423      if (root == child)
2424	return true;
2425      /* Go out one level.  */
2426      if (TYPE_P (child))
2427	child = TYPE_NAME (child);
2428      child = DECL_CONTEXT (child);
2429    }
2430}
2431
2432/* Enter the class or namespace scope indicated by T suitable for name
2433   lookup.  T can be arbitrary scope, not necessary nested inside the
2434   current scope.  Returns a non-null scope to pop iff pop_scope
2435   should be called later to exit this scope.  */
2436
2437tree
2438push_scope (tree t)
2439{
2440  if (TREE_CODE (t) == NAMESPACE_DECL)
2441    push_decl_namespace (t);
2442  else if (CLASS_TYPE_P (t))
2443    {
2444      if (!at_class_scope_p ()
2445	  || !same_type_p (current_class_type, t))
2446	push_nested_class (t);
2447      else
2448	/* T is the same as the current scope.  There is therefore no
2449	   need to re-enter the scope.  Since we are not actually
2450	   pushing a new scope, our caller should not call
2451	   pop_scope.  */
2452	t = NULL_TREE;
2453    }
2454
2455  return t;
2456}
2457
2458/* Leave scope pushed by push_scope.  */
2459
2460void
2461pop_scope (tree t)
2462{
2463  if (TREE_CODE (t) == NAMESPACE_DECL)
2464    pop_decl_namespace ();
2465  else if CLASS_TYPE_P (t)
2466    pop_nested_class ();
2467}
2468
2469/* Subroutine of push_inner_scope.  */
2470
2471static void
2472push_inner_scope_r (tree outer, tree inner)
2473{
2474  tree prev;
2475
2476  if (outer == inner
2477      || (TREE_CODE (inner) != NAMESPACE_DECL && !CLASS_TYPE_P (inner)))
2478    return;
2479
2480  prev = CP_DECL_CONTEXT (TREE_CODE (inner) == NAMESPACE_DECL ? inner : TYPE_NAME (inner));
2481  if (outer != prev)
2482    push_inner_scope_r (outer, prev);
2483  if (TREE_CODE (inner) == NAMESPACE_DECL)
2484    {
2485      struct cp_binding_level *save_template_parm = 0;
2486      /* Temporary take out template parameter scopes.  They are saved
2487	 in reversed order in save_template_parm.  */
2488      while (current_binding_level->kind == sk_template_parms)
2489	{
2490	  struct cp_binding_level *b = current_binding_level;
2491	  current_binding_level = b->level_chain;
2492	  b->level_chain = save_template_parm;
2493	  save_template_parm = b;
2494	}
2495
2496      resume_scope (NAMESPACE_LEVEL (inner));
2497      current_namespace = inner;
2498
2499      /* Restore template parameter scopes.  */
2500      while (save_template_parm)
2501	{
2502	  struct cp_binding_level *b = save_template_parm;
2503	  save_template_parm = b->level_chain;
2504	  b->level_chain = current_binding_level;
2505	  current_binding_level = b;
2506	}
2507    }
2508  else
2509    pushclass (inner);
2510}
2511
2512/* Enter the scope INNER from current scope.  INNER must be a scope
2513   nested inside current scope.  This works with both name lookup and
2514   pushing name into scope.  In case a template parameter scope is present,
2515   namespace is pushed under the template parameter scope according to
2516   name lookup rule in 14.6.1/6.
2517
2518   Return the former current scope suitable for pop_inner_scope.  */
2519
2520tree
2521push_inner_scope (tree inner)
2522{
2523  tree outer = current_scope ();
2524  if (!outer)
2525    outer = current_namespace;
2526
2527  push_inner_scope_r (outer, inner);
2528  return outer;
2529}
2530
2531/* Exit the current scope INNER back to scope OUTER.  */
2532
2533void
2534pop_inner_scope (tree outer, tree inner)
2535{
2536  if (outer == inner
2537      || (TREE_CODE (inner) != NAMESPACE_DECL && !CLASS_TYPE_P (inner)))
2538    return;
2539
2540  while (outer != inner)
2541    {
2542      if (TREE_CODE (inner) == NAMESPACE_DECL)
2543	{
2544	  struct cp_binding_level *save_template_parm = 0;
2545	  /* Temporary take out template parameter scopes.  They are saved
2546	     in reversed order in save_template_parm.  */
2547	  while (current_binding_level->kind == sk_template_parms)
2548	    {
2549	      struct cp_binding_level *b = current_binding_level;
2550	      current_binding_level = b->level_chain;
2551	      b->level_chain = save_template_parm;
2552	      save_template_parm = b;
2553	    }
2554
2555	  pop_namespace ();
2556
2557	  /* Restore template parameter scopes.  */
2558	  while (save_template_parm)
2559	    {
2560	      struct cp_binding_level *b = save_template_parm;
2561	      save_template_parm = b->level_chain;
2562	      b->level_chain = current_binding_level;
2563	      current_binding_level = b;
2564	    }
2565	}
2566      else
2567	popclass ();
2568
2569      inner = CP_DECL_CONTEXT (TREE_CODE (inner) == NAMESPACE_DECL ? inner : TYPE_NAME (inner));
2570    }
2571}
2572
2573/* Do a pushlevel for class declarations.  */
2574
2575void
2576pushlevel_class (void)
2577{
2578  class_binding_level = begin_scope (sk_class, current_class_type);
2579}
2580
2581/* ...and a poplevel for class declarations.  */
2582
2583void
2584poplevel_class (void)
2585{
2586  struct cp_binding_level *level = class_binding_level;
2587  cp_class_binding *cb;
2588  size_t i;
2589  tree shadowed;
2590
2591  timevar_push (TV_NAME_LOOKUP);
2592  gcc_assert (level != 0);
2593
2594  /* If we're leaving a toplevel class, cache its binding level.  */
2595  if (current_class_depth == 1)
2596    previous_class_level = level;
2597  for (shadowed = level->type_shadowed;
2598       shadowed;
2599       shadowed = TREE_CHAIN (shadowed))
2600    SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (shadowed), TREE_VALUE (shadowed));
2601
2602  /* Remove the bindings for all of the class-level declarations.  */
2603  if (level->class_shadowed)
2604    {
2605      for (i = 0;
2606	   VEC_iterate (cp_class_binding, level->class_shadowed, i, cb);
2607	   ++i)
2608	IDENTIFIER_BINDING (cb->identifier) = cb->base.previous;
2609      ggc_free (level->class_shadowed);
2610      level->class_shadowed = NULL;
2611    }
2612
2613  /* Now, pop out of the binding level which we created up in the
2614     `pushlevel_class' routine.  */
2615  gcc_assert (current_binding_level == level);
2616  leave_scope ();
2617  timevar_pop (TV_NAME_LOOKUP);
2618}
2619
2620/* Set INHERITED_VALUE_BINDING_P on BINDING to true or false, as
2621   appropriate.  DECL is the value to which a name has just been
2622   bound.  CLASS_TYPE is the class in which the lookup occurred.  */
2623
2624static void
2625set_inherited_value_binding_p (cxx_binding *binding, tree decl,
2626			       tree class_type)
2627{
2628  if (binding->value == decl && TREE_CODE (decl) != TREE_LIST)
2629    {
2630      tree context;
2631
2632      if (TREE_CODE (decl) == OVERLOAD)
2633	context = CP_DECL_CONTEXT (OVL_CURRENT (decl));
2634      else
2635	{
2636	  gcc_assert (DECL_P (decl));
2637	  context = context_for_name_lookup (decl);
2638	}
2639
2640      if (is_properly_derived_from (class_type, context))
2641	INHERITED_VALUE_BINDING_P (binding) = 1;
2642      else
2643	INHERITED_VALUE_BINDING_P (binding) = 0;
2644    }
2645  else if (binding->value == decl)
2646    /* We only encounter a TREE_LIST when there is an ambiguity in the
2647       base classes.  Such an ambiguity can be overridden by a
2648       definition in this class.  */
2649    INHERITED_VALUE_BINDING_P (binding) = 1;
2650  else
2651    INHERITED_VALUE_BINDING_P (binding) = 0;
2652}
2653
2654/* Make the declaration of X appear in CLASS scope.  */
2655
2656bool
2657pushdecl_class_level (tree x)
2658{
2659  tree name;
2660  bool is_valid = true;
2661
2662  /* Do nothing if we're adding to an outer lambda closure type,
2663     outer_binding will add it later if it's needed.  */
2664  if (current_class_type != class_binding_level->this_entity)
2665    return true;
2666
2667  timevar_push (TV_NAME_LOOKUP);
2668  /* Get the name of X.  */
2669  if (TREE_CODE (x) == OVERLOAD)
2670    name = DECL_NAME (get_first_fn (x));
2671  else
2672    name = DECL_NAME (x);
2673
2674  if (name)
2675    {
2676      is_valid = push_class_level_binding (name, x);
2677      if (TREE_CODE (x) == TYPE_DECL)
2678	set_identifier_type_value (name, x);
2679    }
2680  else if (ANON_AGGR_TYPE_P (TREE_TYPE (x)))
2681    {
2682      /* If X is an anonymous aggregate, all of its members are
2683	 treated as if they were members of the class containing the
2684	 aggregate, for naming purposes.  */
2685      tree f;
2686
2687      for (f = TYPE_FIELDS (TREE_TYPE (x)); f; f = TREE_CHAIN (f))
2688	{
2689	  location_t save_location = input_location;
2690	  input_location = DECL_SOURCE_LOCATION (f);
2691	  if (!pushdecl_class_level (f))
2692	    is_valid = false;
2693	  input_location = save_location;
2694	}
2695    }
2696  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, is_valid);
2697}
2698
2699/* Return the BINDING (if any) for NAME in SCOPE, which is a class
2700   scope.  If the value returned is non-NULL, and the PREVIOUS field
2701   is not set, callers must set the PREVIOUS field explicitly.  */
2702
2703static cxx_binding *
2704get_class_binding (tree name, cxx_scope *scope)
2705{
2706  tree class_type;
2707  tree type_binding;
2708  tree value_binding;
2709  cxx_binding *binding;
2710
2711  class_type = scope->this_entity;
2712
2713  /* Get the type binding.  */
2714  type_binding = lookup_member (class_type, name,
2715				/*protect=*/2, /*want_type=*/true);
2716  /* Get the value binding.  */
2717  value_binding = lookup_member (class_type, name,
2718				 /*protect=*/2, /*want_type=*/false);
2719
2720  if (value_binding
2721      && (TREE_CODE (value_binding) == TYPE_DECL
2722	  || DECL_CLASS_TEMPLATE_P (value_binding)
2723	  || (TREE_CODE (value_binding) == TREE_LIST
2724	      && TREE_TYPE (value_binding) == error_mark_node
2725	      && (TREE_CODE (TREE_VALUE (value_binding))
2726		  == TYPE_DECL))))
2727    /* We found a type binding, even when looking for a non-type
2728       binding.  This means that we already processed this binding
2729       above.  */
2730    ;
2731  else if (value_binding)
2732    {
2733      if (TREE_CODE (value_binding) == TREE_LIST
2734	  && TREE_TYPE (value_binding) == error_mark_node)
2735	/* NAME is ambiguous.  */
2736	;
2737      else if (BASELINK_P (value_binding))
2738	/* NAME is some overloaded functions.  */
2739	value_binding = BASELINK_FUNCTIONS (value_binding);
2740    }
2741
2742  /* If we found either a type binding or a value binding, create a
2743     new binding object.  */
2744  if (type_binding || value_binding)
2745    {
2746      binding = new_class_binding (name,
2747				   value_binding,
2748				   type_binding,
2749				   scope);
2750      /* This is a class-scope binding, not a block-scope binding.  */
2751      LOCAL_BINDING_P (binding) = 0;
2752      set_inherited_value_binding_p (binding, value_binding, class_type);
2753    }
2754  else
2755    binding = NULL;
2756
2757  return binding;
2758}
2759
2760/* Make the declaration(s) of X appear in CLASS scope under the name
2761   NAME.  Returns true if the binding is valid.  */
2762
2763bool
2764push_class_level_binding (tree name, tree x)
2765{
2766  cxx_binding *binding;
2767  tree decl = x;
2768  bool ok;
2769
2770  timevar_push (TV_NAME_LOOKUP);
2771  /* The class_binding_level will be NULL if x is a template
2772     parameter name in a member template.  */
2773  if (!class_binding_level)
2774    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2775
2776  if (name == error_mark_node)
2777    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, false);
2778
2779  /* Check for invalid member names.  */
2780  gcc_assert (TYPE_BEING_DEFINED (current_class_type));
2781  /* Check that we're pushing into the right binding level.  */
2782  gcc_assert (current_class_type == class_binding_level->this_entity);
2783
2784  /* We could have been passed a tree list if this is an ambiguous
2785     declaration. If so, pull the declaration out because
2786     check_template_shadow will not handle a TREE_LIST.  */
2787  if (TREE_CODE (decl) == TREE_LIST
2788      && TREE_TYPE (decl) == error_mark_node)
2789    decl = TREE_VALUE (decl);
2790
2791  if (!check_template_shadow (decl))
2792    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, false);
2793
2794  /* [class.mem]
2795
2796     If T is the name of a class, then each of the following shall
2797     have a name different from T:
2798
2799     -- every static data member of class T;
2800
2801     -- every member of class T that is itself a type;
2802
2803     -- every enumerator of every member of class T that is an
2804	enumerated type;
2805
2806     -- every member of every anonymous union that is a member of
2807	class T.
2808
2809     (Non-static data members were also forbidden to have the same
2810     name as T until TC1.)  */
2811  if ((TREE_CODE (x) == VAR_DECL
2812       || TREE_CODE (x) == CONST_DECL
2813       || (TREE_CODE (x) == TYPE_DECL
2814	   && !DECL_SELF_REFERENCE_P (x))
2815       /* A data member of an anonymous union.  */
2816       || (TREE_CODE (x) == FIELD_DECL
2817	   && DECL_CONTEXT (x) != current_class_type))
2818      && DECL_NAME (x) == constructor_name (current_class_type))
2819    {
2820      tree scope = context_for_name_lookup (x);
2821      if (TYPE_P (scope) && same_type_p (scope, current_class_type))
2822	{
2823	  error ("%qD has the same name as the class in which it is "
2824		 "declared",
2825		 x);
2826	  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, false);
2827	}
2828    }
2829
2830  /* Get the current binding for NAME in this class, if any.  */
2831  binding = IDENTIFIER_BINDING (name);
2832  if (!binding || binding->scope != class_binding_level)
2833    {
2834      binding = get_class_binding (name, class_binding_level);
2835      /* If a new binding was created, put it at the front of the
2836	 IDENTIFIER_BINDING list.  */
2837      if (binding)
2838	{
2839	  binding->previous = IDENTIFIER_BINDING (name);
2840	  IDENTIFIER_BINDING (name) = binding;
2841	}
2842    }
2843
2844  /* If there is already a binding, then we may need to update the
2845     current value.  */
2846  if (binding && binding->value)
2847    {
2848      tree bval = binding->value;
2849      tree old_decl = NULL_TREE;
2850
2851      if (INHERITED_VALUE_BINDING_P (binding))
2852	{
2853	  /* If the old binding was from a base class, and was for a
2854	     tag name, slide it over to make room for the new binding.
2855	     The old binding is still visible if explicitly qualified
2856	     with a class-key.  */
2857	  if (TREE_CODE (bval) == TYPE_DECL && DECL_ARTIFICIAL (bval)
2858	      && !(TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x)))
2859	    {
2860	      old_decl = binding->type;
2861	      binding->type = bval;
2862	      binding->value = NULL_TREE;
2863	      INHERITED_VALUE_BINDING_P (binding) = 0;
2864	    }
2865	  else
2866	    {
2867	      old_decl = bval;
2868	      /* Any inherited type declaration is hidden by the type
2869		 declaration in the derived class.  */
2870	      if (TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x))
2871		binding->type = NULL_TREE;
2872	    }
2873	}
2874      else if (TREE_CODE (x) == OVERLOAD && is_overloaded_fn (bval))
2875	old_decl = bval;
2876      else if (TREE_CODE (x) == USING_DECL && TREE_CODE (bval) == USING_DECL)
2877	POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2878      else if (TREE_CODE (x) == USING_DECL && is_overloaded_fn (bval))
2879	old_decl = bval;
2880      else if (TREE_CODE (bval) == USING_DECL && is_overloaded_fn (x))
2881	POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2882
2883      if (old_decl && binding->scope == class_binding_level)
2884	{
2885	  binding->value = x;
2886	  /* It is always safe to clear INHERITED_VALUE_BINDING_P
2887	     here.  This function is only used to register bindings
2888	     from with the class definition itself.  */
2889	  INHERITED_VALUE_BINDING_P (binding) = 0;
2890	  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2891	}
2892    }
2893
2894  /* Note that we declared this value so that we can issue an error if
2895     this is an invalid redeclaration of a name already used for some
2896     other purpose.  */
2897  note_name_declared_in_class (name, decl);
2898
2899  /* If we didn't replace an existing binding, put the binding on the
2900     stack of bindings for the identifier, and update the shadowed
2901     list.  */
2902  if (binding && binding->scope == class_binding_level)
2903    /* Supplement the existing binding.  */
2904    ok = supplement_binding (binding, decl);
2905  else
2906    {
2907      /* Create a new binding.  */
2908      push_binding (name, decl, class_binding_level);
2909      ok = true;
2910    }
2911
2912  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ok);
2913}
2914
2915/* Process "using SCOPE::NAME" in a class scope.  Return the
2916   USING_DECL created.  */
2917
2918tree
2919do_class_using_decl (tree scope, tree name)
2920{
2921  /* The USING_DECL returned by this function.  */
2922  tree value;
2923  /* The declaration (or declarations) name by this using
2924     declaration.  NULL if we are in a template and cannot figure out
2925     what has been named.  */
2926  tree decl;
2927  /* True if SCOPE is a dependent type.  */
2928  bool scope_dependent_p;
2929  /* True if SCOPE::NAME is dependent.  */
2930  bool name_dependent_p;
2931  /* True if any of the bases of CURRENT_CLASS_TYPE are dependent.  */
2932  bool bases_dependent_p;
2933  tree binfo;
2934  tree base_binfo;
2935  int i;
2936
2937  if (name == error_mark_node)
2938    return NULL_TREE;
2939
2940  if (!scope || !TYPE_P (scope))
2941    {
2942      error ("using-declaration for non-member at class scope");
2943      return NULL_TREE;
2944    }
2945
2946  /* Make sure the name is not invalid */
2947  if (TREE_CODE (name) == BIT_NOT_EXPR)
2948    {
2949      error ("%<%T::%D%> names destructor", scope, name);
2950      return NULL_TREE;
2951    }
2952  if (MAYBE_CLASS_TYPE_P (scope) && constructor_name_p (name, scope))
2953    {
2954      error ("%<%T::%D%> names constructor", scope, name);
2955      return NULL_TREE;
2956    }
2957  if (constructor_name_p (name, current_class_type))
2958    {
2959      error ("%<%T::%D%> names constructor in %qT",
2960	     scope, name, current_class_type);
2961      return NULL_TREE;
2962    }
2963
2964  scope_dependent_p = dependent_type_p (scope);
2965  name_dependent_p = (scope_dependent_p
2966		      || (IDENTIFIER_TYPENAME_P (name)
2967			  && dependent_type_p (TREE_TYPE (name))));
2968
2969  bases_dependent_p = false;
2970  if (processing_template_decl)
2971    for (binfo = TYPE_BINFO (current_class_type), i = 0;
2972	 BINFO_BASE_ITERATE (binfo, i, base_binfo);
2973	 i++)
2974      if (dependent_type_p (TREE_TYPE (base_binfo)))
2975	{
2976	  bases_dependent_p = true;
2977	  break;
2978	}
2979
2980  decl = NULL_TREE;
2981
2982  /* From [namespace.udecl]:
2983
2984       A using-declaration used as a member-declaration shall refer to a
2985       member of a base class of the class being defined.
2986
2987     In general, we cannot check this constraint in a template because
2988     we do not know the entire set of base classes of the current
2989     class type.  However, if all of the base classes are
2990     non-dependent, then we can avoid delaying the check until
2991     instantiation.  */
2992  if (!scope_dependent_p)
2993    {
2994      base_kind b_kind;
2995      binfo = lookup_base (current_class_type, scope, ba_any, &b_kind);
2996      if (b_kind < bk_proper_base)
2997	{
2998	  if (!bases_dependent_p)
2999	    {
3000	      error_not_base_type (scope, current_class_type);
3001	      return NULL_TREE;
3002	    }
3003	}
3004      else if (!name_dependent_p)
3005	{
3006	  decl = lookup_member (binfo, name, 0, false);
3007	  if (!decl)
3008	    {
3009	      error ("no members matching %<%T::%D%> in %q#T", scope, name,
3010		     scope);
3011	      return NULL_TREE;
3012	    }
3013	  /* The binfo from which the functions came does not matter.  */
3014	  if (BASELINK_P (decl))
3015	    decl = BASELINK_FUNCTIONS (decl);
3016	}
3017   }
3018
3019  value = build_lang_decl (USING_DECL, name, NULL_TREE);
3020  USING_DECL_DECLS (value) = decl;
3021  USING_DECL_SCOPE (value) = scope;
3022  DECL_DEPENDENT_P (value) = !decl;
3023
3024  return value;
3025}
3026
3027
3028/* Return the binding value for name in scope.  */
3029
3030tree
3031namespace_binding (tree name, tree scope)
3032{
3033  cxx_binding *binding;
3034
3035  if (scope == NULL)
3036    scope = global_namespace;
3037  else
3038    /* Unnecessary for the global namespace because it can't be an alias. */
3039    scope = ORIGINAL_NAMESPACE (scope);
3040
3041  binding = cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
3042
3043  return binding ? binding->value : NULL_TREE;
3044}
3045
3046/* Set the binding value for name in scope.  */
3047
3048void
3049set_namespace_binding (tree name, tree scope, tree val)
3050{
3051  cxx_binding *b;
3052
3053  timevar_push (TV_NAME_LOOKUP);
3054  if (scope == NULL_TREE)
3055    scope = global_namespace;
3056  b = binding_for_name (NAMESPACE_LEVEL (scope), name);
3057  if (!b->value || TREE_CODE (val) == OVERLOAD || val == error_mark_node)
3058    b->value = val;
3059  else
3060    supplement_binding (b, val);
3061  timevar_pop (TV_NAME_LOOKUP);
3062}
3063
3064/* Set the context of a declaration to scope. Complain if we are not
3065   outside scope.  */
3066
3067void
3068set_decl_namespace (tree decl, tree scope, bool friendp)
3069{
3070  tree old;
3071
3072  /* Get rid of namespace aliases.  */
3073  scope = ORIGINAL_NAMESPACE (scope);
3074
3075  /* It is ok for friends to be qualified in parallel space.  */
3076  if (!friendp && !is_ancestor (current_namespace, scope))
3077    error ("declaration of %qD not in a namespace surrounding %qD",
3078	   decl, scope);
3079  DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
3080
3081  /* Writing "int N::i" to declare a variable within "N" is invalid.  */
3082  if (scope == current_namespace)
3083    {
3084      if (at_namespace_scope_p ())
3085	error ("explicit qualification in declaration of %qD",
3086	       decl);
3087      return;
3088    }
3089
3090  /* See whether this has been declared in the namespace.  */
3091  old = lookup_qualified_name (scope, DECL_NAME (decl), false, true);
3092  if (old == error_mark_node)
3093    /* No old declaration at all.  */
3094    goto complain;
3095  /* If it's a TREE_LIST, the result of the lookup was ambiguous.  */
3096  if (TREE_CODE (old) == TREE_LIST)
3097    {
3098      error ("reference to %qD is ambiguous", decl);
3099      print_candidates (old);
3100      return;
3101    }
3102  if (!is_overloaded_fn (decl))
3103    {
3104      /* We might have found OLD in an inline namespace inside SCOPE.  */
3105      if (TREE_CODE (decl) == TREE_CODE (old))
3106	DECL_CONTEXT (decl) = DECL_CONTEXT (old);
3107      /* Don't compare non-function decls with decls_match here, since
3108	 it can't check for the correct constness at this
3109	 point. pushdecl will find those errors later.  */
3110      return;
3111    }
3112  /* Since decl is a function, old should contain a function decl.  */
3113  if (!is_overloaded_fn (old))
3114    goto complain;
3115  /* A template can be explicitly specialized in any namespace.  */
3116  if (processing_explicit_instantiation)
3117    return;
3118  if (processing_template_decl || processing_specialization)
3119    /* We have not yet called push_template_decl to turn a
3120       FUNCTION_DECL into a TEMPLATE_DECL, so the declarations won't
3121       match.  But, we'll check later, when we construct the
3122       template.  */
3123    return;
3124  /* Instantiations or specializations of templates may be declared as
3125     friends in any namespace.  */
3126  if (friendp && DECL_USE_TEMPLATE (decl))
3127    return;
3128  if (is_overloaded_fn (old))
3129    {
3130      tree found = NULL_TREE;
3131      tree elt = old;
3132      for (; elt; elt = OVL_NEXT (elt))
3133	{
3134	  tree ofn = OVL_CURRENT (elt);
3135	  /* Adjust DECL_CONTEXT first so decls_match will return true
3136	     if DECL will match a declaration in an inline namespace.  */
3137	  DECL_CONTEXT (decl) = DECL_CONTEXT (ofn);
3138	  if (decls_match (decl, ofn))
3139	    {
3140	      if (found && !decls_match (found, ofn))
3141		{
3142		  DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
3143		  error ("reference to %qD is ambiguous", decl);
3144		  print_candidates (old);
3145		  return;
3146		}
3147	      found = ofn;
3148	    }
3149	}
3150      if (found)
3151	{
3152	  if (!is_associated_namespace (scope, CP_DECL_CONTEXT (found)))
3153	    goto complain;
3154	  DECL_CONTEXT (decl) = DECL_CONTEXT (found);
3155	  return;
3156	}
3157    }
3158  else
3159    {
3160      DECL_CONTEXT (decl) = DECL_CONTEXT (old);
3161      if (decls_match (decl, old))
3162	return;
3163    }
3164
3165  /* It didn't work, go back to the explicit scope.  */
3166  DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
3167 complain:
3168  error ("%qD should have been declared inside %qD", decl, scope);
3169}
3170
3171/* Return the namespace where the current declaration is declared.  */
3172
3173static tree
3174current_decl_namespace (void)
3175{
3176  tree result;
3177  /* If we have been pushed into a different namespace, use it.  */
3178  if (decl_namespace_list)
3179    return TREE_PURPOSE (decl_namespace_list);
3180
3181  if (current_class_type)
3182    result = decl_namespace_context (current_class_type);
3183  else if (current_function_decl)
3184    result = decl_namespace_context (current_function_decl);
3185  else
3186    result = current_namespace;
3187  return result;
3188}
3189
3190/* Process any ATTRIBUTES on a namespace definition.  Currently only
3191   attribute visibility is meaningful, which is a property of the syntactic
3192   block rather than the namespace as a whole, so we don't touch the
3193   NAMESPACE_DECL at all.  Returns true if attribute visibility is seen.  */
3194
3195bool
3196handle_namespace_attrs (tree ns, tree attributes)
3197{
3198  tree d;
3199  bool saw_vis = false;
3200
3201  for (d = attributes; d; d = TREE_CHAIN (d))
3202    {
3203      tree name = TREE_PURPOSE (d);
3204      tree args = TREE_VALUE (d);
3205
3206#ifdef HANDLE_PRAGMA_VISIBILITY
3207      if (is_attribute_p ("visibility", name))
3208	{
3209	  tree x = args ? TREE_VALUE (args) : NULL_TREE;
3210	  if (x == NULL_TREE || TREE_CODE (x) != STRING_CST || TREE_CHAIN (args))
3211	    {
3212	      warning (OPT_Wattributes,
3213		       "%qD attribute requires a single NTBS argument",
3214		       name);
3215	      continue;
3216	    }
3217
3218	  if (!TREE_PUBLIC (ns))
3219	    warning (OPT_Wattributes,
3220		     "%qD attribute is meaningless since members of the "
3221		     "anonymous namespace get local symbols", name);
3222
3223	  push_visibility (TREE_STRING_POINTER (x), 1);
3224	  saw_vis = true;
3225	}
3226      else
3227#endif
3228	{
3229	  warning (OPT_Wattributes, "%qD attribute directive ignored",
3230		   name);
3231	  continue;
3232	}
3233    }
3234
3235  return saw_vis;
3236}
3237
3238/* Push into the scope of the NAME namespace.  If NAME is NULL_TREE, then we
3239   select a name that is unique to this compilation unit.  */
3240
3241void
3242push_namespace (tree name)
3243{
3244  tree d = NULL_TREE;
3245  int need_new = 1;
3246  int implicit_use = 0;
3247  bool anon = !name;
3248
3249  timevar_push (TV_NAME_LOOKUP);
3250
3251  /* We should not get here if the global_namespace is not yet constructed
3252     nor if NAME designates the global namespace:  The global scope is
3253     constructed elsewhere.  */
3254  gcc_assert (global_namespace != NULL && name != global_scope_name);
3255
3256  if (anon)
3257    {
3258      name = get_anonymous_namespace_name();
3259      d = IDENTIFIER_NAMESPACE_VALUE (name);
3260      if (d)
3261	/* Reopening anonymous namespace.  */
3262	need_new = 0;
3263      implicit_use = 1;
3264    }
3265  else
3266    {
3267      /* Check whether this is an extended namespace definition.  */
3268      d = IDENTIFIER_NAMESPACE_VALUE (name);
3269      if (d != NULL_TREE && TREE_CODE (d) == NAMESPACE_DECL)
3270	{
3271	  need_new = 0;
3272	  if (DECL_NAMESPACE_ALIAS (d))
3273	    {
3274	      error ("namespace alias %qD not allowed here, assuming %qD",
3275		     d, DECL_NAMESPACE_ALIAS (d));
3276	      d = DECL_NAMESPACE_ALIAS (d);
3277	    }
3278	}
3279    }
3280
3281  if (need_new)
3282    {
3283      /* Make a new namespace, binding the name to it.  */
3284      d = build_lang_decl (NAMESPACE_DECL, name, void_type_node);
3285      DECL_CONTEXT (d) = FROB_CONTEXT (current_namespace);
3286      /* The name of this namespace is not visible to other translation
3287	 units if it is an anonymous namespace or member thereof.  */
3288      if (anon || decl_anon_ns_mem_p (current_namespace))
3289	TREE_PUBLIC (d) = 0;
3290      else
3291	TREE_PUBLIC (d) = 1;
3292      pushdecl (d);
3293      if (anon)
3294	{
3295	  /* Clear DECL_NAME for the benefit of debugging back ends.  */
3296	  SET_DECL_ASSEMBLER_NAME (d, name);
3297	  DECL_NAME (d) = NULL_TREE;
3298	}
3299      begin_scope (sk_namespace, d);
3300    }
3301  else
3302    resume_scope (NAMESPACE_LEVEL (d));
3303
3304  if (implicit_use)
3305    do_using_directive (d);
3306  /* Enter the name space.  */
3307  current_namespace = d;
3308
3309  timevar_pop (TV_NAME_LOOKUP);
3310}
3311
3312/* Pop from the scope of the current namespace.  */
3313
3314void
3315pop_namespace (void)
3316{
3317  gcc_assert (current_namespace != global_namespace);
3318  current_namespace = CP_DECL_CONTEXT (current_namespace);
3319  /* The binding level is not popped, as it might be re-opened later.  */
3320  leave_scope ();
3321}
3322
3323/* Push into the scope of the namespace NS, even if it is deeply
3324   nested within another namespace.  */
3325
3326void
3327push_nested_namespace (tree ns)
3328{
3329  if (ns == global_namespace)
3330    push_to_top_level ();
3331  else
3332    {
3333      push_nested_namespace (CP_DECL_CONTEXT (ns));
3334      push_namespace (DECL_NAME (ns));
3335    }
3336}
3337
3338/* Pop back from the scope of the namespace NS, which was previously
3339   entered with push_nested_namespace.  */
3340
3341void
3342pop_nested_namespace (tree ns)
3343{
3344  timevar_push (TV_NAME_LOOKUP);
3345  while (ns != global_namespace)
3346    {
3347      pop_namespace ();
3348      ns = CP_DECL_CONTEXT (ns);
3349    }
3350
3351  pop_from_top_level ();
3352  timevar_pop (TV_NAME_LOOKUP);
3353}
3354
3355/* Temporarily set the namespace for the current declaration.  */
3356
3357void
3358push_decl_namespace (tree decl)
3359{
3360  if (TREE_CODE (decl) != NAMESPACE_DECL)
3361    decl = decl_namespace_context (decl);
3362  decl_namespace_list = tree_cons (ORIGINAL_NAMESPACE (decl),
3363				   NULL_TREE, decl_namespace_list);
3364}
3365
3366/* [namespace.memdef]/2 */
3367
3368void
3369pop_decl_namespace (void)
3370{
3371  decl_namespace_list = TREE_CHAIN (decl_namespace_list);
3372}
3373
3374/* Return the namespace that is the common ancestor
3375   of two given namespaces.  */
3376
3377static tree
3378namespace_ancestor (tree ns1, tree ns2)
3379{
3380  timevar_push (TV_NAME_LOOKUP);
3381  if (is_ancestor (ns1, ns2))
3382    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ns1);
3383  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
3384			  namespace_ancestor (CP_DECL_CONTEXT (ns1), ns2));
3385}
3386
3387/* Process a namespace-alias declaration.  */
3388
3389void
3390do_namespace_alias (tree alias, tree name_space)
3391{
3392  if (name_space == error_mark_node)
3393    return;
3394
3395  gcc_assert (TREE_CODE (name_space) == NAMESPACE_DECL);
3396
3397  name_space = ORIGINAL_NAMESPACE (name_space);
3398
3399  /* Build the alias.  */
3400  alias = build_lang_decl (NAMESPACE_DECL, alias, void_type_node);
3401  DECL_NAMESPACE_ALIAS (alias) = name_space;
3402  DECL_EXTERNAL (alias) = 1;
3403  DECL_CONTEXT (alias) = FROB_CONTEXT (current_scope ());
3404  pushdecl (alias);
3405
3406  /* Emit debug info for namespace alias.  */
3407  if (!building_stmt_tree ())
3408    (*debug_hooks->global_decl) (alias);
3409}
3410
3411/* Like pushdecl, only it places X in the current namespace,
3412   if appropriate.  */
3413
3414tree
3415pushdecl_namespace_level (tree x, bool is_friend)
3416{
3417  struct cp_binding_level *b = current_binding_level;
3418  tree t;
3419
3420  timevar_push (TV_NAME_LOOKUP);
3421  t = pushdecl_with_scope (x, NAMESPACE_LEVEL (current_namespace), is_friend);
3422
3423  /* Now, the type_shadowed stack may screw us.  Munge it so it does
3424     what we want.  */
3425  if (TREE_CODE (t) == TYPE_DECL)
3426    {
3427      tree name = DECL_NAME (t);
3428      tree newval;
3429      tree *ptr = (tree *)0;
3430      for (; !global_scope_p (b); b = b->level_chain)
3431	{
3432	  tree shadowed = b->type_shadowed;
3433	  for (; shadowed; shadowed = TREE_CHAIN (shadowed))
3434	    if (TREE_PURPOSE (shadowed) == name)
3435	      {
3436		ptr = &TREE_VALUE (shadowed);
3437		/* Can't break out of the loop here because sometimes
3438		   a binding level will have duplicate bindings for
3439		   PT names.  It's gross, but I haven't time to fix it.  */
3440	      }
3441	}
3442      newval = TREE_TYPE (t);
3443      if (ptr == (tree *)0)
3444	{
3445	  /* @@ This shouldn't be needed.  My test case "zstring.cc" trips
3446	     up here if this is changed to an assertion.  --KR  */
3447	  SET_IDENTIFIER_TYPE_VALUE (name, t);
3448	}
3449      else
3450	{
3451	  *ptr = newval;
3452	}
3453    }
3454  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
3455}
3456
3457/* Insert USED into the using list of USER. Set INDIRECT_flag if this
3458   directive is not directly from the source. Also find the common
3459   ancestor and let our users know about the new namespace */
3460static void
3461add_using_namespace (tree user, tree used, bool indirect)
3462{
3463  tree t;
3464  timevar_push (TV_NAME_LOOKUP);
3465  /* Using oneself is a no-op.  */
3466  if (user == used)
3467    {
3468      timevar_pop (TV_NAME_LOOKUP);
3469      return;
3470    }
3471  gcc_assert (TREE_CODE (user) == NAMESPACE_DECL);
3472  gcc_assert (TREE_CODE (used) == NAMESPACE_DECL);
3473  /* Check if we already have this.  */
3474  t = purpose_member (used, DECL_NAMESPACE_USING (user));
3475  if (t != NULL_TREE)
3476    {
3477      if (!indirect)
3478	/* Promote to direct usage.  */
3479	TREE_INDIRECT_USING (t) = 0;
3480      timevar_pop (TV_NAME_LOOKUP);
3481      return;
3482    }
3483
3484  /* Add used to the user's using list.  */
3485  DECL_NAMESPACE_USING (user)
3486    = tree_cons (used, namespace_ancestor (user, used),
3487		 DECL_NAMESPACE_USING (user));
3488
3489  TREE_INDIRECT_USING (DECL_NAMESPACE_USING (user)) = indirect;
3490
3491  /* Add user to the used's users list.  */
3492  DECL_NAMESPACE_USERS (used)
3493    = tree_cons (user, 0, DECL_NAMESPACE_USERS (used));
3494
3495  /* Recursively add all namespaces used.  */
3496  for (t = DECL_NAMESPACE_USING (used); t; t = TREE_CHAIN (t))
3497    /* indirect usage */
3498    add_using_namespace (user, TREE_PURPOSE (t), 1);
3499
3500  /* Tell everyone using us about the new used namespaces.  */
3501  for (t = DECL_NAMESPACE_USERS (user); t; t = TREE_CHAIN (t))
3502    add_using_namespace (TREE_PURPOSE (t), used, 1);
3503  timevar_pop (TV_NAME_LOOKUP);
3504}
3505
3506/* Process a using-declaration not appearing in class or local scope.  */
3507
3508void
3509do_toplevel_using_decl (tree decl, tree scope, tree name)
3510{
3511  tree oldval, oldtype, newval, newtype;
3512  tree orig_decl = decl;
3513  cxx_binding *binding;
3514
3515  decl = validate_nonmember_using_decl (decl, scope, name);
3516  if (decl == NULL_TREE)
3517    return;
3518
3519  binding = binding_for_name (NAMESPACE_LEVEL (current_namespace), name);
3520
3521  oldval = binding->value;
3522  oldtype = binding->type;
3523
3524  do_nonmember_using_decl (scope, name, oldval, oldtype, &newval, &newtype);
3525
3526  /* Emit debug info.  */
3527  if (!processing_template_decl)
3528    cp_emit_debug_info_for_using (orig_decl, current_namespace);
3529
3530  /* Copy declarations found.  */
3531  if (newval)
3532    binding->value = newval;
3533  if (newtype)
3534    binding->type = newtype;
3535}
3536
3537/* Process a using-directive.  */
3538
3539void
3540do_using_directive (tree name_space)
3541{
3542  tree context = NULL_TREE;
3543
3544  if (name_space == error_mark_node)
3545    return;
3546
3547  gcc_assert (TREE_CODE (name_space) == NAMESPACE_DECL);
3548
3549  if (building_stmt_tree ())
3550    add_stmt (build_stmt (input_location, USING_STMT, name_space));
3551  name_space = ORIGINAL_NAMESPACE (name_space);
3552
3553  if (!toplevel_bindings_p ())
3554    {
3555      push_using_directive (name_space);
3556    }
3557  else
3558    {
3559      /* direct usage */
3560      add_using_namespace (current_namespace, name_space, 0);
3561      if (current_namespace != global_namespace)
3562	context = current_namespace;
3563
3564      /* Emit debugging info.  */
3565      if (!processing_template_decl)
3566	(*debug_hooks->imported_module_or_decl) (name_space, NULL_TREE,
3567						 context, false);
3568    }
3569}
3570
3571/* Deal with a using-directive seen by the parser.  Currently we only
3572   handle attributes here, since they cannot appear inside a template.  */
3573
3574void
3575parse_using_directive (tree name_space, tree attribs)
3576{
3577  tree a;
3578
3579  do_using_directive (name_space);
3580
3581  for (a = attribs; a; a = TREE_CHAIN (a))
3582    {
3583      tree name = TREE_PURPOSE (a);
3584      if (is_attribute_p ("strong", name))
3585	{
3586	  if (!toplevel_bindings_p ())
3587	    error ("strong using only meaningful at namespace scope");
3588	  else if (name_space != error_mark_node)
3589	    {
3590	      if (!is_ancestor (current_namespace, name_space))
3591		error ("current namespace %qD does not enclose strongly used namespace %qD",
3592		       current_namespace, name_space);
3593	      DECL_NAMESPACE_ASSOCIATIONS (name_space)
3594		= tree_cons (current_namespace, 0,
3595			     DECL_NAMESPACE_ASSOCIATIONS (name_space));
3596	    }
3597	}
3598      else
3599	warning (OPT_Wattributes, "%qD attribute directive ignored", name);
3600    }
3601}
3602
3603/* Like pushdecl, only it places X in the global scope if appropriate.
3604   Calls cp_finish_decl to register the variable, initializing it with
3605   *INIT, if INIT is non-NULL.  */
3606
3607static tree
3608pushdecl_top_level_1 (tree x, tree *init, bool is_friend)
3609{
3610  timevar_push (TV_NAME_LOOKUP);
3611  push_to_top_level ();
3612  x = pushdecl_namespace_level (x, is_friend);
3613  if (init)
3614    cp_finish_decl (x, *init, false, NULL_TREE, 0);
3615  pop_from_top_level ();
3616  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
3617}
3618
3619/* Like pushdecl, only it places X in the global scope if appropriate.  */
3620
3621tree
3622pushdecl_top_level (tree x)
3623{
3624  return pushdecl_top_level_1 (x, NULL, false);
3625}
3626
3627/* Like pushdecl_top_level, but adding the IS_FRIEND parameter.  */
3628
3629tree
3630pushdecl_top_level_maybe_friend (tree x, bool is_friend)
3631{
3632  return pushdecl_top_level_1 (x, NULL, is_friend);
3633}
3634
3635/* Like pushdecl, only it places X in the global scope if
3636   appropriate.  Calls cp_finish_decl to register the variable,
3637   initializing it with INIT.  */
3638
3639tree
3640pushdecl_top_level_and_finish (tree x, tree init)
3641{
3642  return pushdecl_top_level_1 (x, &init, false);
3643}
3644
3645/* Combines two sets of overloaded functions into an OVERLOAD chain, removing
3646   duplicates.  The first list becomes the tail of the result.
3647
3648   The algorithm is O(n^2).  We could get this down to O(n log n) by
3649   doing a sort on the addresses of the functions, if that becomes
3650   necessary.  */
3651
3652static tree
3653merge_functions (tree s1, tree s2)
3654{
3655  for (; s2; s2 = OVL_NEXT (s2))
3656    {
3657      tree fn2 = OVL_CURRENT (s2);
3658      tree fns1;
3659
3660      for (fns1 = s1; fns1; fns1 = OVL_NEXT (fns1))
3661	{
3662	  tree fn1 = OVL_CURRENT (fns1);
3663
3664	  /* If the function from S2 is already in S1, there is no
3665	     need to add it again.  For `extern "C"' functions, we
3666	     might have two FUNCTION_DECLs for the same function, in
3667	     different namespaces, but let's leave them in in case
3668	     they have different default arguments.  */
3669	  if (fn1 == fn2)
3670	    break;
3671	}
3672
3673      /* If we exhausted all of the functions in S1, FN2 is new.  */
3674      if (!fns1)
3675	s1 = build_overload (fn2, s1);
3676    }
3677  return s1;
3678}
3679
3680/* This should return an error not all definitions define functions.
3681   It is not an error if we find two functions with exactly the
3682   same signature, only if these are selected in overload resolution.
3683   old is the current set of bindings, new_binding the freshly-found binding.
3684   XXX Do we want to give *all* candidates in case of ambiguity?
3685   XXX In what way should I treat extern declarations?
3686   XXX I don't want to repeat the entire duplicate_decls here */
3687
3688static void
3689ambiguous_decl (struct scope_binding *old, cxx_binding *new_binding, int flags)
3690{
3691  tree val, type;
3692  gcc_assert (old != NULL);
3693
3694  /* Copy the type.  */
3695  type = new_binding->type;
3696  if (LOOKUP_NAMESPACES_ONLY (flags)
3697      || (type && hidden_name_p (type) && !(flags & LOOKUP_HIDDEN)))
3698    type = NULL_TREE;
3699
3700  /* Copy the value.  */
3701  val = new_binding->value;
3702  if (val)
3703    {
3704      if (hidden_name_p (val) && !(flags & LOOKUP_HIDDEN))
3705	val = NULL_TREE;
3706      else
3707	switch (TREE_CODE (val))
3708	  {
3709	  case TEMPLATE_DECL:
3710	    /* If we expect types or namespaces, and not templates,
3711	       or this is not a template class.  */
3712	    if ((LOOKUP_QUALIFIERS_ONLY (flags)
3713		 && !DECL_CLASS_TEMPLATE_P (val)))
3714	      val = NULL_TREE;
3715	    break;
3716	  case TYPE_DECL:
3717	    if (LOOKUP_NAMESPACES_ONLY (flags)
3718		|| (type && (flags & LOOKUP_PREFER_TYPES)))
3719	      val = NULL_TREE;
3720	    break;
3721	  case NAMESPACE_DECL:
3722	    if (LOOKUP_TYPES_ONLY (flags))
3723	      val = NULL_TREE;
3724	    break;
3725	  case FUNCTION_DECL:
3726	    /* Ignore built-in functions that are still anticipated.  */
3727	    if (LOOKUP_QUALIFIERS_ONLY (flags))
3728	      val = NULL_TREE;
3729	    break;
3730	  default:
3731	    if (LOOKUP_QUALIFIERS_ONLY (flags))
3732	      val = NULL_TREE;
3733	  }
3734    }
3735
3736  /* If val is hidden, shift down any class or enumeration name.  */
3737  if (!val)
3738    {
3739      val = type;
3740      type = NULL_TREE;
3741    }
3742
3743  if (!old->value)
3744    old->value = val;
3745  else if (val && val != old->value)
3746    {
3747      if (is_overloaded_fn (old->value) && is_overloaded_fn (val))
3748	old->value = merge_functions (old->value, val);
3749      else
3750	{
3751	  old->value = tree_cons (NULL_TREE, old->value,
3752				  build_tree_list (NULL_TREE, val));
3753	  TREE_TYPE (old->value) = error_mark_node;
3754	}
3755    }
3756
3757  if (!old->type)
3758    old->type = type;
3759  else if (type && old->type != type)
3760    {
3761      old->type = tree_cons (NULL_TREE, old->type,
3762			     build_tree_list (NULL_TREE, type));
3763      TREE_TYPE (old->type) = error_mark_node;
3764    }
3765}
3766
3767/* Return the declarations that are members of the namespace NS.  */
3768
3769tree
3770cp_namespace_decls (tree ns)
3771{
3772  return NAMESPACE_LEVEL (ns)->names;
3773}
3774
3775/* Combine prefer_type and namespaces_only into flags.  */
3776
3777static int
3778lookup_flags (int prefer_type, int namespaces_only)
3779{
3780  if (namespaces_only)
3781    return LOOKUP_PREFER_NAMESPACES;
3782  if (prefer_type > 1)
3783    return LOOKUP_PREFER_TYPES;
3784  if (prefer_type > 0)
3785    return LOOKUP_PREFER_BOTH;
3786  return 0;
3787}
3788
3789/* Given a lookup that returned VAL, use FLAGS to decide if we want to
3790   ignore it or not.  Subroutine of lookup_name_real and
3791   lookup_type_scope.  */
3792
3793static bool
3794qualify_lookup (tree val, int flags)
3795{
3796  if (val == NULL_TREE)
3797    return false;
3798  if ((flags & LOOKUP_PREFER_NAMESPACES) && TREE_CODE (val) == NAMESPACE_DECL)
3799    return true;
3800  if ((flags & LOOKUP_PREFER_TYPES)
3801      && (TREE_CODE (val) == TYPE_DECL || TREE_CODE (val) == TEMPLATE_DECL))
3802    return true;
3803  if (flags & (LOOKUP_PREFER_NAMESPACES | LOOKUP_PREFER_TYPES))
3804    return false;
3805  /* In unevaluated context, look past normal capture fields.  */
3806  if (cp_unevaluated_operand && TREE_CODE (val) == FIELD_DECL
3807      && DECL_NORMAL_CAPTURE_P (val))
3808    return false;
3809  /* None of the lookups that use qualify_lookup want the op() from the
3810     lambda; they want the one from the enclosing class.  */
3811  if (TREE_CODE (val) == FUNCTION_DECL && LAMBDA_FUNCTION_P (val))
3812    return false;
3813  return true;
3814}
3815
3816/* Given a lookup that returned VAL, decide if we want to ignore it or
3817   not based on DECL_ANTICIPATED.  */
3818
3819bool
3820hidden_name_p (tree val)
3821{
3822  if (DECL_P (val)
3823      && DECL_LANG_SPECIFIC (val)
3824      && DECL_ANTICIPATED (val))
3825    return true;
3826  return false;
3827}
3828
3829/* Remove any hidden friend functions from a possibly overloaded set
3830   of functions.  */
3831
3832tree
3833remove_hidden_names (tree fns)
3834{
3835  if (!fns)
3836    return fns;
3837
3838  if (TREE_CODE (fns) == FUNCTION_DECL && hidden_name_p (fns))
3839    fns = NULL_TREE;
3840  else if (TREE_CODE (fns) == OVERLOAD)
3841    {
3842      tree o;
3843
3844      for (o = fns; o; o = OVL_NEXT (o))
3845	if (hidden_name_p (OVL_CURRENT (o)))
3846	  break;
3847      if (o)
3848	{
3849	  tree n = NULL_TREE;
3850
3851	  for (o = fns; o; o = OVL_NEXT (o))
3852	    if (!hidden_name_p (OVL_CURRENT (o)))
3853	      n = build_overload (OVL_CURRENT (o), n);
3854	  fns = n;
3855	}
3856    }
3857
3858  return fns;
3859}
3860
3861/* Unscoped lookup of a global: iterate over current namespaces,
3862   considering using-directives.  */
3863
3864static tree
3865unqualified_namespace_lookup (tree name, int flags)
3866{
3867  tree initial = current_decl_namespace ();
3868  tree scope = initial;
3869  tree siter;
3870  struct cp_binding_level *level;
3871  tree val = NULL_TREE;
3872
3873  timevar_push (TV_NAME_LOOKUP);
3874
3875  for (; !val; scope = CP_DECL_CONTEXT (scope))
3876    {
3877      struct scope_binding binding = EMPTY_SCOPE_BINDING;
3878      cxx_binding *b =
3879	 cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
3880
3881      if (b)
3882	ambiguous_decl (&binding, b, flags);
3883
3884      /* Add all _DECLs seen through local using-directives.  */
3885      for (level = current_binding_level;
3886	   level->kind != sk_namespace;
3887	   level = level->level_chain)
3888	if (!lookup_using_namespace (name, &binding, level->using_directives,
3889				     scope, flags))
3890	  /* Give up because of error.  */
3891	  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3892
3893      /* Add all _DECLs seen through global using-directives.  */
3894      /* XXX local and global using lists should work equally.  */
3895      siter = initial;
3896      while (1)
3897	{
3898	  if (!lookup_using_namespace (name, &binding,
3899				       DECL_NAMESPACE_USING (siter),
3900				       scope, flags))
3901	    /* Give up because of error.  */
3902	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3903	  if (siter == scope) break;
3904	  siter = CP_DECL_CONTEXT (siter);
3905	}
3906
3907      val = binding.value;
3908      if (scope == global_namespace)
3909	break;
3910    }
3911  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
3912}
3913
3914/* Look up NAME (an IDENTIFIER_NODE) in SCOPE (either a NAMESPACE_DECL
3915   or a class TYPE).  If IS_TYPE_P is TRUE, then ignore non-type
3916   bindings.
3917
3918   Returns a DECL (or OVERLOAD, or BASELINK) representing the
3919   declaration found.  If no suitable declaration can be found,
3920   ERROR_MARK_NODE is returned.  If COMPLAIN is true and SCOPE is
3921   neither a class-type nor a namespace a diagnostic is issued.  */
3922
3923tree
3924lookup_qualified_name (tree scope, tree name, bool is_type_p, bool complain)
3925{
3926  int flags = 0;
3927  tree t = NULL_TREE;
3928
3929  if (TREE_CODE (scope) == NAMESPACE_DECL)
3930    {
3931      struct scope_binding binding = EMPTY_SCOPE_BINDING;
3932
3933      flags |= LOOKUP_COMPLAIN;
3934      if (is_type_p)
3935	flags |= LOOKUP_PREFER_TYPES;
3936      if (qualified_lookup_using_namespace (name, scope, &binding, flags))
3937	t = binding.value;
3938    }
3939  else if (cxx_dialect != cxx98 && TREE_CODE (scope) == ENUMERAL_TYPE)
3940    t = lookup_enumerator (scope, name);
3941  else if (is_class_type (scope, complain))
3942    t = lookup_member (scope, name, 2, is_type_p);
3943
3944  if (!t)
3945    return error_mark_node;
3946  return t;
3947}
3948
3949/* Subroutine of unqualified_namespace_lookup:
3950   Add the bindings of NAME in used namespaces to VAL.
3951   We are currently looking for names in namespace SCOPE, so we
3952   look through USINGS for using-directives of namespaces
3953   which have SCOPE as a common ancestor with the current scope.
3954   Returns false on errors.  */
3955
3956static bool
3957lookup_using_namespace (tree name, struct scope_binding *val,
3958			tree usings, tree scope, int flags)
3959{
3960  tree iter;
3961  timevar_push (TV_NAME_LOOKUP);
3962  /* Iterate over all used namespaces in current, searching for using
3963     directives of scope.  */
3964  for (iter = usings; iter; iter = TREE_CHAIN (iter))
3965    if (TREE_VALUE (iter) == scope)
3966      {
3967	tree used = ORIGINAL_NAMESPACE (TREE_PURPOSE (iter));
3968	cxx_binding *val1 =
3969	  cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (used), name);
3970	/* Resolve ambiguities.  */
3971	if (val1)
3972	  ambiguous_decl (val, val1, flags);
3973      }
3974  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val->value != error_mark_node);
3975}
3976
3977/* Returns true iff VEC contains TARGET.  */
3978
3979static bool
3980tree_vec_contains (VEC(tree,gc)* vec, tree target)
3981{
3982  unsigned int i;
3983  tree elt;
3984  for (i = 0; VEC_iterate(tree,vec,i,elt); ++i)
3985    if (elt == target)
3986      return true;
3987  return false;
3988}
3989
3990/* [namespace.qual]
3991   Accepts the NAME to lookup and its qualifying SCOPE.
3992   Returns the name/type pair found into the cxx_binding *RESULT,
3993   or false on error.  */
3994
3995static bool
3996qualified_lookup_using_namespace (tree name, tree scope,
3997				  struct scope_binding *result, int flags)
3998{
3999  /* Maintain a list of namespaces visited...  */
4000  VEC(tree,gc) *seen = NULL;
4001  VEC(tree,gc) *seen_inline = NULL;
4002  /* ... and a list of namespace yet to see.  */
4003  VEC(tree,gc) *todo = NULL;
4004  VEC(tree,gc) *todo_maybe = NULL;
4005  VEC(tree,gc) *todo_inline = NULL;
4006  tree usings;
4007  timevar_push (TV_NAME_LOOKUP);
4008  /* Look through namespace aliases.  */
4009  scope = ORIGINAL_NAMESPACE (scope);
4010
4011  /* Algorithm: Starting with SCOPE, walk through the the set of used
4012     namespaces.  For each used namespace, look through its inline
4013     namespace set for any bindings and usings.  If no bindings are found,
4014     add any usings seen to the set of used namespaces.  */
4015  VEC_safe_push (tree, gc, todo, scope);
4016
4017  while (VEC_length (tree, todo))
4018    {
4019      bool found_here;
4020      scope = VEC_pop (tree, todo);
4021      if (tree_vec_contains (seen, scope))
4022	continue;
4023      VEC_safe_push (tree, gc, seen, scope);
4024      VEC_safe_push (tree, gc, todo_inline, scope);
4025
4026      found_here = false;
4027      while (VEC_length (tree, todo_inline))
4028	{
4029	  cxx_binding *binding;
4030
4031	  scope = VEC_pop (tree, todo_inline);
4032	  if (tree_vec_contains (seen_inline, scope))
4033	    continue;
4034	  VEC_safe_push (tree, gc, seen_inline, scope);
4035
4036	  binding =
4037	    cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
4038	  if (binding)
4039	    {
4040	      found_here = true;
4041	      ambiguous_decl (result, binding, flags);
4042	    }
4043
4044	  for (usings = DECL_NAMESPACE_USING (scope); usings;
4045	       usings = TREE_CHAIN (usings))
4046	    if (!TREE_INDIRECT_USING (usings))
4047	      {
4048		if (is_associated_namespace (scope, TREE_PURPOSE (usings)))
4049		  VEC_safe_push (tree, gc, todo_inline, TREE_PURPOSE (usings));
4050		else
4051		  VEC_safe_push (tree, gc, todo_maybe, TREE_PURPOSE (usings));
4052	      }
4053	}
4054
4055      if (found_here)
4056	VEC_truncate (tree, todo_maybe, 0);
4057      else
4058	while (VEC_length (tree, todo_maybe))
4059	  VEC_safe_push (tree, gc, todo, VEC_pop (tree, todo_maybe));
4060    }
4061  VEC_free (tree,gc,todo);
4062  VEC_free (tree,gc,todo_maybe);
4063  VEC_free (tree,gc,todo_inline);
4064  VEC_free (tree,gc,seen);
4065  VEC_free (tree,gc,seen_inline);
4066  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, result->value != error_mark_node);
4067}
4068
4069/* Subroutine of outer_binding.
4070
4071   Returns TRUE if BINDING is a binding to a template parameter of
4072   SCOPE.  In that case SCOPE is the scope of a primary template
4073   parameter -- in the sense of G++, i.e, a template that has its own
4074   template header.
4075
4076   Returns FALSE otherwise.  */
4077
4078static bool
4079binding_to_template_parms_of_scope_p (cxx_binding *binding,
4080				      cxx_scope *scope)
4081{
4082  tree binding_value;
4083
4084  if (!binding || !scope)
4085    return false;
4086
4087  binding_value = binding->value ?  binding->value : binding->type;
4088
4089  return (scope
4090	  && scope->this_entity
4091	  && get_template_info (scope->this_entity)
4092	  && PRIMARY_TEMPLATE_P (TI_TEMPLATE
4093				 (get_template_info (scope->this_entity)))
4094	  && parameter_of_template_p (binding_value,
4095				      TI_TEMPLATE (get_template_info \
4096						    (scope->this_entity))));
4097}
4098
4099/* Return the innermost non-namespace binding for NAME from a scope
4100   containing BINDING, or, if BINDING is NULL, the current scope.
4101   Please note that for a given template, the template parameters are
4102   considered to be in the scope containing the current scope.
4103   If CLASS_P is false, then class bindings are ignored.  */
4104
4105cxx_binding *
4106outer_binding (tree name,
4107	       cxx_binding *binding,
4108	       bool class_p)
4109{
4110  cxx_binding *outer;
4111  cxx_scope *scope;
4112  cxx_scope *outer_scope;
4113
4114  if (binding)
4115    {
4116      scope = binding->scope->level_chain;
4117      outer = binding->previous;
4118    }
4119  else
4120    {
4121      scope = current_binding_level;
4122      outer = IDENTIFIER_BINDING (name);
4123    }
4124  outer_scope = outer ? outer->scope : NULL;
4125
4126  /* Because we create class bindings lazily, we might be missing a
4127     class binding for NAME.  If there are any class binding levels
4128     between the LAST_BINDING_LEVEL and the scope in which OUTER was
4129     declared, we must lookup NAME in those class scopes.  */
4130  if (class_p)
4131    while (scope && scope != outer_scope && scope->kind != sk_namespace)
4132      {
4133	if (scope->kind == sk_class)
4134	  {
4135	    cxx_binding *class_binding;
4136
4137	    class_binding = get_class_binding (name, scope);
4138	    if (class_binding)
4139	      {
4140		/* Thread this new class-scope binding onto the
4141		   IDENTIFIER_BINDING list so that future lookups
4142		   find it quickly.  */
4143		class_binding->previous = outer;
4144		if (binding)
4145		  binding->previous = class_binding;
4146		else
4147		  IDENTIFIER_BINDING (name) = class_binding;
4148		return class_binding;
4149	      }
4150	  }
4151	/* If we are in a member template, the template parms of the member
4152	   template are considered to be inside the scope of the containing
4153	   class, but within G++ the class bindings are all pushed between the
4154	   template parms and the function body.  So if the outer binding is
4155	   a template parm for the current scope, return it now rather than
4156	   look for a class binding.  */
4157	if (outer_scope && outer_scope->kind == sk_template_parms
4158	    && binding_to_template_parms_of_scope_p (outer, scope))
4159	  return outer;
4160
4161	scope = scope->level_chain;
4162      }
4163
4164  return outer;
4165}
4166
4167/* Return the innermost block-scope or class-scope value binding for
4168   NAME, or NULL_TREE if there is no such binding.  */
4169
4170tree
4171innermost_non_namespace_value (tree name)
4172{
4173  cxx_binding *binding;
4174  binding = outer_binding (name, /*binding=*/NULL, /*class_p=*/true);
4175  return binding ? binding->value : NULL_TREE;
4176}
4177
4178/* Look up NAME in the current binding level and its superiors in the
4179   namespace of variables, functions and typedefs.  Return a ..._DECL
4180   node of some kind representing its definition if there is only one
4181   such declaration, or return a TREE_LIST with all the overloaded
4182   definitions if there are many, or return 0 if it is undefined.
4183   Hidden name, either friend declaration or built-in function, are
4184   not ignored.
4185
4186   If PREFER_TYPE is > 0, we prefer TYPE_DECLs or namespaces.
4187   If PREFER_TYPE is > 1, we reject non-type decls (e.g. namespaces).
4188   Otherwise we prefer non-TYPE_DECLs.
4189
4190   If NONCLASS is nonzero, bindings in class scopes are ignored.  If
4191   BLOCK_P is false, bindings in block scopes are ignored.  */
4192
4193tree
4194lookup_name_real (tree name, int prefer_type, int nonclass, bool block_p,
4195		  int namespaces_only, int flags)
4196{
4197  cxx_binding *iter;
4198  tree val = NULL_TREE;
4199
4200  timevar_push (TV_NAME_LOOKUP);
4201  /* Conversion operators are handled specially because ordinary
4202     unqualified name lookup will not find template conversion
4203     operators.  */
4204  if (IDENTIFIER_TYPENAME_P (name))
4205    {
4206      struct cp_binding_level *level;
4207
4208      for (level = current_binding_level;
4209	   level && level->kind != sk_namespace;
4210	   level = level->level_chain)
4211	{
4212	  tree class_type;
4213	  tree operators;
4214
4215	  /* A conversion operator can only be declared in a class
4216	     scope.  */
4217	  if (level->kind != sk_class)
4218	    continue;
4219
4220	  /* Lookup the conversion operator in the class.  */
4221	  class_type = level->this_entity;
4222	  operators = lookup_fnfields (class_type, name, /*protect=*/0);
4223	  if (operators)
4224	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, operators);
4225	}
4226
4227      POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
4228    }
4229
4230  flags |= lookup_flags (prefer_type, namespaces_only);
4231
4232  /* First, look in non-namespace scopes.  */
4233
4234  if (current_class_type == NULL_TREE)
4235    nonclass = 1;
4236
4237  if (block_p || !nonclass)
4238    for (iter = outer_binding (name, NULL, !nonclass);
4239	 iter;
4240	 iter = outer_binding (name, iter, !nonclass))
4241      {
4242	tree binding;
4243
4244	/* Skip entities we don't want.  */
4245	if (LOCAL_BINDING_P (iter) ? !block_p : nonclass)
4246	  continue;
4247
4248	/* If this is the kind of thing we're looking for, we're done.  */
4249	if (qualify_lookup (iter->value, flags))
4250	  binding = iter->value;
4251	else if ((flags & LOOKUP_PREFER_TYPES)
4252		 && qualify_lookup (iter->type, flags))
4253	  binding = iter->type;
4254	else
4255	  binding = NULL_TREE;
4256
4257	if (binding)
4258	  {
4259	    if (hidden_name_p (binding))
4260	      {
4261		/* A non namespace-scope binding can only be hidden in the
4262		   presence of a local class, due to friend declarations.
4263
4264		   In particular, consider:
4265
4266		   struct C;
4267		   void f() {
4268		     struct A {
4269		       friend struct B;
4270		       friend struct C;
4271		       void g() {
4272		         B* b; // error: B is hidden
4273			 C* c; // OK, finds ::C
4274		       }
4275		     };
4276		     B *b;  // error: B is hidden
4277		     C *c;  // OK, finds ::C
4278		     struct B {};
4279		     B *bb; // OK
4280		   }
4281
4282		   The standard says that "B" is a local class in "f"
4283		   (but not nested within "A") -- but that name lookup
4284		   for "B" does not find this declaration until it is
4285		   declared directly with "f".
4286
4287		   In particular:
4288
4289		   [class.friend]
4290
4291		   If a friend declaration appears in a local class and
4292		   the name specified is an unqualified name, a prior
4293		   declaration is looked up without considering scopes
4294		   that are outside the innermost enclosing non-class
4295		   scope. For a friend function declaration, if there is
4296		   no prior declaration, the program is ill-formed. For a
4297		   friend class declaration, if there is no prior
4298		   declaration, the class that is specified belongs to the
4299		   innermost enclosing non-class scope, but if it is
4300		   subsequently referenced, its name is not found by name
4301		   lookup until a matching declaration is provided in the
4302		   innermost enclosing nonclass scope.
4303
4304		   So just keep looking for a non-hidden binding.
4305		*/
4306		gcc_assert (TREE_CODE (binding) == TYPE_DECL);
4307		continue;
4308	      }
4309	    val = binding;
4310	    break;
4311	  }
4312      }
4313
4314  /* Now lookup in namespace scopes.  */
4315  if (!val)
4316    val = unqualified_namespace_lookup (name, flags);
4317
4318  /* If we have a single function from a using decl, pull it out.  */
4319  if (val && TREE_CODE (val) == OVERLOAD && !really_overloaded_fn (val))
4320    val = OVL_FUNCTION (val);
4321
4322  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
4323}
4324
4325tree
4326lookup_name_nonclass (tree name)
4327{
4328  return lookup_name_real (name, 0, 1, /*block_p=*/true, 0, LOOKUP_COMPLAIN);
4329}
4330
4331tree
4332lookup_function_nonclass (tree name, VEC(tree,gc) *args, bool block_p)
4333{
4334  return
4335    lookup_arg_dependent (name,
4336			  lookup_name_real (name, 0, 1, block_p, 0,
4337					    LOOKUP_COMPLAIN),
4338			  args);
4339}
4340
4341tree
4342lookup_name (tree name)
4343{
4344  return lookup_name_real (name, 0, 0, /*block_p=*/true, 0, LOOKUP_COMPLAIN);
4345}
4346
4347tree
4348lookup_name_prefer_type (tree name, int prefer_type)
4349{
4350  return lookup_name_real (name, prefer_type, 0, /*block_p=*/true,
4351			   0, LOOKUP_COMPLAIN);
4352}
4353
4354/* Look up NAME for type used in elaborated name specifier in
4355   the scopes given by SCOPE.  SCOPE can be either TS_CURRENT or
4356   TS_WITHIN_ENCLOSING_NON_CLASS.  Although not implied by the
4357   name, more scopes are checked if cleanup or template parameter
4358   scope is encountered.
4359
4360   Unlike lookup_name_real, we make sure that NAME is actually
4361   declared in the desired scope, not from inheritance, nor using
4362   directive.  For using declaration, there is DR138 still waiting
4363   to be resolved.  Hidden name coming from an earlier friend
4364   declaration is also returned.
4365
4366   A TYPE_DECL best matching the NAME is returned.  Catching error
4367   and issuing diagnostics are caller's responsibility.  */
4368
4369tree
4370lookup_type_scope (tree name, tag_scope scope)
4371{
4372  cxx_binding *iter = NULL;
4373  tree val = NULL_TREE;
4374
4375  timevar_push (TV_NAME_LOOKUP);
4376
4377  /* Look in non-namespace scope first.  */
4378  if (current_binding_level->kind != sk_namespace)
4379    iter = outer_binding (name, NULL, /*class_p=*/ true);
4380  for (; iter; iter = outer_binding (name, iter, /*class_p=*/ true))
4381    {
4382      /* Check if this is the kind of thing we're looking for.
4383	 If SCOPE is TS_CURRENT, also make sure it doesn't come from
4384	 base class.  For ITER->VALUE, we can simply use
4385	 INHERITED_VALUE_BINDING_P.  For ITER->TYPE, we have to use
4386	 our own check.
4387
4388	 We check ITER->TYPE before ITER->VALUE in order to handle
4389	   typedef struct C {} C;
4390	 correctly.  */
4391
4392      if (qualify_lookup (iter->type, LOOKUP_PREFER_TYPES)
4393	  && (scope != ts_current
4394	      || LOCAL_BINDING_P (iter)
4395	      || DECL_CONTEXT (iter->type) == iter->scope->this_entity))
4396	val = iter->type;
4397      else if ((scope != ts_current
4398		|| !INHERITED_VALUE_BINDING_P (iter))
4399	       && qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
4400	val = iter->value;
4401
4402      if (val)
4403	break;
4404    }
4405
4406  /* Look in namespace scope.  */
4407  if (!val)
4408    {
4409      iter = cxx_scope_find_binding_for_name
4410	       (NAMESPACE_LEVEL (current_decl_namespace ()), name);
4411
4412      if (iter)
4413	{
4414	  /* If this is the kind of thing we're looking for, we're done.  */
4415	  if (qualify_lookup (iter->type, LOOKUP_PREFER_TYPES))
4416	    val = iter->type;
4417	  else if (qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
4418	    val = iter->value;
4419	}
4420
4421    }
4422
4423  /* Type found, check if it is in the allowed scopes, ignoring cleanup
4424     and template parameter scopes.  */
4425  if (val)
4426    {
4427      struct cp_binding_level *b = current_binding_level;
4428      while (b)
4429	{
4430	  if (iter->scope == b)
4431	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
4432
4433	  if (b->kind == sk_cleanup || b->kind == sk_template_parms
4434	      || b->kind == sk_function_parms)
4435	    b = b->level_chain;
4436	  else if (b->kind == sk_class
4437		   && scope == ts_within_enclosing_non_class)
4438	    b = b->level_chain;
4439	  else
4440	    break;
4441	}
4442    }
4443
4444  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
4445}
4446
4447/* Similar to `lookup_name' but look only in the innermost non-class
4448   binding level.  */
4449
4450tree
4451lookup_name_innermost_nonclass_level (tree name)
4452{
4453  struct cp_binding_level *b;
4454  tree t = NULL_TREE;
4455
4456  timevar_push (TV_NAME_LOOKUP);
4457  b = innermost_nonclass_level ();
4458
4459  if (b->kind == sk_namespace)
4460    {
4461      t = IDENTIFIER_NAMESPACE_VALUE (name);
4462
4463      /* extern "C" function() */
4464      if (t != NULL_TREE && TREE_CODE (t) == TREE_LIST)
4465	t = TREE_VALUE (t);
4466    }
4467  else if (IDENTIFIER_BINDING (name)
4468	   && LOCAL_BINDING_P (IDENTIFIER_BINDING (name)))
4469    {
4470      cxx_binding *binding;
4471      binding = IDENTIFIER_BINDING (name);
4472      while (1)
4473	{
4474	  if (binding->scope == b
4475	      && !(TREE_CODE (binding->value) == VAR_DECL
4476		   && DECL_DEAD_FOR_LOCAL (binding->value)))
4477	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, binding->value);
4478
4479	  if (b->kind == sk_cleanup)
4480	    b = b->level_chain;
4481	  else
4482	    break;
4483	}
4484    }
4485
4486  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
4487}
4488
4489/* Returns true iff DECL is a block-scope extern declaration of a function
4490   or variable.  */
4491
4492bool
4493is_local_extern (tree decl)
4494{
4495  cxx_binding *binding;
4496
4497  /* For functions, this is easy.  */
4498  if (TREE_CODE (decl) == FUNCTION_DECL)
4499    return DECL_LOCAL_FUNCTION_P (decl);
4500
4501  if (TREE_CODE (decl) != VAR_DECL)
4502    return false;
4503  if (!current_function_decl)
4504    return false;
4505
4506  /* For variables, this is not easy.  We need to look at the binding stack
4507     for the identifier to see whether the decl we have is a local.  */
4508  for (binding = IDENTIFIER_BINDING (DECL_NAME (decl));
4509       binding && binding->scope->kind != sk_namespace;
4510       binding = binding->previous)
4511    if (binding->value == decl)
4512      return LOCAL_BINDING_P (binding);
4513
4514  return false;
4515}
4516
4517/* Like lookup_name_innermost_nonclass_level, but for types.  */
4518
4519static tree
4520lookup_type_current_level (tree name)
4521{
4522  tree t = NULL_TREE;
4523
4524  timevar_push (TV_NAME_LOOKUP);
4525  gcc_assert (current_binding_level->kind != sk_namespace);
4526
4527  if (REAL_IDENTIFIER_TYPE_VALUE (name) != NULL_TREE
4528      && REAL_IDENTIFIER_TYPE_VALUE (name) != global_type_node)
4529    {
4530      struct cp_binding_level *b = current_binding_level;
4531      while (1)
4532	{
4533	  if (purpose_member (name, b->type_shadowed))
4534	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
4535				    REAL_IDENTIFIER_TYPE_VALUE (name));
4536	  if (b->kind == sk_cleanup)
4537	    b = b->level_chain;
4538	  else
4539	    break;
4540	}
4541    }
4542
4543  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
4544}
4545
4546/* [basic.lookup.koenig] */
4547/* A nonzero return value in the functions below indicates an error.  */
4548
4549struct arg_lookup
4550{
4551  tree name;
4552  VEC(tree,gc) *args;
4553  tree namespaces;
4554  tree classes;
4555  tree functions;
4556};
4557
4558static bool arg_assoc (struct arg_lookup*, tree);
4559static bool arg_assoc_args (struct arg_lookup*, tree);
4560static bool arg_assoc_args_vec (struct arg_lookup*, VEC(tree,gc) *);
4561static bool arg_assoc_type (struct arg_lookup*, tree);
4562static bool add_function (struct arg_lookup *, tree);
4563static bool arg_assoc_namespace (struct arg_lookup *, tree);
4564static bool arg_assoc_class_only (struct arg_lookup *, tree);
4565static bool arg_assoc_bases (struct arg_lookup *, tree);
4566static bool arg_assoc_class (struct arg_lookup *, tree);
4567static bool arg_assoc_template_arg (struct arg_lookup*, tree);
4568
4569/* Add a function to the lookup structure.
4570   Returns true on error.  */
4571
4572static bool
4573add_function (struct arg_lookup *k, tree fn)
4574{
4575  /* We used to check here to see if the function was already in the list,
4576     but that's O(n^2), which is just too expensive for function lookup.
4577     Now we deal with the occasional duplicate in joust.  In doing this, we
4578     assume that the number of duplicates will be small compared to the
4579     total number of functions being compared, which should usually be the
4580     case.  */
4581
4582  if (!is_overloaded_fn (fn))
4583    /* All names except those of (possibly overloaded) functions and
4584       function templates are ignored.  */;
4585  else if (!k->functions)
4586    k->functions = fn;
4587  else if (fn == k->functions)
4588    ;
4589  else
4590    k->functions = build_overload (fn, k->functions);
4591
4592  return false;
4593}
4594
4595/* Returns true iff CURRENT has declared itself to be an associated
4596   namespace of SCOPE via a strong using-directive (or transitive chain
4597   thereof).  Both are namespaces.  */
4598
4599bool
4600is_associated_namespace (tree current, tree scope)
4601{
4602  tree seen = NULL_TREE;
4603  tree todo = NULL_TREE;
4604  tree t;
4605  while (1)
4606    {
4607      if (scope == current)
4608	return true;
4609      seen = tree_cons (scope, NULL_TREE, seen);
4610      for (t = DECL_NAMESPACE_ASSOCIATIONS (scope); t; t = TREE_CHAIN (t))
4611	if (!purpose_member (TREE_PURPOSE (t), seen))
4612	  todo = tree_cons (TREE_PURPOSE (t), NULL_TREE, todo);
4613      if (todo)
4614	{
4615	  scope = TREE_PURPOSE (todo);
4616	  todo = TREE_CHAIN (todo);
4617	}
4618      else
4619	return false;
4620    }
4621}
4622
4623/* Add functions of a namespace to the lookup structure.
4624   Returns true on error.  */
4625
4626static bool
4627arg_assoc_namespace (struct arg_lookup *k, tree scope)
4628{
4629  tree value;
4630
4631  if (purpose_member (scope, k->namespaces))
4632    return 0;
4633  k->namespaces = tree_cons (scope, NULL_TREE, k->namespaces);
4634
4635  /* Check out our super-users.  */
4636  for (value = DECL_NAMESPACE_ASSOCIATIONS (scope); value;
4637       value = TREE_CHAIN (value))
4638    if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
4639      return true;
4640
4641  /* Also look down into inline namespaces.  */
4642  for (value = DECL_NAMESPACE_USING (scope); value;
4643       value = TREE_CHAIN (value))
4644    if (is_associated_namespace (scope, TREE_PURPOSE (value)))
4645      if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
4646	return true;
4647
4648  value = namespace_binding (k->name, scope);
4649  if (!value)
4650    return false;
4651
4652  for (; value; value = OVL_NEXT (value))
4653    {
4654      /* We don't want to find arbitrary hidden functions via argument
4655	 dependent lookup.  We only want to find friends of associated
4656	 classes, which we'll do via arg_assoc_class.  */
4657      if (hidden_name_p (OVL_CURRENT (value)))
4658	continue;
4659
4660      if (add_function (k, OVL_CURRENT (value)))
4661	return true;
4662    }
4663
4664  return false;
4665}
4666
4667/* Adds everything associated with a template argument to the lookup
4668   structure.  Returns true on error.  */
4669
4670static bool
4671arg_assoc_template_arg (struct arg_lookup *k, tree arg)
4672{
4673  /* [basic.lookup.koenig]
4674
4675     If T is a template-id, its associated namespaces and classes are
4676     ... the namespaces and classes associated with the types of the
4677     template arguments provided for template type parameters
4678     (excluding template template parameters); the namespaces in which
4679     any template template arguments are defined; and the classes in
4680     which any member templates used as template template arguments
4681     are defined.  [Note: non-type template arguments do not
4682     contribute to the set of associated namespaces.  ]  */
4683
4684  /* Consider first template template arguments.  */
4685  if (TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM
4686      || TREE_CODE (arg) == UNBOUND_CLASS_TEMPLATE)
4687    return false;
4688  else if (TREE_CODE (arg) == TEMPLATE_DECL)
4689    {
4690      tree ctx = CP_DECL_CONTEXT (arg);
4691
4692      /* It's not a member template.  */
4693      if (TREE_CODE (ctx) == NAMESPACE_DECL)
4694	return arg_assoc_namespace (k, ctx);
4695      /* Otherwise, it must be member template.  */
4696      else
4697	return arg_assoc_class_only (k, ctx);
4698    }
4699  /* It's an argument pack; handle it recursively.  */
4700  else if (ARGUMENT_PACK_P (arg))
4701    {
4702      tree args = ARGUMENT_PACK_ARGS (arg);
4703      int i, len = TREE_VEC_LENGTH (args);
4704      for (i = 0; i < len; ++i)
4705	if (arg_assoc_template_arg (k, TREE_VEC_ELT (args, i)))
4706	  return true;
4707
4708      return false;
4709    }
4710  /* It's not a template template argument, but it is a type template
4711     argument.  */
4712  else if (TYPE_P (arg))
4713    return arg_assoc_type (k, arg);
4714  /* It's a non-type template argument.  */
4715  else
4716    return false;
4717}
4718
4719/* Adds the class and its friends to the lookup structure.
4720   Returns true on error.  */
4721
4722static bool
4723arg_assoc_class_only (struct arg_lookup *k, tree type)
4724{
4725  tree list, friends, context;
4726
4727  /* Backend-built structures, such as __builtin_va_list, aren't
4728     affected by all this.  */
4729  if (!CLASS_TYPE_P (type))
4730    return false;
4731
4732  context = decl_namespace_context (type);
4733  if (arg_assoc_namespace (k, context))
4734    return true;
4735
4736  complete_type (type);
4737
4738  /* Process friends.  */
4739  for (list = DECL_FRIENDLIST (TYPE_MAIN_DECL (type)); list;
4740       list = TREE_CHAIN (list))
4741    if (k->name == FRIEND_NAME (list))
4742      for (friends = FRIEND_DECLS (list); friends;
4743	   friends = TREE_CHAIN (friends))
4744	{
4745	  tree fn = TREE_VALUE (friends);
4746
4747	  /* Only interested in global functions with potentially hidden
4748	     (i.e. unqualified) declarations.  */
4749	  if (CP_DECL_CONTEXT (fn) != context)
4750	    continue;
4751	  /* Template specializations are never found by name lookup.
4752	     (Templates themselves can be found, but not template
4753	     specializations.)  */
4754	  if (TREE_CODE (fn) == FUNCTION_DECL && DECL_USE_TEMPLATE (fn))
4755	    continue;
4756	  if (add_function (k, fn))
4757	    return true;
4758	}
4759
4760  return false;
4761}
4762
4763/* Adds the class and its bases to the lookup structure.
4764   Returns true on error.  */
4765
4766static bool
4767arg_assoc_bases (struct arg_lookup *k, tree type)
4768{
4769  if (arg_assoc_class_only (k, type))
4770    return true;
4771
4772  if (TYPE_BINFO (type))
4773    {
4774      /* Process baseclasses.  */
4775      tree binfo, base_binfo;
4776      int i;
4777
4778      for (binfo = TYPE_BINFO (type), i = 0;
4779	   BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
4780	if (arg_assoc_bases (k, BINFO_TYPE (base_binfo)))
4781	  return true;
4782    }
4783
4784  return false;
4785}
4786
4787/* Adds everything associated with a class argument type to the lookup
4788   structure.  Returns true on error.
4789
4790   If T is a class type (including unions), its associated classes are: the
4791   class itself; the class of which it is a member, if any; and its direct
4792   and indirect base classes. Its associated namespaces are the namespaces
4793   of which its associated classes are members. Furthermore, if T is a
4794   class template specialization, its associated namespaces and classes
4795   also include: the namespaces and classes associated with the types of
4796   the template arguments provided for template type parameters (excluding
4797   template template parameters); the namespaces of which any template
4798   template arguments are members; and the classes of which any member
4799   templates used as template template arguments are members. [ Note:
4800   non-type template arguments do not contribute to the set of associated
4801   namespaces.  --end note] */
4802
4803static bool
4804arg_assoc_class (struct arg_lookup *k, tree type)
4805{
4806  tree list;
4807  int i;
4808
4809  /* Backend build structures, such as __builtin_va_list, aren't
4810     affected by all this.  */
4811  if (!CLASS_TYPE_P (type))
4812    return false;
4813
4814  if (purpose_member (type, k->classes))
4815    return false;
4816  k->classes = tree_cons (type, NULL_TREE, k->classes);
4817
4818  if (TYPE_CLASS_SCOPE_P (type)
4819      && arg_assoc_class_only (k, TYPE_CONTEXT (type)))
4820    return true;
4821
4822  if (arg_assoc_bases (k, type))
4823    return true;
4824
4825  /* Process template arguments.  */
4826  if (CLASSTYPE_TEMPLATE_INFO (type)
4827      && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (type)))
4828    {
4829      list = INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (type));
4830      for (i = 0; i < TREE_VEC_LENGTH (list); ++i)
4831	if (arg_assoc_template_arg (k, TREE_VEC_ELT (list, i)))
4832	  return true;
4833    }
4834
4835  return false;
4836}
4837
4838/* Adds everything associated with a given type.
4839   Returns 1 on error.  */
4840
4841static bool
4842arg_assoc_type (struct arg_lookup *k, tree type)
4843{
4844  /* As we do not get the type of non-type dependent expressions
4845     right, we can end up with such things without a type.  */
4846  if (!type)
4847    return false;
4848
4849  if (TYPE_PTRMEM_P (type))
4850    {
4851      /* Pointer to member: associate class type and value type.  */
4852      if (arg_assoc_type (k, TYPE_PTRMEM_CLASS_TYPE (type)))
4853	return true;
4854      return arg_assoc_type (k, TYPE_PTRMEM_POINTED_TO_TYPE (type));
4855    }
4856  else switch (TREE_CODE (type))
4857    {
4858    case ERROR_MARK:
4859      return false;
4860    case VOID_TYPE:
4861    case INTEGER_TYPE:
4862    case REAL_TYPE:
4863    case COMPLEX_TYPE:
4864    case VECTOR_TYPE:
4865    case BOOLEAN_TYPE:
4866    case FIXED_POINT_TYPE:
4867    case DECLTYPE_TYPE:
4868      return false;
4869    case RECORD_TYPE:
4870      if (TYPE_PTRMEMFUNC_P (type))
4871	return arg_assoc_type (k, TYPE_PTRMEMFUNC_FN_TYPE (type));
4872    case UNION_TYPE:
4873      return arg_assoc_class (k, type);
4874    case POINTER_TYPE:
4875    case REFERENCE_TYPE:
4876    case ARRAY_TYPE:
4877      return arg_assoc_type (k, TREE_TYPE (type));
4878    case ENUMERAL_TYPE:
4879      if (TYPE_CLASS_SCOPE_P (type)
4880	  && arg_assoc_class_only (k, TYPE_CONTEXT (type)))
4881	return true;
4882      return arg_assoc_namespace (k, decl_namespace_context (type));
4883    case METHOD_TYPE:
4884      /* The basetype is referenced in the first arg type, so just
4885	 fall through.  */
4886    case FUNCTION_TYPE:
4887      /* Associate the parameter types.  */
4888      if (arg_assoc_args (k, TYPE_ARG_TYPES (type)))
4889	return true;
4890      /* Associate the return type.  */
4891      return arg_assoc_type (k, TREE_TYPE (type));
4892    case TEMPLATE_TYPE_PARM:
4893    case BOUND_TEMPLATE_TEMPLATE_PARM:
4894      return false;
4895    case TYPENAME_TYPE:
4896      return false;
4897    case LANG_TYPE:
4898      gcc_assert (type == unknown_type_node
4899		  || type == init_list_type_node);
4900      return false;
4901    case TYPE_PACK_EXPANSION:
4902      return arg_assoc_type (k, PACK_EXPANSION_PATTERN (type));
4903
4904    default:
4905      gcc_unreachable ();
4906    }
4907  return false;
4908}
4909
4910/* Adds everything associated with arguments.  Returns true on error.  */
4911
4912static bool
4913arg_assoc_args (struct arg_lookup *k, tree args)
4914{
4915  for (; args; args = TREE_CHAIN (args))
4916    if (arg_assoc (k, TREE_VALUE (args)))
4917      return true;
4918  return false;
4919}
4920
4921/* Adds everything associated with an argument vector.  Returns true
4922   on error.  */
4923
4924static bool
4925arg_assoc_args_vec (struct arg_lookup *k, VEC(tree,gc) *args)
4926{
4927  unsigned int ix;
4928  tree arg;
4929
4930  for (ix = 0; VEC_iterate (tree, args, ix, arg); ++ix)
4931    if (arg_assoc (k, arg))
4932      return true;
4933  return false;
4934}
4935
4936/* Adds everything associated with a given tree_node.  Returns 1 on error.  */
4937
4938static bool
4939arg_assoc (struct arg_lookup *k, tree n)
4940{
4941  if (n == error_mark_node)
4942    return false;
4943
4944  if (TYPE_P (n))
4945    return arg_assoc_type (k, n);
4946
4947  if (! type_unknown_p (n))
4948    return arg_assoc_type (k, TREE_TYPE (n));
4949
4950  if (TREE_CODE (n) == ADDR_EXPR)
4951    n = TREE_OPERAND (n, 0);
4952  if (TREE_CODE (n) == COMPONENT_REF)
4953    n = TREE_OPERAND (n, 1);
4954  if (TREE_CODE (n) == OFFSET_REF)
4955    n = TREE_OPERAND (n, 1);
4956  while (TREE_CODE (n) == TREE_LIST)
4957    n = TREE_VALUE (n);
4958  if (TREE_CODE (n) == BASELINK)
4959    n = BASELINK_FUNCTIONS (n);
4960
4961  if (TREE_CODE (n) == FUNCTION_DECL)
4962    return arg_assoc_type (k, TREE_TYPE (n));
4963  if (TREE_CODE (n) == TEMPLATE_ID_EXPR)
4964    {
4965      /* The working paper doesn't currently say how to handle template-id
4966	 arguments.  The sensible thing would seem to be to handle the list
4967	 of template candidates like a normal overload set, and handle the
4968	 template arguments like we do for class template
4969	 specializations.  */
4970      tree templ = TREE_OPERAND (n, 0);
4971      tree args = TREE_OPERAND (n, 1);
4972      int ix;
4973
4974      /* First the templates.  */
4975      if (arg_assoc (k, templ))
4976	return true;
4977
4978      /* Now the arguments.  */
4979      if (args)
4980	for (ix = TREE_VEC_LENGTH (args); ix--;)
4981	  if (arg_assoc_template_arg (k, TREE_VEC_ELT (args, ix)) == 1)
4982	    return true;
4983    }
4984  else if (TREE_CODE (n) == OVERLOAD)
4985    {
4986      for (; n; n = OVL_CHAIN (n))
4987	if (arg_assoc_type (k, TREE_TYPE (OVL_FUNCTION (n))))
4988	  return true;
4989    }
4990
4991  return false;
4992}
4993
4994/* Performs Koenig lookup depending on arguments, where fns
4995   are the functions found in normal lookup.  */
4996
4997tree
4998lookup_arg_dependent (tree name, tree fns, VEC(tree,gc) *args)
4999{
5000  struct arg_lookup k;
5001
5002  timevar_push (TV_NAME_LOOKUP);
5003
5004  /* Remove any hidden friend functions from the list of functions
5005     found so far.  They will be added back by arg_assoc_class as
5006     appropriate.  */
5007  fns = remove_hidden_names (fns);
5008
5009  k.name = name;
5010  k.args = args;
5011  k.functions = fns;
5012  k.classes = NULL_TREE;
5013
5014  /* We previously performed an optimization here by setting
5015     NAMESPACES to the current namespace when it was safe. However, DR
5016     164 says that namespaces that were already searched in the first
5017     stage of template processing are searched again (potentially
5018     picking up later definitions) in the second stage. */
5019  k.namespaces = NULL_TREE;
5020
5021  arg_assoc_args_vec (&k, args);
5022
5023  fns = k.functions;
5024
5025  if (fns
5026      && TREE_CODE (fns) != VAR_DECL
5027      && !is_overloaded_fn (fns))
5028    {
5029      error ("argument dependent lookup finds %q+D", fns);
5030      error ("  in call to %qD", name);
5031      fns = error_mark_node;
5032    }
5033
5034  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, fns);
5035}
5036
5037/* Add namespace to using_directives. Return NULL_TREE if nothing was
5038   changed (i.e. there was already a directive), or the fresh
5039   TREE_LIST otherwise.  */
5040
5041static tree
5042push_using_directive (tree used)
5043{
5044  tree ud = current_binding_level->using_directives;
5045  tree iter, ancestor;
5046
5047  timevar_push (TV_NAME_LOOKUP);
5048  /* Check if we already have this.  */
5049  if (purpose_member (used, ud) != NULL_TREE)
5050    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
5051
5052  ancestor = namespace_ancestor (current_decl_namespace (), used);
5053  ud = current_binding_level->using_directives;
5054  ud = tree_cons (used, ancestor, ud);
5055  current_binding_level->using_directives = ud;
5056
5057  /* Recursively add all namespaces used.  */
5058  for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter))
5059    push_using_directive (TREE_PURPOSE (iter));
5060
5061  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ud);
5062}
5063
5064/* The type TYPE is being declared.  If it is a class template, or a
5065   specialization of a class template, do any processing required and
5066   perform error-checking.  If IS_FRIEND is nonzero, this TYPE is
5067   being declared a friend.  B is the binding level at which this TYPE
5068   should be bound.
5069
5070   Returns the TYPE_DECL for TYPE, which may have been altered by this
5071   processing.  */
5072
5073static tree
5074maybe_process_template_type_declaration (tree type, int is_friend,
5075					 cxx_scope *b)
5076{
5077  tree decl = TYPE_NAME (type);
5078
5079  if (processing_template_parmlist)
5080    /* You can't declare a new template type in a template parameter
5081       list.  But, you can declare a non-template type:
5082
5083	 template <class A*> struct S;
5084
5085       is a forward-declaration of `A'.  */
5086    ;
5087  else if (b->kind == sk_namespace
5088	   && current_binding_level->kind != sk_namespace)
5089    /* If this new type is being injected into a containing scope,
5090       then it's not a template type.  */
5091    ;
5092  else
5093    {
5094      gcc_assert (MAYBE_CLASS_TYPE_P (type)
5095		  || TREE_CODE (type) == ENUMERAL_TYPE);
5096
5097      if (processing_template_decl)
5098	{
5099	  /* This may change after the call to
5100	     push_template_decl_real, but we want the original value.  */
5101	  tree name = DECL_NAME (decl);
5102
5103	  decl = push_template_decl_real (decl, is_friend);
5104	  if (decl == error_mark_node)
5105	    return error_mark_node;
5106
5107	  /* If the current binding level is the binding level for the
5108	     template parameters (see the comment in
5109	     begin_template_parm_list) and the enclosing level is a class
5110	     scope, and we're not looking at a friend, push the
5111	     declaration of the member class into the class scope.  In the
5112	     friend case, push_template_decl will already have put the
5113	     friend into global scope, if appropriate.  */
5114	  if (TREE_CODE (type) != ENUMERAL_TYPE
5115	      && !is_friend && b->kind == sk_template_parms
5116	      && b->level_chain->kind == sk_class)
5117	    {
5118	      finish_member_declaration (CLASSTYPE_TI_TEMPLATE (type));
5119
5120	      if (!COMPLETE_TYPE_P (current_class_type))
5121		{
5122		  maybe_add_class_template_decl_list (current_class_type,
5123						      type, /*friend_p=*/0);
5124		  /* Put this UTD in the table of UTDs for the class.  */
5125		  if (CLASSTYPE_NESTED_UTDS (current_class_type) == NULL)
5126		    CLASSTYPE_NESTED_UTDS (current_class_type) =
5127		      binding_table_new (SCOPE_DEFAULT_HT_SIZE);
5128
5129		  binding_table_insert
5130		    (CLASSTYPE_NESTED_UTDS (current_class_type), name, type);
5131		}
5132	    }
5133	}
5134    }
5135
5136  return decl;
5137}
5138
5139/* Push a tag name NAME for struct/class/union/enum type TYPE.  In case
5140   that the NAME is a class template, the tag is processed but not pushed.
5141
5142   The pushed scope depend on the SCOPE parameter:
5143   - When SCOPE is TS_CURRENT, put it into the inner-most non-sk_cleanup
5144     scope.
5145   - When SCOPE is TS_GLOBAL, put it in the inner-most non-class and
5146     non-template-parameter scope.  This case is needed for forward
5147     declarations.
5148   - When SCOPE is TS_WITHIN_ENCLOSING_NON_CLASS, this is similar to
5149     TS_GLOBAL case except that names within template-parameter scopes
5150     are not pushed at all.
5151
5152   Returns TYPE upon success and ERROR_MARK_NODE otherwise.  */
5153
5154tree
5155pushtag (tree name, tree type, tag_scope scope)
5156{
5157  struct cp_binding_level *b;
5158  tree decl;
5159
5160  timevar_push (TV_NAME_LOOKUP);
5161  b = current_binding_level;
5162  while (/* Cleanup scopes are not scopes from the point of view of
5163	    the language.  */
5164	 b->kind == sk_cleanup
5165	 /* Neither are function parameter scopes.  */
5166	 || b->kind == sk_function_parms
5167	 /* Neither are the scopes used to hold template parameters
5168	    for an explicit specialization.  For an ordinary template
5169	    declaration, these scopes are not scopes from the point of
5170	    view of the language.  */
5171	 || (b->kind == sk_template_parms
5172	     && (b->explicit_spec_p || scope == ts_global))
5173	 || (b->kind == sk_class
5174	     && (scope != ts_current
5175		 /* We may be defining a new type in the initializer
5176		    of a static member variable. We allow this when
5177		    not pedantic, and it is particularly useful for
5178		    type punning via an anonymous union.  */
5179		 || COMPLETE_TYPE_P (b->this_entity))))
5180    b = b->level_chain;
5181
5182  gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
5183
5184  /* Do C++ gratuitous typedefing.  */
5185  if (IDENTIFIER_TYPE_VALUE (name) != type)
5186    {
5187      tree tdef;
5188      int in_class = 0;
5189      tree context = TYPE_CONTEXT (type);
5190
5191      if (! context)
5192	{
5193	  tree cs = current_scope ();
5194
5195	  if (scope == ts_current
5196	      || (cs && TREE_CODE (cs) == FUNCTION_DECL))
5197	    context = cs;
5198	  else if (cs != NULL_TREE && TYPE_P (cs))
5199	    /* When declaring a friend class of a local class, we want
5200	       to inject the newly named class into the scope
5201	       containing the local class, not the namespace
5202	       scope.  */
5203	    context = decl_function_context (get_type_decl (cs));
5204	}
5205      if (!context)
5206	context = current_namespace;
5207
5208      if (b->kind == sk_class
5209	  || (b->kind == sk_template_parms
5210	      && b->level_chain->kind == sk_class))
5211	in_class = 1;
5212
5213      if (current_lang_name == lang_name_java)
5214	TYPE_FOR_JAVA (type) = 1;
5215
5216      tdef = create_implicit_typedef (name, type);
5217      DECL_CONTEXT (tdef) = FROB_CONTEXT (context);
5218      if (scope == ts_within_enclosing_non_class)
5219	{
5220	  /* This is a friend.  Make this TYPE_DECL node hidden from
5221	     ordinary name lookup.  Its corresponding TEMPLATE_DECL
5222	     will be marked in push_template_decl_real.  */
5223	  retrofit_lang_decl (tdef);
5224	  DECL_ANTICIPATED (tdef) = 1;
5225	  DECL_FRIEND_P (tdef) = 1;
5226	}
5227
5228      decl = maybe_process_template_type_declaration
5229	(type, scope == ts_within_enclosing_non_class, b);
5230      if (decl == error_mark_node)
5231	POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
5232
5233      if (b->kind == sk_class)
5234	{
5235	  if (!TYPE_BEING_DEFINED (current_class_type))
5236	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
5237
5238	  if (!PROCESSING_REAL_TEMPLATE_DECL_P ())
5239	    /* Put this TYPE_DECL on the TYPE_FIELDS list for the
5240	       class.  But if it's a member template class, we want
5241	       the TEMPLATE_DECL, not the TYPE_DECL, so this is done
5242	       later.  */
5243	    finish_member_declaration (decl);
5244	  else
5245	    pushdecl_class_level (decl);
5246	}
5247      else if (b->kind != sk_template_parms)
5248	{
5249	  decl = pushdecl_with_scope (decl, b, /*is_friend=*/false);
5250	  if (decl == error_mark_node)
5251	    POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
5252	}
5253
5254      if (! in_class)
5255	set_identifier_type_value_with_scope (name, tdef, b);
5256
5257      TYPE_CONTEXT (type) = DECL_CONTEXT (decl);
5258
5259      /* If this is a local class, keep track of it.  We need this
5260	 information for name-mangling, and so that it is possible to
5261	 find all function definitions in a translation unit in a
5262	 convenient way.  (It's otherwise tricky to find a member
5263	 function definition it's only pointed to from within a local
5264	 class.)  */
5265      if (TYPE_CONTEXT (type)
5266	  && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL)
5267	VEC_safe_push (tree, gc, local_classes, type);
5268    }
5269  if (b->kind == sk_class
5270      && !COMPLETE_TYPE_P (current_class_type))
5271    {
5272      maybe_add_class_template_decl_list (current_class_type,
5273					  type, /*friend_p=*/0);
5274
5275      if (CLASSTYPE_NESTED_UTDS (current_class_type) == NULL)
5276	CLASSTYPE_NESTED_UTDS (current_class_type)
5277	  = binding_table_new (SCOPE_DEFAULT_HT_SIZE);
5278
5279      binding_table_insert
5280	(CLASSTYPE_NESTED_UTDS (current_class_type), name, type);
5281    }
5282
5283  decl = TYPE_NAME (type);
5284  gcc_assert (TREE_CODE (decl) == TYPE_DECL);
5285
5286  /* Set type visibility now if this is a forward declaration.  */
5287  TREE_PUBLIC (decl) = 1;
5288  determine_visibility (decl);
5289
5290  POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, type);
5291}
5292
5293/* Subroutines for reverting temporarily to top-level for instantiation
5294   of templates and such.  We actually need to clear out the class- and
5295   local-value slots of all identifiers, so that only the global values
5296   are at all visible.  Simply setting current_binding_level to the global
5297   scope isn't enough, because more binding levels may be pushed.  */
5298struct saved_scope *scope_chain;
5299
5300/* If ID has not already been marked, add an appropriate binding to
5301   *OLD_BINDINGS.  */
5302
5303static void
5304store_binding (tree id, VEC(cxx_saved_binding,gc) **old_bindings)
5305{
5306  cxx_saved_binding *saved;
5307
5308  if (!id || !IDENTIFIER_BINDING (id))
5309    return;
5310
5311  if (IDENTIFIER_MARKED (id))
5312    return;
5313
5314  IDENTIFIER_MARKED (id) = 1;
5315
5316  saved = VEC_safe_push (cxx_saved_binding, gc, *old_bindings, NULL);
5317  saved->identifier = id;
5318  saved->binding = IDENTIFIER_BINDING (id);
5319  saved->real_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
5320  IDENTIFIER_BINDING (id) = NULL;
5321}
5322
5323static void
5324store_bindings (tree names, VEC(cxx_saved_binding,gc) **old_bindings)
5325{
5326  tree t;
5327
5328  timevar_push (TV_NAME_LOOKUP);
5329  for (t = names; t; t = TREE_CHAIN (t))
5330    {
5331      tree id;
5332
5333      if (TREE_CODE (t) == TREE_LIST)
5334	id = TREE_PURPOSE (t);
5335      else
5336	id = DECL_NAME (t);
5337
5338      store_binding (id, old_bindings);
5339    }
5340  timevar_pop (TV_NAME_LOOKUP);
5341}
5342
5343/* Like store_bindings, but NAMES is a vector of cp_class_binding
5344   objects, rather than a TREE_LIST.  */
5345
5346static void
5347store_class_bindings (VEC(cp_class_binding,gc) *names,
5348		      VEC(cxx_saved_binding,gc) **old_bindings)
5349{
5350  size_t i;
5351  cp_class_binding *cb;
5352
5353  timevar_push (TV_NAME_LOOKUP);
5354  for (i = 0; VEC_iterate(cp_class_binding, names, i, cb); ++i)
5355    store_binding (cb->identifier, old_bindings);
5356  timevar_pop (TV_NAME_LOOKUP);
5357}
5358
5359void
5360push_to_top_level (void)
5361{
5362  struct saved_scope *s;
5363  struct cp_binding_level *b;
5364  cxx_saved_binding *sb;
5365  size_t i;
5366  bool need_pop;
5367
5368  timevar_push (TV_NAME_LOOKUP);
5369  s = GGC_CNEW (struct saved_scope);
5370
5371  b = scope_chain ? current_binding_level : 0;
5372
5373  /* If we're in the middle of some function, save our state.  */
5374  if (cfun)
5375    {
5376      need_pop = true;
5377      push_function_context ();
5378    }
5379  else
5380    need_pop = false;
5381
5382  if (scope_chain && previous_class_level)
5383    store_class_bindings (previous_class_level->class_shadowed,
5384			  &s->old_bindings);
5385
5386  /* Have to include the global scope, because class-scope decls
5387     aren't listed anywhere useful.  */
5388  for (; b; b = b->level_chain)
5389    {
5390      tree t;
5391
5392      /* Template IDs are inserted into the global level. If they were
5393	 inserted into namespace level, finish_file wouldn't find them
5394	 when doing pending instantiations. Therefore, don't stop at
5395	 namespace level, but continue until :: .  */
5396      if (global_scope_p (b))
5397	break;
5398
5399      store_bindings (b->names, &s->old_bindings);
5400      /* We also need to check class_shadowed to save class-level type
5401	 bindings, since pushclass doesn't fill in b->names.  */
5402      if (b->kind == sk_class)
5403	store_class_bindings (b->class_shadowed, &s->old_bindings);
5404
5405      /* Unwind type-value slots back to top level.  */
5406      for (t = b->type_shadowed; t; t = TREE_CHAIN (t))
5407	SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (t), TREE_VALUE (t));
5408    }
5409
5410  for (i = 0; VEC_iterate (cxx_saved_binding, s->old_bindings, i, sb); ++i)
5411    IDENTIFIER_MARKED (sb->identifier) = 0;
5412
5413  s->prev = scope_chain;
5414  s->bindings = b;
5415  s->need_pop_function_context = need_pop;
5416  s->function_decl = current_function_decl;
5417  s->unevaluated_operand = cp_unevaluated_operand;
5418  s->inhibit_evaluation_warnings = c_inhibit_evaluation_warnings;
5419
5420  scope_chain = s;
5421  current_function_decl = NULL_TREE;
5422  current_lang_base = VEC_alloc (tree, gc, 10);
5423  current_lang_name = lang_name_cplusplus;
5424  current_namespace = global_namespace;
5425  push_class_stack ();
5426  cp_unevaluated_operand = 0;
5427  c_inhibit_evaluation_warnings = 0;
5428  timevar_pop (TV_NAME_LOOKUP);
5429}
5430
5431void
5432pop_from_top_level (void)
5433{
5434  struct saved_scope *s = scope_chain;
5435  cxx_saved_binding *saved;
5436  size_t i;
5437
5438  timevar_push (TV_NAME_LOOKUP);
5439  /* Clear out class-level bindings cache.  */
5440  if (previous_class_level)
5441    invalidate_class_lookup_cache ();
5442  pop_class_stack ();
5443
5444  current_lang_base = 0;
5445
5446  scope_chain = s->prev;
5447  for (i = 0; VEC_iterate (cxx_saved_binding, s->old_bindings, i, saved); ++i)
5448    {
5449      tree id = saved->identifier;
5450
5451      IDENTIFIER_BINDING (id) = saved->binding;
5452      SET_IDENTIFIER_TYPE_VALUE (id, saved->real_type_value);
5453    }
5454
5455  /* If we were in the middle of compiling a function, restore our
5456     state.  */
5457  if (s->need_pop_function_context)
5458    pop_function_context ();
5459  current_function_decl = s->function_decl;
5460  cp_unevaluated_operand = s->unevaluated_operand;
5461  c_inhibit_evaluation_warnings = s->inhibit_evaluation_warnings;
5462  timevar_pop (TV_NAME_LOOKUP);
5463}
5464
5465/* Pop off extraneous binding levels left over due to syntax errors.
5466
5467   We don't pop past namespaces, as they might be valid.  */
5468
5469void
5470pop_everything (void)
5471{
5472  if (ENABLE_SCOPE_CHECKING)
5473    verbatim ("XXX entering pop_everything ()\n");
5474  while (!toplevel_bindings_p ())
5475    {
5476      if (current_binding_level->kind == sk_class)
5477	pop_nested_class ();
5478      else
5479	poplevel (0, 0, 0);
5480    }
5481  if (ENABLE_SCOPE_CHECKING)
5482    verbatim ("XXX leaving pop_everything ()\n");
5483}
5484
5485/* Emit debugging information for using declarations and directives.
5486   If input tree is overloaded fn then emit debug info for all
5487   candidates.  */
5488
5489void
5490cp_emit_debug_info_for_using (tree t, tree context)
5491{
5492  /* Don't try to emit any debug information if we have errors.  */
5493  if (sorrycount || errorcount)
5494    return;
5495
5496  /* Ignore this FUNCTION_DECL if it refers to a builtin declaration
5497     of a builtin function.  */
5498  if (TREE_CODE (t) == FUNCTION_DECL
5499      && DECL_EXTERNAL (t)
5500      && DECL_BUILT_IN (t))
5501    return;
5502
5503  /* Do not supply context to imported_module_or_decl, if
5504     it is a global namespace.  */
5505  if (context == global_namespace)
5506    context = NULL_TREE;
5507
5508  if (BASELINK_P (t))
5509    t = BASELINK_FUNCTIONS (t);
5510
5511  /* FIXME: Handle TEMPLATE_DECLs.  */
5512  for (t = OVL_CURRENT (t); t; t = OVL_NEXT (t))
5513    if (TREE_CODE (t) != TEMPLATE_DECL)
5514      {
5515	if (building_stmt_tree ())
5516	  add_stmt (build_stmt (input_location, USING_STMT, t));
5517	else
5518	  (*debug_hooks->imported_module_or_decl) (t, NULL_TREE, context, false);
5519      }
5520}
5521
5522#include "gt-cp-name-lookup.h"
5523