OSDN Git Service

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