OSDN Git Service

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