OSDN Git Service

PR c++/13764
[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             old_decl = bval;
2673         }
2674       else if (TREE_CODE (x) == OVERLOAD && is_overloaded_fn (bval))
2675         old_decl = bval;
2676       else if (TREE_CODE (x) == USING_DECL && TREE_CODE (bval) == USING_DECL)
2677         POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2678       else if (TREE_CODE (x) == USING_DECL && is_overloaded_fn (bval))
2679         old_decl = bval;
2680       else if (TREE_CODE (bval) == USING_DECL && is_overloaded_fn (x))
2681         POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2682
2683       if (old_decl && binding->scope == class_binding_level)
2684         {
2685           binding->value = x;
2686           /* It is always safe to clear INHERITED_VALUE_BINDING_P
2687              here.  This function is only used to register bindings
2688              from with the class definition itself.  */
2689           INHERITED_VALUE_BINDING_P (binding) = 0;
2690           POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, true);
2691         }
2692     }
2693
2694   /* Note that we declared this value so that we can issue an error if
2695      this is an invalid redeclaration of a name already used for some
2696      other purpose.  */
2697   note_name_declared_in_class (name, decl);
2698
2699   /* If we didn't replace an existing binding, put the binding on the
2700      stack of bindings for the identifier, and update the shadowed
2701      list.  */
2702   if (binding && binding->scope == class_binding_level)
2703     /* Supplement the existing binding.  */
2704     ok = supplement_binding (binding, decl);
2705   else
2706     {
2707       /* Create a new binding.  */
2708       push_binding (name, decl, class_binding_level);
2709       ok = true;
2710     }
2711
2712   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ok);
2713 }
2714
2715 /* Process "using SCOPE::NAME" in a class scope.  Return the
2716    USING_DECL created.  */
2717
2718 tree
2719 do_class_using_decl (tree scope, tree name)
2720 {
2721   tree value, decl, binfo;
2722   base_kind b_kind;
2723   bool dependent_p;
2724
2725   if (!scope || !TYPE_P (scope))
2726     {
2727       error ("using-declaration for non-member at class scope");
2728       return NULL_TREE;
2729     }
2730
2731   /* Make sure the scope is a base.  */
2732   dependent_p = dependent_type_p (scope);
2733   if (!dependent_p)
2734     binfo = lookup_base (current_class_type, scope, ba_any, &b_kind);
2735   else
2736     {
2737       binfo = NULL;
2738       if (same_type_p (current_class_type, scope))
2739         b_kind = bk_same_type;
2740       else
2741         b_kind = bk_proper_base;
2742     }
2743
2744   if (b_kind < bk_proper_base)
2745     {
2746       error_not_base_type (scope, current_class_type);
2747       return NULL_TREE;
2748     }
2749
2750   /* Make sure the name is not invalid */
2751   if (TREE_CODE (name) == BIT_NOT_EXPR)
2752     {
2753       error ("%<%T::%D%> names destructor", scope, name);
2754       return NULL_TREE;
2755     }
2756   if (constructor_name_p (name, scope))
2757     {
2758       error ("%<%T::%D%> names constructor", scope, name);
2759       return NULL_TREE;
2760     }
2761   if (constructor_name_p (name, current_class_type))
2762     {
2763       error ("%<%T::%D%> names constructor in %qT",
2764              scope, name, current_class_type);
2765       return NULL_TREE;
2766     }
2767
2768   if (!dependent_p
2769       && IDENTIFIER_OPNAME_P (name) && dependent_type_p (TREE_TYPE (name)))
2770     dependent_p = 1;
2771
2772   /* See if there are any members of the base. */
2773   if (!dependent_p)
2774     {
2775       decl = lookup_member (binfo, name, 0, false);
2776
2777       if (!decl)
2778         {
2779           error ("no members matching %<%T::%D%> in %q#T", scope, name, scope);
2780           return NULL_TREE;
2781         }
2782
2783       if (BASELINK_P (decl))
2784         /* Ignore base type this came from.  */
2785         decl = BASELINK_FUNCTIONS (decl);
2786    }
2787   else
2788     decl = NULL_TREE;
2789
2790   value = build_lang_decl (USING_DECL, name, NULL_TREE);
2791   USING_DECL_DECLS (value) = decl;
2792   USING_DECL_SCOPE (value) = scope;
2793   DECL_DEPENDENT_P (value) = dependent_p;
2794
2795   return value;
2796 }
2797
2798 \f
2799 /* Return the binding value for name in scope.  */
2800
2801 tree
2802 namespace_binding (tree name, tree scope)
2803 {
2804   cxx_binding *binding;
2805
2806   if (scope == NULL)
2807     scope = global_namespace;
2808   else
2809     /* Unnecessary for the global namespace because it can't be an alias. */
2810     scope = ORIGINAL_NAMESPACE (scope);
2811
2812   binding = cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
2813
2814   return binding ? binding->value : NULL_TREE;
2815 }
2816
2817 /* Set the binding value for name in scope.  */
2818
2819 void
2820 set_namespace_binding (tree name, tree scope, tree val)
2821 {
2822   cxx_binding *b;
2823
2824   timevar_push (TV_NAME_LOOKUP);
2825   if (scope == NULL_TREE)
2826     scope = global_namespace;
2827   b = binding_for_name (NAMESPACE_LEVEL (scope), name);
2828   if (!b->value || TREE_CODE (val) == OVERLOAD || val == error_mark_node)
2829     b->value = val;
2830   else
2831     supplement_binding (b, val);
2832   timevar_pop (TV_NAME_LOOKUP);
2833 }
2834
2835 /* Set the context of a declaration to scope. Complain if we are not
2836    outside scope.  */
2837
2838 void
2839 set_decl_namespace (tree decl, tree scope, bool friendp)
2840 {
2841   tree old;
2842
2843   /* Get rid of namespace aliases.  */
2844   scope = ORIGINAL_NAMESPACE (scope);
2845
2846   /* It is ok for friends to be qualified in parallel space.  */
2847   if (!friendp && !is_ancestor (current_namespace, scope))
2848     error ("declaration of %qD not in a namespace surrounding %qD",
2849            decl, scope);
2850   DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
2851
2852   /* Writing "int N::i" to declare a variable within "N" is invalid.  */
2853   if (scope == current_namespace)
2854     {
2855       if (at_namespace_scope_p ())
2856         error ("explicit qualification in declaration of %qD",
2857                decl);
2858       return;
2859     }
2860
2861   /* See whether this has been declared in the namespace.  */
2862   old = namespace_binding (DECL_NAME (decl), scope);
2863   if (!old)
2864     /* No old declaration at all.  */
2865     goto complain;
2866   /* A template can be explicitly specialized in any namespace.  */
2867   if (processing_explicit_instantiation)
2868     return;
2869   if (!is_overloaded_fn (decl))
2870     /* Don't compare non-function decls with decls_match here, since
2871        it can't check for the correct constness at this
2872        point. pushdecl will find those errors later.  */
2873     return;
2874   /* Since decl is a function, old should contain a function decl.  */
2875   if (!is_overloaded_fn (old))
2876     goto complain;
2877   if (processing_template_decl || processing_specialization)
2878     /* We have not yet called push_template_decl to turn a
2879        FUNCTION_DECL into a TEMPLATE_DECL, so the declarations won't
2880        match.  But, we'll check later, when we construct the
2881        template.  */
2882     return;
2883   if (is_overloaded_fn (old))
2884     {
2885       for (; old; old = OVL_NEXT (old))
2886         if (decls_match (decl, OVL_CURRENT (old)))
2887           return;
2888     }
2889   else if (decls_match (decl, old))
2890       return;
2891  complain:
2892   error ("%qD should have been declared inside %qD", decl, scope);
2893 }
2894
2895 /* Return the namespace where the current declaration is declared.  */
2896
2897 static tree
2898 current_decl_namespace (void)
2899 {
2900   tree result;
2901   /* If we have been pushed into a different namespace, use it.  */
2902   if (decl_namespace_list)
2903     return TREE_PURPOSE (decl_namespace_list);
2904
2905   if (current_class_type)
2906     result = decl_namespace_context (current_class_type);
2907   else if (current_function_decl)
2908     result = decl_namespace_context (current_function_decl);
2909   else
2910     result = current_namespace;
2911   return result;
2912 }
2913
2914 /* Push into the scope of the NAME namespace.  If NAME is NULL_TREE, then we
2915    select a name that is unique to this compilation unit.  */
2916
2917 void
2918 push_namespace (tree name)
2919 {
2920   tree d = NULL_TREE;
2921   int need_new = 1;
2922   int implicit_use = 0;
2923   bool anon = !name;
2924
2925   timevar_push (TV_NAME_LOOKUP);
2926
2927   /* We should not get here if the global_namespace is not yet constructed
2928      nor if NAME designates the global namespace:  The global scope is
2929      constructed elsewhere.  */
2930   gcc_assert (global_namespace != NULL && name != global_scope_name);
2931
2932   if (anon)
2933     {
2934       /* The name of anonymous namespace is unique for the translation
2935          unit.  */
2936       if (!anonymous_namespace_name)
2937         anonymous_namespace_name = get_file_function_name ('N');
2938       name = anonymous_namespace_name;
2939       d = IDENTIFIER_NAMESPACE_VALUE (name);
2940       if (d)
2941         /* Reopening anonymous namespace.  */
2942         need_new = 0;
2943       implicit_use = 1;
2944     }
2945   else
2946     {
2947       /* Check whether this is an extended namespace definition.  */
2948       d = IDENTIFIER_NAMESPACE_VALUE (name);
2949       if (d != NULL_TREE && TREE_CODE (d) == NAMESPACE_DECL)
2950         {
2951           need_new = 0;
2952           if (DECL_NAMESPACE_ALIAS (d))
2953             {
2954               error ("namespace alias %qD not allowed here, assuming %qD",
2955                      d, DECL_NAMESPACE_ALIAS (d));
2956               d = DECL_NAMESPACE_ALIAS (d);
2957             }
2958         }
2959     }
2960
2961   if (need_new)
2962     {
2963       /* Make a new namespace, binding the name to it.  */
2964       d = build_lang_decl (NAMESPACE_DECL, name, void_type_node);
2965       DECL_CONTEXT (d) = FROB_CONTEXT (current_namespace);
2966       pushdecl (d);
2967       if (anon)
2968         {
2969           /* Clear DECL_NAME for the benefit of debugging back ends.  */
2970           SET_DECL_ASSEMBLER_NAME (d, name);
2971           DECL_NAME (d) = NULL_TREE;
2972         }
2973       begin_scope (sk_namespace, d);
2974     }
2975   else
2976     resume_scope (NAMESPACE_LEVEL (d));
2977
2978   if (implicit_use)
2979     do_using_directive (d);
2980   /* Enter the name space.  */
2981   current_namespace = d;
2982
2983   timevar_pop (TV_NAME_LOOKUP);
2984 }
2985
2986 /* Pop from the scope of the current namespace.  */
2987
2988 void
2989 pop_namespace (void)
2990 {
2991   gcc_assert (current_namespace != global_namespace);
2992   current_namespace = CP_DECL_CONTEXT (current_namespace);
2993   /* The binding level is not popped, as it might be re-opened later.  */
2994   leave_scope ();
2995 }
2996
2997 /* Push into the scope of the namespace NS, even if it is deeply
2998    nested within another namespace.  */
2999
3000 void
3001 push_nested_namespace (tree ns)
3002 {
3003   if (ns == global_namespace)
3004     push_to_top_level ();
3005   else
3006     {
3007       push_nested_namespace (CP_DECL_CONTEXT (ns));
3008       push_namespace (DECL_NAME (ns));
3009     }
3010 }
3011
3012 /* Pop back from the scope of the namespace NS, which was previously
3013    entered with push_nested_namespace.  */
3014
3015 void
3016 pop_nested_namespace (tree ns)
3017 {
3018   timevar_push (TV_NAME_LOOKUP);
3019   while (ns != global_namespace)
3020     {
3021       pop_namespace ();
3022       ns = CP_DECL_CONTEXT (ns);
3023     }
3024
3025   pop_from_top_level ();
3026   timevar_pop (TV_NAME_LOOKUP);
3027 }
3028
3029 /* Temporarily set the namespace for the current declaration.  */
3030
3031 void
3032 push_decl_namespace (tree decl)
3033 {
3034   if (TREE_CODE (decl) != NAMESPACE_DECL)
3035     decl = decl_namespace_context (decl);
3036   decl_namespace_list = tree_cons (ORIGINAL_NAMESPACE (decl),
3037                                    NULL_TREE, decl_namespace_list);
3038 }
3039
3040 /* [namespace.memdef]/2 */
3041
3042 void
3043 pop_decl_namespace (void)
3044 {
3045   decl_namespace_list = TREE_CHAIN (decl_namespace_list);
3046 }
3047
3048 /* Return the namespace that is the common ancestor
3049    of two given namespaces.  */
3050
3051 static tree
3052 namespace_ancestor (tree ns1, tree ns2)
3053 {
3054   timevar_push (TV_NAME_LOOKUP);
3055   if (is_ancestor (ns1, ns2))
3056     POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ns1);
3057   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
3058                           namespace_ancestor (CP_DECL_CONTEXT (ns1), ns2));
3059 }
3060
3061 /* Process a namespace-alias declaration.  */
3062
3063 void
3064 do_namespace_alias (tree alias, tree namespace)
3065 {
3066   if (namespace == error_mark_node)
3067     return;
3068
3069   gcc_assert (TREE_CODE (namespace) == NAMESPACE_DECL);
3070
3071   namespace = ORIGINAL_NAMESPACE (namespace);
3072
3073   /* Build the alias.  */
3074   alias = build_lang_decl (NAMESPACE_DECL, alias, void_type_node);
3075   DECL_NAMESPACE_ALIAS (alias) = namespace;
3076   DECL_EXTERNAL (alias) = 1;
3077   DECL_CONTEXT (alias) = FROB_CONTEXT (current_scope ());
3078   pushdecl (alias);
3079
3080   /* Emit debug info for namespace alias.  */
3081   (*debug_hooks->global_decl) (alias);
3082 }
3083
3084 /* Like pushdecl, only it places X in the current namespace,
3085    if appropriate.  */
3086
3087 tree
3088 pushdecl_namespace_level (tree x, bool is_friend)
3089 {
3090   struct cp_binding_level *b = current_binding_level;
3091   tree t;
3092
3093   timevar_push (TV_NAME_LOOKUP);
3094   t = pushdecl_with_scope (x, NAMESPACE_LEVEL (current_namespace), is_friend);
3095
3096   /* Now, the type_shadowed stack may screw us.  Munge it so it does
3097      what we want.  */
3098   if (TREE_CODE (t) == TYPE_DECL)
3099     {
3100       tree name = DECL_NAME (t);
3101       tree newval;
3102       tree *ptr = (tree *)0;
3103       for (; !global_scope_p (b); b = b->level_chain)
3104         {
3105           tree shadowed = b->type_shadowed;
3106           for (; shadowed; shadowed = TREE_CHAIN (shadowed))
3107             if (TREE_PURPOSE (shadowed) == name)
3108               {
3109                 ptr = &TREE_VALUE (shadowed);
3110                 /* Can't break out of the loop here because sometimes
3111                    a binding level will have duplicate bindings for
3112                    PT names.  It's gross, but I haven't time to fix it.  */
3113               }
3114         }
3115       newval = TREE_TYPE (t);
3116       if (ptr == (tree *)0)
3117         {
3118           /* @@ This shouldn't be needed.  My test case "zstring.cc" trips
3119              up here if this is changed to an assertion.  --KR  */
3120           SET_IDENTIFIER_TYPE_VALUE (name, t);
3121         }
3122       else
3123         {
3124           *ptr = newval;
3125         }
3126     }
3127   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
3128 }
3129
3130 /* Insert USED into the using list of USER. Set INDIRECT_flag if this
3131    directive is not directly from the source. Also find the common
3132    ancestor and let our users know about the new namespace */
3133 static void
3134 add_using_namespace (tree user, tree used, bool indirect)
3135 {
3136   tree t;
3137   timevar_push (TV_NAME_LOOKUP);
3138   /* Using oneself is a no-op.  */
3139   if (user == used)
3140     {
3141       timevar_pop (TV_NAME_LOOKUP);
3142       return;
3143     }
3144   gcc_assert (TREE_CODE (user) == NAMESPACE_DECL);
3145   gcc_assert (TREE_CODE (used) == NAMESPACE_DECL);
3146   /* Check if we already have this.  */
3147   t = purpose_member (used, DECL_NAMESPACE_USING (user));
3148   if (t != NULL_TREE)
3149     {
3150       if (!indirect)
3151         /* Promote to direct usage.  */
3152         TREE_INDIRECT_USING (t) = 0;
3153       timevar_pop (TV_NAME_LOOKUP);
3154       return;
3155     }
3156
3157   /* Add used to the user's using list.  */
3158   DECL_NAMESPACE_USING (user)
3159     = tree_cons (used, namespace_ancestor (user, used),
3160                  DECL_NAMESPACE_USING (user));
3161
3162   TREE_INDIRECT_USING (DECL_NAMESPACE_USING (user)) = indirect;
3163
3164   /* Add user to the used's users list.  */
3165   DECL_NAMESPACE_USERS (used)
3166     = tree_cons (user, 0, DECL_NAMESPACE_USERS (used));
3167
3168   /* Recursively add all namespaces used.  */
3169   for (t = DECL_NAMESPACE_USING (used); t; t = TREE_CHAIN (t))
3170     /* indirect usage */
3171     add_using_namespace (user, TREE_PURPOSE (t), 1);
3172
3173   /* Tell everyone using us about the new used namespaces.  */
3174   for (t = DECL_NAMESPACE_USERS (user); t; t = TREE_CHAIN (t))
3175     add_using_namespace (TREE_PURPOSE (t), used, 1);
3176   timevar_pop (TV_NAME_LOOKUP);
3177 }
3178
3179 /* Process a using-declaration not appearing in class or local scope.  */
3180
3181 void
3182 do_toplevel_using_decl (tree decl, tree scope, tree name)
3183 {
3184   tree oldval, oldtype, newval, newtype;
3185   tree orig_decl = decl;
3186   cxx_binding *binding;
3187
3188   decl = validate_nonmember_using_decl (decl, scope, name);
3189   if (decl == NULL_TREE)
3190     return;
3191
3192   binding = binding_for_name (NAMESPACE_LEVEL (current_namespace), name);
3193
3194   oldval = binding->value;
3195   oldtype = binding->type;
3196
3197   do_nonmember_using_decl (scope, name, oldval, oldtype, &newval, &newtype);
3198
3199   /* Emit debug info.  */
3200   if (!processing_template_decl)
3201     cp_emit_debug_info_for_using (orig_decl, current_namespace);
3202
3203   /* Copy declarations found.  */
3204   if (newval)
3205     binding->value = newval;
3206   if (newtype)
3207     binding->type = newtype;
3208   return;
3209 }
3210
3211 /* Process a using-directive.  */
3212
3213 void
3214 do_using_directive (tree namespace)
3215 {
3216   tree context = NULL_TREE;
3217
3218   if (namespace == error_mark_node)
3219     return;
3220
3221   gcc_assert (TREE_CODE (namespace) == NAMESPACE_DECL);
3222
3223   if (building_stmt_tree ())
3224     add_stmt (build_stmt (USING_STMT, namespace));
3225   namespace = ORIGINAL_NAMESPACE (namespace);
3226
3227   if (!toplevel_bindings_p ())
3228     {
3229       push_using_directive (namespace);
3230       context = current_scope ();
3231     }
3232   else
3233     {
3234       /* direct usage */
3235       add_using_namespace (current_namespace, namespace, 0);
3236       if (current_namespace != global_namespace)
3237         context = current_namespace;
3238     }
3239
3240   /* Emit debugging info.  */
3241   if (!processing_template_decl)
3242     (*debug_hooks->imported_module_or_decl) (namespace, context);
3243 }
3244
3245 /* Deal with a using-directive seen by the parser.  Currently we only
3246    handle attributes here, since they cannot appear inside a template.  */
3247
3248 void
3249 parse_using_directive (tree namespace, tree attribs)
3250 {
3251   tree a;
3252
3253   do_using_directive (namespace);
3254
3255   for (a = attribs; a; a = TREE_CHAIN (a))
3256     {
3257       tree name = TREE_PURPOSE (a);
3258       if (is_attribute_p ("strong", name))
3259         {
3260           if (!toplevel_bindings_p ())
3261             error ("strong using only meaningful at namespace scope");
3262           else if (namespace != error_mark_node)
3263             DECL_NAMESPACE_ASSOCIATIONS (namespace)
3264               = tree_cons (current_namespace, 0,
3265                            DECL_NAMESPACE_ASSOCIATIONS (namespace));
3266         }
3267       else
3268         warning (OPT_Wattributes, "%qD attribute directive ignored", name);
3269     }
3270 }
3271
3272 /* Like pushdecl, only it places X in the global scope if appropriate.
3273    Calls cp_finish_decl to register the variable, initializing it with
3274    *INIT, if INIT is non-NULL.  */
3275
3276 static tree
3277 pushdecl_top_level_1 (tree x, tree *init, bool is_friend)
3278 {
3279   timevar_push (TV_NAME_LOOKUP);
3280   push_to_top_level ();
3281   x = pushdecl_namespace_level (x, is_friend);
3282   if (init)
3283     cp_finish_decl (x, *init, NULL_TREE, 0);
3284   pop_from_top_level ();
3285   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, x);
3286 }
3287
3288 /* Like pushdecl, only it places X in the global scope if appropriate.  */
3289
3290 tree
3291 pushdecl_top_level (tree x)
3292 {
3293   return pushdecl_top_level_1 (x, NULL, false);
3294 }
3295
3296 /* Like pushdecl_top_level, but adding the IS_FRIEND parameter.  */
3297
3298 tree
3299 pushdecl_top_level_maybe_friend (tree x, bool is_friend)
3300 {
3301   return pushdecl_top_level_1 (x, NULL, is_friend);
3302 }
3303
3304 /* Like pushdecl, only it places X in the global scope if
3305    appropriate.  Calls cp_finish_decl to register the variable,
3306    initializing it with INIT.  */
3307
3308 tree
3309 pushdecl_top_level_and_finish (tree x, tree init)
3310 {
3311   return pushdecl_top_level_1 (x, &init, false);
3312 }
3313
3314 /* Combines two sets of overloaded functions into an OVERLOAD chain, removing
3315    duplicates.  The first list becomes the tail of the result.
3316
3317    The algorithm is O(n^2).  We could get this down to O(n log n) by
3318    doing a sort on the addresses of the functions, if that becomes
3319    necessary.  */
3320
3321 static tree
3322 merge_functions (tree s1, tree s2)
3323 {
3324   for (; s2; s2 = OVL_NEXT (s2))
3325     {
3326       tree fn2 = OVL_CURRENT (s2);
3327       tree fns1;
3328
3329       for (fns1 = s1; fns1; fns1 = OVL_NEXT (fns1))
3330         {
3331           tree fn1 = OVL_CURRENT (fns1);
3332
3333           /* If the function from S2 is already in S1, there is no
3334              need to add it again.  For `extern "C"' functions, we
3335              might have two FUNCTION_DECLs for the same function, in
3336              different namespaces; again, we only need one of them.  */
3337           if (fn1 == fn2
3338               || (DECL_EXTERN_C_P (fn1) && DECL_EXTERN_C_P (fn2)
3339                   && DECL_NAME (fn1) == DECL_NAME (fn2)))
3340             break;
3341         }
3342
3343       /* If we exhausted all of the functions in S1, FN2 is new.  */
3344       if (!fns1)
3345         s1 = build_overload (fn2, s1);
3346     }
3347   return s1;
3348 }
3349
3350 /* This should return an error not all definitions define functions.
3351    It is not an error if we find two functions with exactly the
3352    same signature, only if these are selected in overload resolution.
3353    old is the current set of bindings, new the freshly-found binding.
3354    XXX Do we want to give *all* candidates in case of ambiguity?
3355    XXX In what way should I treat extern declarations?
3356    XXX I don't want to repeat the entire duplicate_decls here */
3357
3358 static void
3359 ambiguous_decl (tree name, struct scope_binding *old, cxx_binding *new,
3360                 int flags)
3361 {
3362   tree val, type;
3363   gcc_assert (old != NULL);
3364   /* Copy the value.  */
3365   val = new->value;
3366   if (val)
3367     switch (TREE_CODE (val))
3368       {
3369       case TEMPLATE_DECL:
3370         /* If we expect types or namespaces, and not templates,
3371            or this is not a template class.  */
3372         if ((LOOKUP_QUALIFIERS_ONLY (flags)
3373              && !DECL_CLASS_TEMPLATE_P (val))
3374             || hidden_name_p (val))
3375           val = NULL_TREE;
3376         break;
3377       case TYPE_DECL:
3378         if (LOOKUP_NAMESPACES_ONLY (flags) || hidden_name_p (val))
3379           val = NULL_TREE;
3380         break;
3381       case NAMESPACE_DECL:
3382         if (LOOKUP_TYPES_ONLY (flags))
3383           val = NULL_TREE;
3384         break;
3385       case FUNCTION_DECL:
3386         /* Ignore built-in functions that are still anticipated.  */
3387         if (LOOKUP_QUALIFIERS_ONLY (flags) || hidden_name_p (val))
3388           val = NULL_TREE;
3389         break;
3390       default:
3391         if (LOOKUP_QUALIFIERS_ONLY (flags))
3392           val = NULL_TREE;
3393       }
3394
3395   if (!old->value)
3396     old->value = val;
3397   else if (val && val != old->value)
3398     {
3399       if (is_overloaded_fn (old->value) && is_overloaded_fn (val))
3400         old->value = merge_functions (old->value, val);
3401       else
3402         {
3403           /* Some declarations are functions, some are not.  */
3404           if (flags & LOOKUP_COMPLAIN)
3405             {
3406               /* If we've already given this error for this lookup,
3407                  old->value is error_mark_node, so let's not
3408                  repeat ourselves.  */
3409               if (old->value != error_mark_node)
3410                 {
3411                   error ("use of %qD is ambiguous", name);
3412                   error ("  first declared as %q+#D here", old->value);
3413                 }
3414               error ("  also declared as %q+#D here", val);
3415             }
3416           old->value = error_mark_node;
3417         }
3418     }
3419   /* ... and copy the type.  */
3420   type = new->type;
3421   if (LOOKUP_NAMESPACES_ONLY (flags))
3422     type = NULL_TREE;
3423   if (!old->type)
3424     old->type = type;
3425   else if (type && old->type != type)
3426     {
3427       if (flags & LOOKUP_COMPLAIN)
3428         {
3429           error ("%qD denotes an ambiguous type",name);
3430           error ("%J  first type here", TYPE_MAIN_DECL (old->type));
3431           error ("%J  other type here", TYPE_MAIN_DECL (type));
3432         }
3433     }
3434 }
3435
3436 /* Return the declarations that are members of the namespace NS.  */
3437
3438 tree
3439 cp_namespace_decls (tree ns)
3440 {
3441   return NAMESPACE_LEVEL (ns)->names;
3442 }
3443
3444 /* Combine prefer_type and namespaces_only into flags.  */
3445
3446 static int
3447 lookup_flags (int prefer_type, int namespaces_only)
3448 {
3449   if (namespaces_only)
3450     return LOOKUP_PREFER_NAMESPACES;
3451   if (prefer_type > 1)
3452     return LOOKUP_PREFER_TYPES;
3453   if (prefer_type > 0)
3454     return LOOKUP_PREFER_BOTH;
3455   return 0;
3456 }
3457
3458 /* Given a lookup that returned VAL, use FLAGS to decide if we want to
3459    ignore it or not.  Subroutine of lookup_name_real and
3460    lookup_type_scope.  */
3461
3462 static bool
3463 qualify_lookup (tree val, int flags)
3464 {
3465   if (val == NULL_TREE)
3466     return false;
3467   if ((flags & LOOKUP_PREFER_NAMESPACES) && TREE_CODE (val) == NAMESPACE_DECL)
3468     return true;
3469   if ((flags & LOOKUP_PREFER_TYPES)
3470       && (TREE_CODE (val) == TYPE_DECL || TREE_CODE (val) == TEMPLATE_DECL))
3471     return true;
3472   if (flags & (LOOKUP_PREFER_NAMESPACES | LOOKUP_PREFER_TYPES))
3473     return false;
3474   return true;
3475 }
3476
3477 /* Given a lookup that returned VAL, decide if we want to ignore it or
3478    not based on DECL_ANTICIPATED.  */
3479
3480 bool
3481 hidden_name_p (tree val)
3482 {
3483   if (DECL_P (val)
3484       && DECL_LANG_SPECIFIC (val)
3485       && DECL_ANTICIPATED (val))
3486     return true;
3487   return false;
3488 }
3489
3490 /* Remove any hidden friend functions from a possibly overloaded set
3491    of functions.  */
3492
3493 tree
3494 remove_hidden_names (tree fns)
3495 {
3496   if (!fns)
3497     return fns;
3498
3499   if (TREE_CODE (fns) == FUNCTION_DECL && hidden_name_p (fns))
3500     fns = NULL_TREE;
3501   else if (TREE_CODE (fns) == OVERLOAD)
3502     {
3503       tree o;
3504
3505       for (o = fns; o; o = OVL_NEXT (o))
3506         if (hidden_name_p (OVL_CURRENT (o)))
3507           break;
3508       if (o)
3509         {
3510           tree n = NULL_TREE;
3511
3512           for (o = fns; o; o = OVL_NEXT (o))
3513             if (!hidden_name_p (OVL_CURRENT (o)))
3514               n = build_overload (OVL_CURRENT (o), n);
3515           fns = n;
3516         }
3517     }
3518
3519   return fns;
3520 }
3521
3522 /* Look up NAME in the NAMESPACE.  */
3523
3524 tree
3525 lookup_namespace_name (tree namespace, tree name)
3526 {
3527   tree val;
3528   tree template_id = NULL_TREE;
3529   struct scope_binding binding = EMPTY_SCOPE_BINDING;
3530
3531   timevar_push (TV_NAME_LOOKUP);
3532   gcc_assert (TREE_CODE (namespace) == NAMESPACE_DECL);
3533
3534   if (TREE_CODE (name) == NAMESPACE_DECL)
3535     /* This happens for A::B<int> when B is a namespace.  */
3536     POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, name);
3537   else if (TREE_CODE (name) == TEMPLATE_DECL)
3538     {
3539       /* This happens for A::B where B is a template, and there are no
3540          template arguments.  */
3541       error ("invalid use of %qD", name);
3542       POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3543     }
3544
3545   namespace = ORIGINAL_NAMESPACE (namespace);
3546
3547   if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
3548     {
3549       template_id = name;
3550       name = TREE_OPERAND (name, 0);
3551       if (TREE_CODE (name) == OVERLOAD)
3552         name = DECL_NAME (OVL_CURRENT (name));
3553       else if (DECL_P (name))
3554         name = DECL_NAME (name);
3555     }
3556
3557   gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
3558
3559   if (!qualified_lookup_using_namespace (name, namespace, &binding, 0))
3560     POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3561
3562   if (binding.value)
3563     {
3564       val = binding.value;
3565
3566       if (template_id)
3567         {
3568           if (DECL_CLASS_TEMPLATE_P (val))
3569             val = lookup_template_class (val,
3570                                          TREE_OPERAND (template_id, 1),
3571                                          /*in_decl=*/NULL_TREE,
3572                                          /*context=*/NULL_TREE,
3573                                          /*entering_scope=*/0,
3574                                          tf_error | tf_warning);
3575           else if (DECL_FUNCTION_TEMPLATE_P (val)
3576                    || TREE_CODE (val) == OVERLOAD)
3577             val = lookup_template_function (val,
3578                                             TREE_OPERAND (template_id, 1));
3579           else
3580             {
3581               error ("%<%D::%D%> is not a template", namespace, name);
3582               POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3583             }
3584         }
3585
3586       /* If we have a single function from a using decl, pull it out.  */
3587       if (TREE_CODE (val) == OVERLOAD && ! really_overloaded_fn (val))
3588         val = OVL_FUNCTION (val);
3589
3590       /* Ignore built-in functions and friends that haven't been declared
3591          yet.  */
3592       if (!val || !hidden_name_p (val))
3593         POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
3594     }
3595
3596   error ("%qD undeclared in namespace %qD", name, namespace);
3597   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3598 }
3599
3600 /* Select the right _DECL from multiple choices.  */
3601
3602 static tree
3603 select_decl (const struct scope_binding *binding, int flags)
3604 {
3605   tree val;
3606   val = binding->value;
3607
3608   timevar_push (TV_NAME_LOOKUP);
3609   if (LOOKUP_NAMESPACES_ONLY (flags))
3610     {
3611       /* We are not interested in types.  */
3612       if (val && TREE_CODE (val) == NAMESPACE_DECL)
3613         POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
3614       POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
3615     }
3616
3617   /* If looking for a type, or if there is no non-type binding, select
3618      the value binding.  */
3619   if (binding->type && (!val || (flags & LOOKUP_PREFER_TYPES)))
3620     val = binding->type;
3621   /* Don't return non-types if we really prefer types.  */
3622   else if (val && LOOKUP_TYPES_ONLY (flags)
3623            && ! DECL_DECLARES_TYPE_P (val))
3624     val = NULL_TREE;
3625
3626   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
3627 }
3628
3629 /* Unscoped lookup of a global: iterate over current namespaces,
3630    considering using-directives.  */
3631
3632 static tree
3633 unqualified_namespace_lookup (tree name, int flags)
3634 {
3635   tree initial = current_decl_namespace ();
3636   tree scope = initial;
3637   tree siter;
3638   struct cp_binding_level *level;
3639   tree val = NULL_TREE;
3640   struct scope_binding binding = EMPTY_SCOPE_BINDING;
3641
3642   timevar_push (TV_NAME_LOOKUP);
3643
3644   for (; !val; scope = CP_DECL_CONTEXT (scope))
3645     {
3646       cxx_binding *b =
3647          cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
3648
3649       if (b)
3650         {
3651           if (b->value && hidden_name_p (b->value))
3652             /* Ignore anticipated built-in functions and friends.  */
3653             ;
3654           else
3655             binding.value = b->value;
3656           binding.type = b->type;
3657         }
3658
3659       /* Add all _DECLs seen through local using-directives.  */
3660       for (level = current_binding_level;
3661            level->kind != sk_namespace;
3662            level = level->level_chain)
3663         if (!lookup_using_namespace (name, &binding, level->using_directives,
3664                                      scope, flags))
3665           /* Give up because of error.  */
3666           POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3667
3668       /* Add all _DECLs seen through global using-directives.  */
3669       /* XXX local and global using lists should work equally.  */
3670       siter = initial;
3671       while (1)
3672         {
3673           if (!lookup_using_namespace (name, &binding,
3674                                        DECL_NAMESPACE_USING (siter),
3675                                        scope, flags))
3676             /* Give up because of error.  */
3677             POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
3678           if (siter == scope) break;
3679           siter = CP_DECL_CONTEXT (siter);
3680         }
3681
3682       val = select_decl (&binding, flags);
3683       if (scope == global_namespace)
3684         break;
3685     }
3686   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
3687 }
3688
3689 /* Look up NAME (an IDENTIFIER_NODE) in SCOPE (either a NAMESPACE_DECL
3690    or a class TYPE).  If IS_TYPE_P is TRUE, then ignore non-type
3691    bindings.
3692
3693    Returns a DECL (or OVERLOAD, or BASELINK) representing the
3694    declaration found.  If no suitable declaration can be found,
3695    ERROR_MARK_NODE is returned.  If COMPLAIN is true and SCOPE is
3696    neither a class-type nor a namespace a diagnostic is issued.  */
3697
3698 tree
3699 lookup_qualified_name (tree scope, tree name, bool is_type_p, bool complain)
3700 {
3701   int flags = 0;
3702
3703   if (TREE_CODE (scope) == NAMESPACE_DECL)
3704     {
3705       struct scope_binding binding = EMPTY_SCOPE_BINDING;
3706
3707       flags |= LOOKUP_COMPLAIN;
3708       if (is_type_p)
3709         flags |= LOOKUP_PREFER_TYPES;
3710       if (qualified_lookup_using_namespace (name, scope, &binding, flags))
3711         return select_decl (&binding, flags);
3712     }
3713   else if (is_aggr_type (scope, complain))
3714     {
3715       tree t;
3716       t = lookup_member (scope, name, 2, is_type_p);
3717       if (t)
3718         return t;
3719     }
3720
3721   return error_mark_node;
3722 }
3723
3724 /* Subroutine of unqualified_namespace_lookup:
3725    Add the bindings of NAME in used namespaces to VAL.
3726    We are currently looking for names in namespace SCOPE, so we
3727    look through USINGS for using-directives of namespaces
3728    which have SCOPE as a common ancestor with the current scope.
3729    Returns false on errors.  */
3730
3731 static bool
3732 lookup_using_namespace (tree name, struct scope_binding *val,
3733                         tree usings, tree scope, int flags)
3734 {
3735   tree iter;
3736   timevar_push (TV_NAME_LOOKUP);
3737   /* Iterate over all used namespaces in current, searching for using
3738      directives of scope.  */
3739   for (iter = usings; iter; iter = TREE_CHAIN (iter))
3740     if (TREE_VALUE (iter) == scope)
3741       {
3742         tree used = ORIGINAL_NAMESPACE (TREE_PURPOSE (iter));
3743         cxx_binding *val1 =
3744           cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (used), name);
3745         /* Resolve ambiguities.  */
3746         if (val1)
3747           ambiguous_decl (name, val, val1, flags);
3748       }
3749   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val->value != error_mark_node);
3750 }
3751
3752 /* [namespace.qual]
3753    Accepts the NAME to lookup and its qualifying SCOPE.
3754    Returns the name/type pair found into the cxx_binding *RESULT,
3755    or false on error.  */
3756
3757 static bool
3758 qualified_lookup_using_namespace (tree name, tree scope,
3759                                   struct scope_binding *result, int flags)
3760 {
3761   /* Maintain a list of namespaces visited...  */
3762   tree seen = NULL_TREE;
3763   /* ... and a list of namespace yet to see.  */
3764   tree todo = NULL_TREE;
3765   tree todo_maybe = NULL_TREE;
3766   tree usings;
3767   timevar_push (TV_NAME_LOOKUP);
3768   /* Look through namespace aliases.  */
3769   scope = ORIGINAL_NAMESPACE (scope);
3770   while (scope && result->value != error_mark_node)
3771     {
3772       cxx_binding *binding =
3773         cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
3774       seen = tree_cons (scope, NULL_TREE, seen);
3775       if (binding)
3776         ambiguous_decl (name, result, binding, flags);
3777
3778       /* Consider strong using directives always, and non-strong ones
3779          if we haven't found a binding yet.  ??? Shouldn't we consider
3780          non-strong ones if the initial RESULT is non-NULL, but the
3781          binding in the given namespace is?  */
3782       for (usings = DECL_NAMESPACE_USING (scope); usings;
3783            usings = TREE_CHAIN (usings))
3784         /* If this was a real directive, and we have not seen it.  */
3785         if (!TREE_INDIRECT_USING (usings))
3786           {
3787             /* Try to avoid queuing the same namespace more than once,
3788                the exception being when a namespace was already
3789                enqueued for todo_maybe and then a strong using is
3790                found for it.  We could try to remove it from
3791                todo_maybe, but it's probably not worth the effort.  */
3792             if (is_associated_namespace (scope, TREE_PURPOSE (usings))
3793                 && !purpose_member (TREE_PURPOSE (usings), seen)
3794                 && !purpose_member (TREE_PURPOSE (usings), todo))
3795               todo = tree_cons (TREE_PURPOSE (usings), NULL_TREE, todo);
3796             else if ((!result->value && !result->type)
3797                      && !purpose_member (TREE_PURPOSE (usings), seen)
3798                      && !purpose_member (TREE_PURPOSE (usings), todo)
3799                      && !purpose_member (TREE_PURPOSE (usings), todo_maybe))
3800               todo_maybe = tree_cons (TREE_PURPOSE (usings), NULL_TREE,
3801                                       todo_maybe);
3802           }
3803       if (todo)
3804         {
3805           scope = TREE_PURPOSE (todo);
3806           todo = TREE_CHAIN (todo);
3807         }
3808       else if (todo_maybe
3809                && (!result->value && !result->type))
3810         {
3811           scope = TREE_PURPOSE (todo_maybe);
3812           todo = TREE_CHAIN (todo_maybe);
3813           todo_maybe = NULL_TREE;
3814         }
3815       else
3816         scope = NULL_TREE; /* If there never was a todo list.  */
3817     }
3818   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, result->value != error_mark_node);
3819 }
3820
3821 /* Return the innermost non-namespace binding for NAME from a scope
3822    containing BINDING, or, if BINDING is NULL, the current scope.  If
3823    CLASS_P is false, then class bindings are ignored.  */
3824
3825 cxx_binding *
3826 outer_binding (tree name,
3827                cxx_binding *binding,
3828                bool class_p)
3829 {
3830   cxx_binding *outer;
3831   cxx_scope *scope;
3832   cxx_scope *outer_scope;
3833
3834   if (binding)
3835     {
3836       scope = binding->scope->level_chain;
3837       outer = binding->previous;
3838     }
3839   else
3840     {
3841       scope = current_binding_level;
3842       outer = IDENTIFIER_BINDING (name);
3843     }
3844   outer_scope = outer ? outer->scope : NULL;
3845
3846   /* Because we create class bindings lazily, we might be missing a
3847      class binding for NAME.  If there are any class binding levels
3848      between the LAST_BINDING_LEVEL and the scope in which OUTER was
3849      declared, we must lookup NAME in those class scopes.  */
3850   if (class_p)
3851     while (scope && scope != outer_scope && scope->kind != sk_namespace)
3852       {
3853         if (scope->kind == sk_class)
3854           {
3855             cxx_binding *class_binding;
3856
3857             class_binding = get_class_binding (name, scope);
3858             if (class_binding)
3859               {
3860                 /* Thread this new class-scope binding onto the
3861                    IDENTIFIER_BINDING list so that future lookups
3862                    find it quickly.  */
3863                 class_binding->previous = outer;
3864                 if (binding)
3865                   binding->previous = class_binding;
3866                 else
3867                   IDENTIFIER_BINDING (name) = class_binding;
3868                 return class_binding;
3869               }
3870           }
3871         scope = scope->level_chain;
3872       }
3873
3874   return outer;
3875 }
3876
3877 /* Return the innermost block-scope or class-scope value binding for
3878    NAME, or NULL_TREE if there is no such binding.  */
3879
3880 tree
3881 innermost_non_namespace_value (tree name)
3882 {
3883   cxx_binding *binding;
3884   binding = outer_binding (name, /*binding=*/NULL, /*class_p=*/true);
3885   return binding ? binding->value : NULL_TREE;
3886 }
3887
3888 /* Look up NAME in the current binding level and its superiors in the
3889    namespace of variables, functions and typedefs.  Return a ..._DECL
3890    node of some kind representing its definition if there is only one
3891    such declaration, or return a TREE_LIST with all the overloaded
3892    definitions if there are many, or return 0 if it is undefined.
3893    Hidden name, either friend declaration or built-in function, are
3894    not ignored.
3895
3896    If PREFER_TYPE is > 0, we prefer TYPE_DECLs or namespaces.
3897    If PREFER_TYPE is > 1, we reject non-type decls (e.g. namespaces).
3898    Otherwise we prefer non-TYPE_DECLs.
3899
3900    If NONCLASS is nonzero, bindings in class scopes are ignored.  If
3901    BLOCK_P is false, bindings in block scopes are ignored.  */
3902
3903 tree
3904 lookup_name_real (tree name, int prefer_type, int nonclass, bool block_p,
3905                   int namespaces_only, int flags)
3906 {
3907   cxx_binding *iter;
3908   tree val = NULL_TREE;
3909
3910   timevar_push (TV_NAME_LOOKUP);
3911   /* Conversion operators are handled specially because ordinary
3912      unqualified name lookup will not find template conversion
3913      operators.  */
3914   if (IDENTIFIER_TYPENAME_P (name))
3915     {
3916       struct cp_binding_level *level;
3917
3918       for (level = current_binding_level;
3919            level && level->kind != sk_namespace;
3920            level = level->level_chain)
3921         {
3922           tree class_type;
3923           tree operators;
3924
3925           /* A conversion operator can only be declared in a class
3926              scope.  */
3927           if (level->kind != sk_class)
3928             continue;
3929
3930           /* Lookup the conversion operator in the class.  */
3931           class_type = level->this_entity;
3932           operators = lookup_fnfields (class_type, name, /*protect=*/0);
3933           if (operators)
3934             POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, operators);
3935         }
3936
3937       POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
3938     }
3939
3940   flags |= lookup_flags (prefer_type, namespaces_only);
3941
3942   /* First, look in non-namespace scopes.  */
3943
3944   if (current_class_type == NULL_TREE)
3945     nonclass = 1;
3946
3947   if (block_p || !nonclass)
3948     for (iter = outer_binding (name, NULL, !nonclass);
3949          iter;
3950          iter = outer_binding (name, iter, !nonclass))
3951       {
3952         tree binding;
3953
3954         /* Skip entities we don't want.  */
3955         if (LOCAL_BINDING_P (iter) ? !block_p : nonclass)
3956           continue;
3957
3958         /* If this is the kind of thing we're looking for, we're done.  */
3959         if (qualify_lookup (iter->value, flags)
3960             && !hidden_name_p (iter->value))
3961           binding = iter->value;
3962         else if ((flags & LOOKUP_PREFER_TYPES)
3963                  && qualify_lookup (iter->type, flags)
3964                  && !hidden_name_p (iter->type))
3965           binding = iter->type;
3966         else
3967           binding = NULL_TREE;
3968
3969         if (binding)
3970           {
3971             val = binding;
3972             break;
3973           }
3974       }
3975
3976   /* Now lookup in namespace scopes.  */
3977   if (!val)
3978     val = unqualified_namespace_lookup (name, flags);
3979
3980   if (val)
3981     {
3982       /* If we have a single function from a using decl, pull it out.  */
3983       if (TREE_CODE (val) == OVERLOAD && ! really_overloaded_fn (val))
3984         val = OVL_FUNCTION (val);
3985     }
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, int prefer_type)
4008 {
4009   return lookup_name_real (name, prefer_type, 0, /*block_p=*/true,
4010                            0, LOOKUP_COMPLAIN);
4011 }
4012
4013 /* Look up NAME for type used in elaborated name specifier in
4014    the scopes given by SCOPE.  SCOPE can be either TS_CURRENT or
4015    TS_WITHIN_ENCLOSING_NON_CLASS.  Although not implied by the
4016    name, more scopes are checked if cleanup or template parameter
4017    scope is encountered.
4018
4019    Unlike lookup_name_real, we make sure that NAME is actually
4020    declared in the desired scope, not from inheritance, nor using
4021    directive.  For using declaration, there is DR138 still waiting
4022    to be resolved.  Hidden name coming from an earlier friend
4023    declaration is also returned.
4024
4025    A TYPE_DECL best matching the NAME is returned.  Catching error
4026    and issuing diagnostics are caller's responsibility.  */
4027
4028 tree
4029 lookup_type_scope (tree name, tag_scope scope)
4030 {
4031   cxx_binding *iter = NULL;
4032   tree val = NULL_TREE;
4033
4034   timevar_push (TV_NAME_LOOKUP);
4035
4036   /* Look in non-namespace scope first.  */
4037   if (current_binding_level->kind != sk_namespace)
4038     iter = outer_binding (name, NULL, /*class_p=*/ true);
4039   for (; iter; iter = outer_binding (name, iter, /*class_p=*/ true))
4040     {
4041       /* Check if this is the kind of thing we're looking for.
4042          If SCOPE is TS_CURRENT, also make sure it doesn't come from
4043          base class.  For ITER->VALUE, we can simply use
4044          INHERITED_VALUE_BINDING_P.  For ITER->TYPE, we have to use
4045          our own check.
4046
4047          We check ITER->TYPE before ITER->VALUE in order to handle
4048            typedef struct C {} C;
4049          correctly.  */
4050
4051       if (qualify_lookup (iter->type, LOOKUP_PREFER_TYPES)
4052           && (scope != ts_current
4053               || LOCAL_BINDING_P (iter)
4054               || DECL_CONTEXT (iter->type) == iter->scope->this_entity))
4055         val = iter->type;
4056       else if ((scope != ts_current
4057                 || !INHERITED_VALUE_BINDING_P (iter))
4058                && qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
4059         val = iter->value;
4060
4061       if (val)
4062         break;
4063     }
4064
4065   /* Look in namespace scope.  */
4066   if (!val)
4067     {
4068       iter = cxx_scope_find_binding_for_name
4069                (NAMESPACE_LEVEL (current_decl_namespace ()), name);
4070
4071       if (iter)
4072         {
4073           /* If this is the kind of thing we're looking for, we're done.  */
4074           if (qualify_lookup (iter->type, LOOKUP_PREFER_TYPES))
4075             val = iter->type;
4076           else if (qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
4077             val = iter->value;
4078         }
4079
4080     }
4081
4082   /* Type found, check if it is in the allowed scopes, ignoring cleanup
4083      and template parameter scopes.  */
4084   if (val)
4085     {
4086       struct cp_binding_level *b = current_binding_level;
4087       while (b)
4088         {
4089           if (iter->scope == b)
4090             POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val);
4091
4092           if (b->kind == sk_cleanup || b->kind == sk_template_parms)
4093             b = b->level_chain;
4094           else if (b->kind == sk_class
4095                    && scope == ts_within_enclosing_non_class)
4096             b = b->level_chain;
4097           else
4098             break;
4099         }
4100     }
4101
4102   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
4103 }
4104
4105 /* Similar to `lookup_name' but look only in the innermost non-class
4106    binding level.  */
4107
4108 static tree
4109 lookup_name_innermost_nonclass_level (tree name)
4110 {
4111   struct cp_binding_level *b;
4112   tree t = NULL_TREE;
4113
4114   timevar_push (TV_NAME_LOOKUP);
4115   b = innermost_nonclass_level ();
4116
4117   if (b->kind == sk_namespace)
4118     {
4119       t = IDENTIFIER_NAMESPACE_VALUE (name);
4120
4121       /* extern "C" function() */
4122       if (t != NULL_TREE && TREE_CODE (t) == TREE_LIST)
4123         t = TREE_VALUE (t);
4124     }
4125   else if (IDENTIFIER_BINDING (name)
4126            && LOCAL_BINDING_P (IDENTIFIER_BINDING (name)))
4127     {
4128       cxx_binding *binding;
4129       binding = IDENTIFIER_BINDING (name);
4130       while (1)
4131         {
4132           if (binding->scope == b
4133               && !(TREE_CODE (binding->value) == VAR_DECL
4134                    && DECL_DEAD_FOR_LOCAL (binding->value)))
4135             POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, binding->value);
4136
4137           if (b->kind == sk_cleanup)
4138             b = b->level_chain;
4139           else
4140             break;
4141         }
4142     }
4143
4144   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
4145 }
4146
4147 /* Like lookup_name_innermost_nonclass_level, but for types.  */
4148
4149 static tree
4150 lookup_type_current_level (tree name)
4151 {
4152   tree t = NULL_TREE;
4153
4154   timevar_push (TV_NAME_LOOKUP);
4155   gcc_assert (current_binding_level->kind != sk_namespace);
4156
4157   if (REAL_IDENTIFIER_TYPE_VALUE (name) != NULL_TREE
4158       && REAL_IDENTIFIER_TYPE_VALUE (name) != global_type_node)
4159     {
4160       struct cp_binding_level *b = current_binding_level;
4161       while (1)
4162         {
4163           if (purpose_member (name, b->type_shadowed))
4164             POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP,
4165                                     REAL_IDENTIFIER_TYPE_VALUE (name));
4166           if (b->kind == sk_cleanup)
4167             b = b->level_chain;
4168           else
4169             break;
4170         }
4171     }
4172
4173   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, t);
4174 }
4175
4176 /* [basic.lookup.koenig] */
4177 /* A nonzero return value in the functions below indicates an error.  */
4178
4179 struct arg_lookup
4180 {
4181   tree name;
4182   tree args;
4183   tree namespaces;
4184   tree classes;
4185   tree functions;
4186 };
4187
4188 static bool arg_assoc (struct arg_lookup*, tree);
4189 static bool arg_assoc_args (struct arg_lookup*, tree);
4190 static bool arg_assoc_type (struct arg_lookup*, tree);
4191 static bool add_function (struct arg_lookup *, tree);
4192 static bool arg_assoc_namespace (struct arg_lookup *, tree);
4193 static bool arg_assoc_class (struct arg_lookup *, tree);
4194 static bool arg_assoc_template_arg (struct arg_lookup*, tree);
4195
4196 /* Add a function to the lookup structure.
4197    Returns true on error.  */
4198
4199 static bool
4200 add_function (struct arg_lookup *k, tree fn)
4201 {
4202   /* We used to check here to see if the function was already in the list,
4203      but that's O(n^2), which is just too expensive for function lookup.
4204      Now we deal with the occasional duplicate in joust.  In doing this, we
4205      assume that the number of duplicates will be small compared to the
4206      total number of functions being compared, which should usually be the
4207      case.  */
4208
4209   /* We must find only functions, or exactly one non-function.  */
4210   if (!k->functions)
4211     k->functions = fn;
4212   else if (fn == k->functions)
4213     ;
4214   else if (is_overloaded_fn (k->functions) && is_overloaded_fn (fn))
4215     k->functions = build_overload (fn, k->functions);
4216   else
4217     {
4218       tree f1 = OVL_CURRENT (k->functions);
4219       tree f2 = fn;
4220       if (is_overloaded_fn (f1))
4221         {
4222           fn = f1; f1 = f2; f2 = fn;
4223         }
4224       error ("%q+D is not a function,", f1);
4225       error ("  conflict with %q+D", f2);
4226       error ("  in call to %qD", k->name);
4227       return true;
4228     }
4229
4230   return false;
4231 }
4232
4233 /* Returns true iff CURRENT has declared itself to be an associated
4234    namespace of SCOPE via a strong using-directive (or transitive chain
4235    thereof).  Both are namespaces.  */
4236
4237 bool
4238 is_associated_namespace (tree current, tree scope)
4239 {
4240   tree seen = NULL_TREE;
4241   tree todo = NULL_TREE;
4242   tree t;
4243   while (1)
4244     {
4245       if (scope == current)
4246         return true;
4247       seen = tree_cons (scope, NULL_TREE, seen);
4248       for (t = DECL_NAMESPACE_ASSOCIATIONS (scope); t; t = TREE_CHAIN (t))
4249         if (!purpose_member (TREE_PURPOSE (t), seen))
4250           todo = tree_cons (TREE_PURPOSE (t), NULL_TREE, todo);
4251       if (todo)
4252         {
4253           scope = TREE_PURPOSE (todo);
4254           todo = TREE_CHAIN (todo);
4255         }
4256       else
4257         return false;
4258     }
4259 }
4260
4261 /* Return whether FN is a friend of an associated class of ARG.  */
4262
4263 static bool
4264 friend_of_associated_class_p (tree arg, tree fn)
4265 {
4266   tree type;
4267
4268   if (TYPE_P (arg))
4269     type = arg;
4270   else if (type_unknown_p (arg))
4271     return false;
4272   else
4273     type = TREE_TYPE (arg);
4274
4275   /* If TYPE is a class, the class itself and all base classes are
4276      associated classes.  */
4277   if (CLASS_TYPE_P (type))
4278     {
4279       if (is_friend (type, fn))
4280         return true;
4281
4282       if (TYPE_BINFO (type))
4283         {
4284           tree binfo, base_binfo;
4285           int i;
4286
4287           for (binfo = TYPE_BINFO (type), i = 0;
4288                BINFO_BASE_ITERATE (binfo, i, base_binfo);
4289                i++)
4290             if (is_friend (BINFO_TYPE (base_binfo), fn))
4291               return true;
4292         }
4293     }
4294
4295   /* If TYPE is a class member, the class of which it is a member is
4296      an associated class.  */
4297   if ((CLASS_TYPE_P (type)
4298        || TREE_CODE (type) == UNION_TYPE
4299        || TREE_CODE (type) == ENUMERAL_TYPE)
4300       && TYPE_CONTEXT (type)
4301       && CLASS_TYPE_P (TYPE_CONTEXT (type))
4302       && is_friend (TYPE_CONTEXT (type), fn))
4303     return true;
4304
4305   return false;
4306 }
4307
4308 /* Add functions of a namespace to the lookup structure.
4309    Returns true on error.  */
4310
4311 static bool
4312 arg_assoc_namespace (struct arg_lookup *k, tree scope)
4313 {
4314   tree value;
4315
4316   if (purpose_member (scope, k->namespaces))
4317     return 0;
4318   k->namespaces = tree_cons (scope, NULL_TREE, k->namespaces);
4319
4320   /* Check out our super-users.  */
4321   for (value = DECL_NAMESPACE_ASSOCIATIONS (scope); value;
4322        value = TREE_CHAIN (value))
4323     if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
4324       return true;
4325
4326   value = namespace_binding (k->name, scope);
4327   if (!value)
4328     return false;
4329
4330   for (; value; value = OVL_NEXT (value))
4331     {
4332       /* We don't want to find arbitrary hidden functions via argument
4333          dependent lookup.  We only want to find friends of associated
4334          classes.  */
4335       if (hidden_name_p (OVL_CURRENT (value)))
4336         {
4337           tree args;
4338
4339           for (args = k->args; args; args = TREE_CHAIN (args))
4340             if (friend_of_associated_class_p (TREE_VALUE (args),
4341                                               OVL_CURRENT (value)))
4342               break;
4343           if (!args)
4344             continue;
4345         }
4346
4347       if (add_function (k, OVL_CURRENT (value)))
4348         return true;
4349     }
4350
4351   return false;
4352 }
4353
4354 /* Adds everything associated with a template argument to the lookup
4355    structure.  Returns true on error.  */
4356
4357 static bool
4358 arg_assoc_template_arg (struct arg_lookup *k, tree arg)
4359 {
4360   /* [basic.lookup.koenig]
4361
4362      If T is a template-id, its associated namespaces and classes are
4363      ... the namespaces and classes associated with the types of the
4364      template arguments provided for template type parameters
4365      (excluding template template parameters); the namespaces in which
4366      any template template arguments are defined; and the classes in
4367      which any member templates used as template template arguments
4368      are defined.  [Note: non-type template arguments do not
4369      contribute to the set of associated namespaces.  ]  */
4370
4371   /* Consider first template template arguments.  */
4372   if (TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM
4373       || TREE_CODE (arg) == UNBOUND_CLASS_TEMPLATE)
4374     return false;
4375   else if (TREE_CODE (arg) == TEMPLATE_DECL)
4376     {
4377       tree ctx = CP_DECL_CONTEXT (arg);
4378
4379       /* It's not a member template.  */
4380       if (TREE_CODE (ctx) == NAMESPACE_DECL)
4381         return arg_assoc_namespace (k, ctx);
4382       /* Otherwise, it must be member template.  */
4383       else
4384         return arg_assoc_class (k, ctx);
4385     }
4386   /* It's not a template template argument, but it is a type template
4387      argument.  */
4388   else if (TYPE_P (arg))
4389     return arg_assoc_type (k, arg);
4390   /* It's a non-type template argument.  */
4391   else
4392     return false;
4393 }
4394
4395 /* Adds everything associated with class to the lookup structure.
4396    Returns true on error.  */
4397
4398 static bool
4399 arg_assoc_class (struct arg_lookup *k, tree type)
4400 {
4401   tree list, friends, context;
4402   int i;
4403
4404   /* Backend build structures, such as __builtin_va_list, aren't
4405      affected by all this.  */
4406   if (!CLASS_TYPE_P (type))
4407     return false;
4408
4409   if (purpose_member (type, k->classes))
4410     return false;
4411   k->classes = tree_cons (type, NULL_TREE, k->classes);
4412
4413   context = decl_namespace_context (type);
4414   if (arg_assoc_namespace (k, context))
4415     return true;
4416
4417   if (TYPE_BINFO (type))
4418     {
4419       /* Process baseclasses.  */
4420       tree binfo, base_binfo;
4421
4422       for (binfo = TYPE_BINFO (type), i = 0;
4423            BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
4424         if (arg_assoc_class (k, BINFO_TYPE (base_binfo)))
4425           return true;
4426     }
4427
4428   /* Process friends.  */
4429   for (list = DECL_FRIENDLIST (TYPE_MAIN_DECL (type)); list;
4430        list = TREE_CHAIN (list))
4431     if (k->name == FRIEND_NAME (list))
4432       for (friends = FRIEND_DECLS (list); friends;
4433            friends = TREE_CHAIN (friends))
4434         {
4435           tree fn = TREE_VALUE (friends);
4436
4437           /* Only interested in global functions with potentially hidden
4438              (i.e. unqualified) declarations.  */
4439           if (CP_DECL_CONTEXT (fn) != context)
4440             continue;
4441           /* Template specializations are never found by name lookup.
4442              (Templates themselves can be found, but not template
4443              specializations.)  */
4444           if (TREE_CODE (fn) == FUNCTION_DECL && DECL_USE_TEMPLATE (fn))
4445             continue;
4446           if (add_function (k, fn))
4447             return true;
4448         }
4449
4450   /* Process template arguments.  */
4451   if (CLASSTYPE_TEMPLATE_INFO (type)
4452       && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (type)))
4453     {
4454       list = INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (type));
4455       for (i = 0; i < TREE_VEC_LENGTH (list); ++i)
4456         arg_assoc_template_arg (k, TREE_VEC_ELT (list, i));
4457     }
4458
4459   return false;
4460 }
4461
4462 /* Adds everything associated with a given type.
4463    Returns 1 on error.  */
4464
4465 static bool
4466 arg_assoc_type (struct arg_lookup *k, tree type)
4467 {
4468   /* As we do not get the type of non-type dependent expressions
4469      right, we can end up with such things without a type.  */
4470   if (!type)
4471     return false;
4472
4473   if (TYPE_PTRMEM_P (type))
4474     {
4475       /* Pointer to member: associate class type and value type.  */
4476       if (arg_assoc_type (k, TYPE_PTRMEM_CLASS_TYPE (type)))
4477         return true;
4478       return arg_assoc_type (k, TYPE_PTRMEM_POINTED_TO_TYPE (type));
4479     }
4480   else switch (TREE_CODE (type))
4481     {
4482     case ERROR_MARK:
4483       return false;
4484     case VOID_TYPE:
4485     case INTEGER_TYPE:
4486     case REAL_TYPE:
4487     case COMPLEX_TYPE:
4488     case VECTOR_TYPE:
4489     case CHAR_TYPE:
4490     case BOOLEAN_TYPE:
4491       return false;
4492     case RECORD_TYPE:
4493       if (TYPE_PTRMEMFUNC_P (type))
4494         return arg_assoc_type (k, TYPE_PTRMEMFUNC_FN_TYPE (type));
4495       return arg_assoc_class (k, type);
4496     case POINTER_TYPE:
4497     case REFERENCE_TYPE:
4498     case ARRAY_TYPE:
4499       return arg_assoc_type (k, TREE_TYPE (type));
4500     case UNION_TYPE:
4501     case ENUMERAL_TYPE:
4502       return arg_assoc_namespace (k, decl_namespace_context (type));
4503     case METHOD_TYPE:
4504       /* The basetype is referenced in the first arg type, so just
4505          fall through.  */
4506     case FUNCTION_TYPE:
4507       /* Associate the parameter types.  */
4508       if (arg_assoc_args (k, TYPE_ARG_TYPES (type)))
4509         return true;
4510       /* Associate the return type.  */
4511       return arg_assoc_type (k, TREE_TYPE (type));
4512     case TEMPLATE_TYPE_PARM:
4513     case BOUND_TEMPLATE_TEMPLATE_PARM:
4514       return false;
4515     case TYPENAME_TYPE:
4516       return false;
4517     case LANG_TYPE:
4518       gcc_assert (type == unknown_type_node);
4519       return false;
4520     default:
4521       gcc_unreachable ();
4522     }
4523   return false;
4524 }
4525
4526 /* Adds everything associated with arguments.  Returns true on error.  */
4527
4528 static bool
4529 arg_assoc_args (struct arg_lookup *k, tree args)
4530 {
4531   for (; args; args = TREE_CHAIN (args))
4532     if (arg_assoc (k, TREE_VALUE (args)))
4533       return true;
4534   return false;
4535 }
4536
4537 /* Adds everything associated with a given tree_node.  Returns 1 on error.  */
4538
4539 static bool
4540 arg_assoc (struct arg_lookup *k, tree n)
4541 {
4542   if (n == error_mark_node)
4543     return false;
4544
4545   if (TYPE_P (n))
4546     return arg_assoc_type (k, n);
4547
4548   if (! type_unknown_p (n))
4549     return arg_assoc_type (k, TREE_TYPE (n));
4550
4551   if (TREE_CODE (n) == ADDR_EXPR)
4552     n = TREE_OPERAND (n, 0);
4553   if (TREE_CODE (n) == COMPONENT_REF)
4554     n = TREE_OPERAND (n, 1);
4555   if (TREE_CODE (n) == OFFSET_REF)
4556     n = TREE_OPERAND (n, 1);
4557   while (TREE_CODE (n) == TREE_LIST)
4558     n = TREE_VALUE (n);
4559   if (TREE_CODE (n) == BASELINK)
4560     n = BASELINK_FUNCTIONS (n);
4561
4562   if (TREE_CODE (n) == FUNCTION_DECL)
4563     return arg_assoc_type (k, TREE_TYPE (n));
4564   if (TREE_CODE (n) == TEMPLATE_ID_EXPR)
4565     {
4566       /* [basic.lookup.koenig]
4567
4568          If T is a template-id, its associated namespaces and classes
4569          are the namespace in which the template is defined; for
4570          member templates, the member template's class...  */
4571       tree template = TREE_OPERAND (n, 0);
4572       tree args = TREE_OPERAND (n, 1);
4573       tree ctx;
4574       int ix;
4575
4576       if (TREE_CODE (template) == COMPONENT_REF)
4577         template = TREE_OPERAND (template, 1);
4578
4579       /* First, the template.  There may actually be more than one if
4580          this is an overloaded function template.  But, in that case,
4581          we only need the first; all the functions will be in the same
4582          namespace.  */
4583       template = OVL_CURRENT (template);
4584
4585       ctx = CP_DECL_CONTEXT (template);
4586
4587       if (TREE_CODE (ctx) == NAMESPACE_DECL)
4588         {
4589           if (arg_assoc_namespace (k, ctx) == 1)
4590             return true;
4591         }
4592       /* It must be a member template.  */
4593       else if (arg_assoc_class (k, ctx) == 1)
4594         return true;
4595
4596       /* Now the arguments.  */
4597       for (ix = TREE_VEC_LENGTH (args); ix--;)
4598         if (arg_assoc_template_arg (k, TREE_VEC_ELT (args, ix)) == 1)
4599           return true;
4600     }
4601   else if (TREE_CODE (n) == OVERLOAD)
4602     {
4603       for (; n; n = OVL_CHAIN (n))
4604         if (arg_assoc_type (k, TREE_TYPE (OVL_FUNCTION (n))))
4605           return true;
4606     }
4607
4608   return false;
4609 }
4610
4611 /* Performs Koenig lookup depending on arguments, where fns
4612    are the functions found in normal lookup.  */
4613
4614 tree
4615 lookup_arg_dependent (tree name, tree fns, tree args)
4616 {
4617   struct arg_lookup k;
4618
4619   timevar_push (TV_NAME_LOOKUP);
4620
4621   /* Remove any hidden friend functions from the list of functions
4622      found so far.  They will be added back by arg_assoc_class as
4623      appropriate.  */
4624   fns = remove_hidden_names (fns);
4625
4626   k.name = name;
4627   k.args = args;
4628   k.functions = fns;
4629   k.classes = NULL_TREE;
4630
4631   /* We previously performed an optimization here by setting
4632      NAMESPACES to the current namespace when it was safe. However, DR
4633      164 says that namespaces that were already searched in the first
4634      stage of template processing are searched again (potentially
4635      picking up later definitions) in the second stage. */
4636   k.namespaces = NULL_TREE;
4637
4638   arg_assoc_args (&k, args);
4639   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, k.functions);
4640 }
4641
4642 /* Add namespace to using_directives. Return NULL_TREE if nothing was
4643    changed (i.e. there was already a directive), or the fresh
4644    TREE_LIST otherwise.  */
4645
4646 static tree
4647 push_using_directive (tree used)
4648 {
4649   tree ud = current_binding_level->using_directives;
4650   tree iter, ancestor;
4651
4652   timevar_push (TV_NAME_LOOKUP);
4653   /* Check if we already have this.  */
4654   if (purpose_member (used, ud) != NULL_TREE)
4655     POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE);
4656
4657   ancestor = namespace_ancestor (current_decl_namespace (), used);
4658   ud = current_binding_level->using_directives;
4659   ud = tree_cons (used, ancestor, ud);
4660   current_binding_level->using_directives = ud;
4661
4662   /* Recursively add all namespaces used.  */
4663   for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter))
4664     push_using_directive (TREE_PURPOSE (iter));
4665
4666   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, ud);
4667 }
4668
4669 /* The type TYPE is being declared.  If it is a class template, or a
4670    specialization of a class template, do any processing required and
4671    perform error-checking.  If IS_FRIEND is nonzero, this TYPE is
4672    being declared a friend.  B is the binding level at which this TYPE
4673    should be bound.
4674
4675    Returns the TYPE_DECL for TYPE, which may have been altered by this
4676    processing.  */
4677
4678 static tree
4679 maybe_process_template_type_declaration (tree type, int is_friend,
4680                                          cxx_scope *b)
4681 {
4682   tree decl = TYPE_NAME (type);
4683
4684   if (processing_template_parmlist)
4685     /* You can't declare a new template type in a template parameter
4686        list.  But, you can declare a non-template type:
4687
4688          template <class A*> struct S;
4689
4690        is a forward-declaration of `A'.  */
4691     ;
4692   else
4693     {
4694       gcc_assert (IS_AGGR_TYPE (type) || TREE_CODE (type) == ENUMERAL_TYPE);
4695
4696       if (processing_template_decl)
4697         {
4698           /* This may change after the call to
4699              push_template_decl_real, but we want the original value.  */
4700           tree name = DECL_NAME (decl);
4701
4702           decl = push_template_decl_real (decl, is_friend);
4703           /* If the current binding level is the binding level for the
4704              template parameters (see the comment in
4705              begin_template_parm_list) and the enclosing level is a class
4706              scope, and we're not looking at a friend, push the
4707              declaration of the member class into the class scope.  In the
4708              friend case, push_template_decl will already have put the
4709              friend into global scope, if appropriate.  */
4710           if (TREE_CODE (type) != ENUMERAL_TYPE
4711               && !is_friend && b->kind == sk_template_parms
4712               && b->level_chain->kind == sk_class)
4713             {
4714               finish_member_declaration (CLASSTYPE_TI_TEMPLATE (type));
4715
4716               if (!COMPLETE_TYPE_P (current_class_type))
4717                 {
4718                   maybe_add_class_template_decl_list (current_class_type,
4719                                                       type, /*friend_p=*/0);
4720                   /* Put this UTD in the table of UTDs for the class.  */
4721                   if (CLASSTYPE_NESTED_UTDS (current_class_type) == NULL)
4722                     CLASSTYPE_NESTED_UTDS (current_class_type) =
4723                       binding_table_new (SCOPE_DEFAULT_HT_SIZE);
4724
4725                   binding_table_insert
4726                     (CLASSTYPE_NESTED_UTDS (current_class_type), name, type);
4727                 }
4728             }
4729         }
4730     }
4731
4732   return decl;
4733 }
4734
4735 /* Push a tag name NAME for struct/class/union/enum type TYPE.  In case
4736    that the NAME is a class template, the tag is processed but not pushed.
4737
4738    The pushed scope depend on the SCOPE parameter:
4739    - When SCOPE is TS_CURRENT, put it into the inner-most non-sk_cleanup
4740      scope.
4741    - When SCOPE is TS_GLOBAL, put it in the inner-most non-class and
4742      non-template-parameter scope.  This case is needed for forward
4743      declarations.
4744    - When SCOPE is TS_WITHIN_ENCLOSING_NON_CLASS, this is similar to
4745      TS_GLOBAL case except that names within template-parameter scopes
4746      are not pushed at all.
4747
4748    Returns TYPE upon success and ERROR_MARK_NODE otherwise.  */
4749
4750 tree
4751 pushtag (tree name, tree type, tag_scope scope)
4752 {
4753   struct cp_binding_level *b;
4754   tree decl;
4755
4756   timevar_push (TV_NAME_LOOKUP);
4757   b = current_binding_level;
4758   while (/* Cleanup scopes are not scopes from the point of view of
4759             the language.  */
4760          b->kind == sk_cleanup
4761          /* Neither are the scopes used to hold template parameters
4762             for an explicit specialization.  For an ordinary template
4763             declaration, these scopes are not scopes from the point of
4764             view of the language.  */
4765          || (b->kind == sk_template_parms
4766              && (b->explicit_spec_p || scope == ts_global))
4767          || (b->kind == sk_class
4768              && (scope != ts_current
4769                  /* We may be defining a new type in the initializer
4770                     of a static member variable. We allow this when
4771                     not pedantic, and it is particularly useful for
4772                     type punning via an anonymous union.  */
4773                  || COMPLETE_TYPE_P (b->this_entity))))
4774     b = b->level_chain;
4775
4776   gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
4777   
4778   /* Do C++ gratuitous typedefing.  */
4779   if (IDENTIFIER_TYPE_VALUE (name) != type)
4780     {
4781       tree tdef;
4782       int in_class = 0;
4783       tree context = TYPE_CONTEXT (type);
4784
4785       if (! context)
4786         {
4787           tree cs = current_scope ();
4788           
4789           if (scope == ts_current)
4790             context = cs;
4791           else if (cs != NULL_TREE && TYPE_P (cs))
4792             /* When declaring a friend class of a local class, we want
4793                to inject the newly named class into the scope
4794                containing the local class, not the namespace
4795                scope.  */
4796             context = decl_function_context (get_type_decl (cs));
4797         }
4798       if (!context)
4799         context = current_namespace;
4800
4801       if (b->kind == sk_class
4802           || (b->kind == sk_template_parms
4803               && b->level_chain->kind == sk_class))
4804         in_class = 1;
4805
4806       if (current_lang_name == lang_name_java)
4807         TYPE_FOR_JAVA (type) = 1;
4808
4809       tdef = create_implicit_typedef (name, type);
4810       DECL_CONTEXT (tdef) = FROB_CONTEXT (context);
4811       if (scope == ts_within_enclosing_non_class)
4812         {
4813           /* This is a friend.  Make this TYPE_DECL node hidden from
4814              ordinary name lookup.  Its corresponding TEMPLATE_DECL
4815              will be marked in push_template_decl_real.  */
4816           retrofit_lang_decl (tdef);
4817           DECL_ANTICIPATED (tdef) = 1;
4818           DECL_FRIEND_P (tdef) = 1;
4819         }
4820
4821       decl = maybe_process_template_type_declaration
4822         (type, scope == ts_within_enclosing_non_class, b);
4823       if (decl == error_mark_node)
4824         POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, decl);
4825           
4826       if (! in_class)
4827         set_identifier_type_value_with_scope (name, tdef, b);
4828
4829       if (b->kind == sk_class)
4830         {
4831           if (!PROCESSING_REAL_TEMPLATE_DECL_P ())
4832             /* Put this TYPE_DECL on the TYPE_FIELDS list for the
4833                class.  But if it's a member template class, we want
4834                the TEMPLATE_DECL, not the TYPE_DECL, so this is done
4835                later.  */
4836             finish_member_declaration (decl);
4837           else
4838             pushdecl_class_level (decl);
4839         }
4840       else if (b->kind != sk_template_parms)
4841         decl = pushdecl_with_scope (decl, b, /*is_friend=*/false);
4842
4843       TYPE_CONTEXT (type) = DECL_CONTEXT (decl);
4844
4845       /* If this is a local class, keep track of it.  We need this
4846          information for name-mangling, and so that it is possible to
4847          find all function definitions in a translation unit in a
4848          convenient way.  (It's otherwise tricky to find a member
4849          function definition it's only pointed to from within a local
4850          class.)  */
4851       if (TYPE_CONTEXT (type)
4852           && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL)
4853         VEC_safe_push (tree, gc, local_classes, type);
4854     }
4855   if (b->kind == sk_class
4856       && !COMPLETE_TYPE_P (current_class_type))
4857     {
4858       maybe_add_class_template_decl_list (current_class_type,
4859                                           type, /*friend_p=*/0);
4860       
4861       if (CLASSTYPE_NESTED_UTDS (current_class_type) == NULL)
4862         CLASSTYPE_NESTED_UTDS (current_class_type)
4863           = binding_table_new (SCOPE_DEFAULT_HT_SIZE);
4864       
4865       binding_table_insert
4866         (CLASSTYPE_NESTED_UTDS (current_class_type), name, type);
4867     }
4868
4869   decl = TYPE_NAME (type);
4870   gcc_assert (TREE_CODE (decl) == TYPE_DECL);
4871   TYPE_STUB_DECL (type) = decl;
4872
4873   POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, type);
4874 }
4875 \f
4876 /* Subroutines for reverting temporarily to top-level for instantiation
4877    of templates and such.  We actually need to clear out the class- and
4878    local-value slots of all identifiers, so that only the global values
4879    are at all visible.  Simply setting current_binding_level to the global
4880    scope isn't enough, because more binding levels may be pushed.  */
4881 struct saved_scope *scope_chain;
4882
4883 /* If ID has not already been marked, add an appropriate binding to
4884    *OLD_BINDINGS.  */
4885
4886 static void
4887 store_binding (tree id, VEC(cxx_saved_binding,gc) **old_bindings)
4888 {
4889   cxx_saved_binding *saved;
4890
4891   if (!id || !IDENTIFIER_BINDING (id))
4892     return;
4893
4894   if (IDENTIFIER_MARKED (id))
4895     return;
4896
4897   IDENTIFIER_MARKED (id) = 1;
4898
4899   saved = VEC_safe_push (cxx_saved_binding, gc, *old_bindings, NULL);
4900   saved->identifier = id;
4901   saved->binding = IDENTIFIER_BINDING (id);
4902   saved->real_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
4903   IDENTIFIER_BINDING (id) = NULL;
4904 }
4905
4906 static void
4907 store_bindings (tree names, VEC(cxx_saved_binding,gc) **old_bindings)
4908 {
4909   tree t;
4910
4911   timevar_push (TV_NAME_LOOKUP);
4912   for (t = names; t; t = TREE_CHAIN (t))
4913     {
4914       tree id;
4915
4916       if (TREE_CODE (t) == TREE_LIST)
4917         id = TREE_PURPOSE (t);
4918       else
4919         id = DECL_NAME (t);
4920
4921       store_binding (id, old_bindings);
4922     }
4923   timevar_pop (TV_NAME_LOOKUP);
4924 }
4925
4926 /* Like store_bindings, but NAMES is a vector of cp_class_binding
4927    objects, rather than a TREE_LIST.  */
4928
4929 static void
4930 store_class_bindings (VEC(cp_class_binding,gc) *names,
4931                       VEC(cxx_saved_binding,gc) **old_bindings)
4932 {
4933   size_t i;
4934   cp_class_binding *cb;
4935
4936   timevar_push (TV_NAME_LOOKUP);
4937   for (i = 0; VEC_iterate(cp_class_binding, names, i, cb); ++i)
4938     store_binding (cb->identifier, old_bindings);
4939   timevar_pop (TV_NAME_LOOKUP);
4940 }
4941
4942 void
4943 push_to_top_level (void)
4944 {
4945   struct saved_scope *s;
4946   struct cp_binding_level *b;
4947   cxx_saved_binding *sb;
4948   size_t i;
4949   int need_pop;
4950
4951   timevar_push (TV_NAME_LOOKUP);
4952   s = GGC_CNEW (struct saved_scope);
4953
4954   b = scope_chain ? current_binding_level : 0;
4955
4956   /* If we're in the middle of some function, save our state.  */
4957   if (cfun)
4958     {
4959       need_pop = 1;
4960       push_function_context_to (NULL_TREE);
4961     }
4962   else
4963     need_pop = 0;
4964
4965   if (scope_chain && previous_class_level)
4966     store_class_bindings (previous_class_level->class_shadowed,
4967                           &s->old_bindings);
4968
4969   /* Have to include the global scope, because class-scope decls
4970      aren't listed anywhere useful.  */
4971   for (; b; b = b->level_chain)
4972     {
4973       tree t;
4974
4975       /* Template IDs are inserted into the global level. If they were
4976          inserted into namespace level, finish_file wouldn't find them
4977          when doing pending instantiations. Therefore, don't stop at
4978          namespace level, but continue until :: .  */
4979       if (global_scope_p (b))
4980         break;
4981
4982       store_bindings (b->names, &s->old_bindings);
4983       /* We also need to check class_shadowed to save class-level type
4984          bindings, since pushclass doesn't fill in b->names.  */
4985       if (b->kind == sk_class)
4986         store_class_bindings (b->class_shadowed, &s->old_bindings);
4987
4988       /* Unwind type-value slots back to top level.  */
4989       for (t = b->type_shadowed; t; t = TREE_CHAIN (t))
4990         SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (t), TREE_VALUE (t));
4991     }
4992
4993   for (i = 0; VEC_iterate (cxx_saved_binding, s->old_bindings, i, sb); ++i)
4994     IDENTIFIER_MARKED (sb->identifier) = 0;
4995
4996   s->prev = scope_chain;
4997   s->bindings = b;
4998   s->need_pop_function_context = need_pop;
4999   s->function_decl = current_function_decl;
5000   s->skip_evaluation = skip_evaluation;
5001
5002   scope_chain = s;
5003   current_function_decl = NULL_TREE;
5004   current_lang_base = VEC_alloc (tree, gc, 10);
5005   current_lang_name = lang_name_cplusplus;
5006   current_namespace = global_namespace;
5007   skip_evaluation = 0;
5008   timevar_pop (TV_NAME_LOOKUP);
5009 }
5010
5011 void
5012 pop_from_top_level (void)
5013 {
5014   struct saved_scope *s = scope_chain;
5015   cxx_saved_binding *saved;
5016   size_t i;
5017
5018   timevar_push (TV_NAME_LOOKUP);
5019   /* Clear out class-level bindings cache.  */
5020   if (previous_class_level)
5021     invalidate_class_lookup_cache ();
5022
5023   current_lang_base = 0;
5024
5025   scope_chain = s->prev;
5026   for (i = 0; VEC_iterate (cxx_saved_binding, s->old_bindings, i, saved); ++i)
5027     {
5028       tree id = saved->identifier;
5029
5030       IDENTIFIER_BINDING (id) = saved->binding;
5031       SET_IDENTIFIER_TYPE_VALUE (id, saved->real_type_value);
5032     }
5033
5034   /* If we were in the middle of compiling a function, restore our
5035      state.  */
5036   if (s->need_pop_function_context)
5037     pop_function_context_from (NULL_TREE);
5038   current_function_decl = s->function_decl;
5039   skip_evaluation = s->skip_evaluation;
5040   timevar_pop (TV_NAME_LOOKUP);
5041 }
5042
5043 /* Pop off extraneous binding levels left over due to syntax errors.
5044
5045    We don't pop past namespaces, as they might be valid.  */
5046
5047 void
5048 pop_everything (void)
5049 {
5050   if (ENABLE_SCOPE_CHECKING)
5051     verbatim ("XXX entering pop_everything ()\n");
5052   while (!toplevel_bindings_p ())
5053     {
5054       if (current_binding_level->kind == sk_class)
5055         pop_nested_class ();
5056       else
5057         poplevel (0, 0, 0);
5058     }
5059   if (ENABLE_SCOPE_CHECKING)
5060     verbatim ("XXX leaving pop_everything ()\n");
5061 }
5062
5063 /* Emit debugging information for using declarations and directives.
5064    If input tree is overloaded fn then emit debug info for all
5065    candidates.  */
5066
5067 void
5068 cp_emit_debug_info_for_using (tree t, tree context)
5069 {
5070   /* Don't try to emit any debug information if we have errors.  */
5071   if (sorrycount || errorcount)
5072     return;
5073
5074   /* Ignore this FUNCTION_DECL if it refers to a builtin declaration
5075      of a builtin function.  */
5076   if (TREE_CODE (t) == FUNCTION_DECL
5077       && DECL_EXTERNAL (t)
5078       && DECL_BUILT_IN (t))
5079     return;
5080
5081   /* Do not supply context to imported_module_or_decl, if
5082      it is a global namespace.  */
5083   if (context == global_namespace)
5084     context = NULL_TREE;
5085
5086   if (BASELINK_P (t))
5087     t = BASELINK_FUNCTIONS (t);
5088
5089   /* FIXME: Handle TEMPLATE_DECLs.  */
5090   for (t = OVL_CURRENT (t); t; t = OVL_NEXT (t))
5091     if (TREE_CODE (t) != TEMPLATE_DECL)
5092       (*debug_hooks->imported_module_or_decl) (t, context);
5093 }
5094
5095 #include "gt-cp-name-lookup.h"