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