OSDN Git Service

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