OSDN Git Service

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