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