OSDN Git Service

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