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