OSDN Git Service

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