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