OSDN Git Service

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