OSDN Git Service

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