OSDN Git Service

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