OSDN Git Service

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