OSDN Git Service

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