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