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