OSDN Git Service

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