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