OSDN Git Service

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