OSDN Git Service

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