* g++.dg/cpp0x/constexpr-53094-2.C: Ignore non-standard ABI
[official-gcc.git] / gcc / cp / name-lookup.c
blob074dcf397c21aeca510ac29c999322429a3bed9b
1 /* Definitions for C++ name lookup routines.
2 Copyright (C) 2003-2013 Free Software Foundation, Inc.
3 Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
10 any later version.
12 GCC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING3. If not see
19 <http://www.gnu.org/licenses/>. */
21 #include "config.h"
22 #include "system.h"
23 #include "coretypes.h"
24 #include "tm.h"
25 #include "flags.h"
26 #include "tree.h"
27 #include "cp-tree.h"
28 #include "name-lookup.h"
29 #include "timevar.h"
30 #include "diagnostic-core.h"
31 #include "intl.h"
32 #include "debug.h"
33 #include "c-family/c-pragma.h"
34 #include "params.h"
35 #include "pointer-set.h"
37 /* The bindings for a particular name in a particular scope. */
39 struct scope_binding {
40 tree value;
41 tree type;
43 #define EMPTY_SCOPE_BINDING { NULL_TREE, NULL_TREE }
45 static cp_binding_level *innermost_nonclass_level (void);
46 static cxx_binding *binding_for_name (cp_binding_level *, tree);
47 static tree push_overloaded_decl (tree, int, bool);
48 static bool lookup_using_namespace (tree, struct scope_binding *, tree,
49 tree, int);
50 static bool qualified_lookup_using_namespace (tree, tree,
51 struct scope_binding *, int);
52 static tree lookup_type_current_level (tree);
53 static tree push_using_directive (tree);
54 static tree lookup_extern_c_fun_in_all_ns (tree);
55 static void diagnose_name_conflict (tree, tree);
57 /* The :: namespace. */
59 tree global_namespace;
61 /* The name of the anonymous namespace, throughout this translation
62 unit. */
63 static GTY(()) tree anonymous_namespace_name;
65 /* Initialize anonymous_namespace_name if necessary, and return it. */
67 static tree
68 get_anonymous_namespace_name (void)
70 if (!anonymous_namespace_name)
72 /* The anonymous namespace has to have a unique name
73 if typeinfo objects are being compared by name. */
74 if (! flag_weak || ! SUPPORTS_ONE_ONLY)
75 anonymous_namespace_name = get_file_function_name ("N");
76 else
77 /* The demangler expects anonymous namespaces to be called
78 something starting with '_GLOBAL__N_'. */
79 anonymous_namespace_name = get_identifier ("_GLOBAL__N_1");
81 return anonymous_namespace_name;
84 /* Compute the chain index of a binding_entry given the HASH value of its
85 name and the total COUNT of chains. COUNT is assumed to be a power
86 of 2. */
88 #define ENTRY_INDEX(HASH, COUNT) (((HASH) >> 3) & ((COUNT) - 1))
90 /* A free list of "binding_entry"s awaiting for re-use. */
92 static GTY((deletable)) binding_entry free_binding_entry = NULL;
94 /* Create a binding_entry object for (NAME, TYPE). */
96 static inline binding_entry
97 binding_entry_make (tree name, tree type)
99 binding_entry entry;
101 if (free_binding_entry)
103 entry = free_binding_entry;
104 free_binding_entry = entry->chain;
106 else
107 entry = ggc_alloc_binding_entry_s ();
109 entry->name = name;
110 entry->type = type;
111 entry->chain = NULL;
113 return entry;
116 /* Put ENTRY back on the free list. */
117 #if 0
118 static inline void
119 binding_entry_free (binding_entry entry)
121 entry->name = NULL;
122 entry->type = NULL;
123 entry->chain = free_binding_entry;
124 free_binding_entry = entry;
126 #endif
128 /* The datatype used to implement the mapping from names to types at
129 a given scope. */
130 struct GTY(()) binding_table_s {
131 /* Array of chains of "binding_entry"s */
132 binding_entry * GTY((length ("%h.chain_count"))) chain;
134 /* The number of chains in this table. This is the length of the
135 member "chain" considered as an array. */
136 size_t chain_count;
138 /* Number of "binding_entry"s in this table. */
139 size_t entry_count;
142 /* Construct TABLE with an initial CHAIN_COUNT. */
144 static inline void
145 binding_table_construct (binding_table table, size_t chain_count)
147 table->chain_count = chain_count;
148 table->entry_count = 0;
149 table->chain = ggc_alloc_cleared_vec_binding_entry (table->chain_count);
152 /* Make TABLE's entries ready for reuse. */
153 #if 0
154 static void
155 binding_table_free (binding_table table)
157 size_t i;
158 size_t count;
160 if (table == NULL)
161 return;
163 for (i = 0, count = table->chain_count; i < count; ++i)
165 binding_entry temp = table->chain[i];
166 while (temp != NULL)
168 binding_entry entry = temp;
169 temp = entry->chain;
170 binding_entry_free (entry);
172 table->chain[i] = NULL;
174 table->entry_count = 0;
176 #endif
178 /* Allocate a table with CHAIN_COUNT, assumed to be a power of two. */
180 static inline binding_table
181 binding_table_new (size_t chain_count)
183 binding_table table = ggc_alloc_binding_table_s ();
184 table->chain = NULL;
185 binding_table_construct (table, chain_count);
186 return table;
189 /* Expand TABLE to twice its current chain_count. */
191 static void
192 binding_table_expand (binding_table table)
194 const size_t old_chain_count = table->chain_count;
195 const size_t old_entry_count = table->entry_count;
196 const size_t new_chain_count = 2 * old_chain_count;
197 binding_entry *old_chains = table->chain;
198 size_t i;
200 binding_table_construct (table, new_chain_count);
201 for (i = 0; i < old_chain_count; ++i)
203 binding_entry entry = old_chains[i];
204 for (; entry != NULL; entry = old_chains[i])
206 const unsigned int hash = IDENTIFIER_HASH_VALUE (entry->name);
207 const size_t j = ENTRY_INDEX (hash, new_chain_count);
209 old_chains[i] = entry->chain;
210 entry->chain = table->chain[j];
211 table->chain[j] = entry;
214 table->entry_count = old_entry_count;
217 /* Insert a binding for NAME to TYPE into TABLE. */
219 static void
220 binding_table_insert (binding_table table, tree name, tree type)
222 const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
223 const size_t i = ENTRY_INDEX (hash, table->chain_count);
224 binding_entry entry = binding_entry_make (name, type);
226 entry->chain = table->chain[i];
227 table->chain[i] = entry;
228 ++table->entry_count;
230 if (3 * table->chain_count < 5 * table->entry_count)
231 binding_table_expand (table);
234 /* Return the binding_entry, if any, that maps NAME. */
236 binding_entry
237 binding_table_find (binding_table table, tree name)
239 const unsigned int hash = IDENTIFIER_HASH_VALUE (name);
240 binding_entry entry = table->chain[ENTRY_INDEX (hash, table->chain_count)];
242 while (entry != NULL && entry->name != name)
243 entry = entry->chain;
245 return entry;
248 /* Apply PROC -- with DATA -- to all entries in TABLE. */
250 void
251 binding_table_foreach (binding_table table, bt_foreach_proc proc, void *data)
253 size_t chain_count;
254 size_t i;
256 if (!table)
257 return;
259 chain_count = table->chain_count;
260 for (i = 0; i < chain_count; ++i)
262 binding_entry entry = table->chain[i];
263 for (; entry != NULL; entry = entry->chain)
264 proc (entry, data);
268 #ifndef ENABLE_SCOPE_CHECKING
269 # define ENABLE_SCOPE_CHECKING 0
270 #else
271 # define ENABLE_SCOPE_CHECKING 1
272 #endif
274 /* A free list of "cxx_binding"s, connected by their PREVIOUS. */
276 static GTY((deletable)) cxx_binding *free_bindings;
278 /* Initialize VALUE and TYPE field for BINDING, and set the PREVIOUS
279 field to NULL. */
281 static inline void
282 cxx_binding_init (cxx_binding *binding, tree value, tree type)
284 binding->value = value;
285 binding->type = type;
286 binding->previous = NULL;
289 /* (GC)-allocate a binding object with VALUE and TYPE member initialized. */
291 static cxx_binding *
292 cxx_binding_make (tree value, tree type)
294 cxx_binding *binding;
295 if (free_bindings)
297 binding = free_bindings;
298 free_bindings = binding->previous;
300 else
301 binding = ggc_alloc_cxx_binding ();
303 cxx_binding_init (binding, value, type);
305 return binding;
308 /* Put BINDING back on the free list. */
310 static inline void
311 cxx_binding_free (cxx_binding *binding)
313 binding->scope = NULL;
314 binding->previous = free_bindings;
315 free_bindings = binding;
318 /* Create a new binding for NAME (with the indicated VALUE and TYPE
319 bindings) in the class scope indicated by SCOPE. */
321 static cxx_binding *
322 new_class_binding (tree name, tree value, tree type, cp_binding_level *scope)
324 cp_class_binding cb = {cxx_binding_make (value, type), name};
325 cxx_binding *binding = cb.base;
326 vec_safe_push (scope->class_shadowed, cb);
327 binding->scope = scope;
328 return binding;
331 /* Make DECL the innermost binding for ID. The LEVEL is the binding
332 level at which this declaration is being bound. */
334 static void
335 push_binding (tree id, tree decl, cp_binding_level* level)
337 cxx_binding *binding;
339 if (level != class_binding_level)
341 binding = cxx_binding_make (decl, NULL_TREE);
342 binding->scope = level;
344 else
345 binding = new_class_binding (id, decl, /*type=*/NULL_TREE, level);
347 /* Now, fill in the binding information. */
348 binding->previous = IDENTIFIER_BINDING (id);
349 INHERITED_VALUE_BINDING_P (binding) = 0;
350 LOCAL_BINDING_P (binding) = (level != class_binding_level);
352 /* And put it on the front of the list of bindings for ID. */
353 IDENTIFIER_BINDING (id) = binding;
356 /* Remove the binding for DECL which should be the innermost binding
357 for ID. */
359 void
360 pop_binding (tree id, tree decl)
362 cxx_binding *binding;
364 if (id == NULL_TREE)
365 /* It's easiest to write the loops that call this function without
366 checking whether or not the entities involved have names. We
367 get here for such an entity. */
368 return;
370 /* Get the innermost binding for ID. */
371 binding = IDENTIFIER_BINDING (id);
373 /* The name should be bound. */
374 gcc_assert (binding != NULL);
376 /* The DECL will be either the ordinary binding or the type
377 binding for this identifier. Remove that binding. */
378 if (binding->value == decl)
379 binding->value = NULL_TREE;
380 else
382 gcc_assert (binding->type == decl);
383 binding->type = NULL_TREE;
386 if (!binding->value && !binding->type)
388 /* We're completely done with the innermost binding for this
389 identifier. Unhook it from the list of bindings. */
390 IDENTIFIER_BINDING (id) = binding->previous;
392 /* Add it to the free list. */
393 cxx_binding_free (binding);
397 /* Strip non dependent using declarations. */
399 tree
400 strip_using_decl (tree decl)
402 if (decl == NULL_TREE)
403 return NULL_TREE;
405 while (TREE_CODE (decl) == USING_DECL && !DECL_DEPENDENT_P (decl))
406 decl = USING_DECL_DECLS (decl);
407 return decl;
410 /* BINDING records an existing declaration for a name in the current scope.
411 But, DECL is another declaration for that same identifier in the
412 same scope. This is the `struct stat' hack whereby a non-typedef
413 class name or enum-name can be bound at the same level as some other
414 kind of entity.
415 3.3.7/1
417 A class name (9.1) or enumeration name (7.2) can be hidden by the
418 name of an object, function, or enumerator declared in the same scope.
419 If a class or enumeration name and an object, function, or enumerator
420 are declared in the same scope (in any order) with the same name, the
421 class or enumeration name is hidden wherever the object, function, or
422 enumerator name is visible.
424 It's the responsibility of the caller to check that
425 inserting this name is valid here. Returns nonzero if the new binding
426 was successful. */
428 static bool
429 supplement_binding_1 (cxx_binding *binding, tree decl)
431 tree bval = binding->value;
432 bool ok = true;
433 tree target_bval = strip_using_decl (bval);
434 tree target_decl = strip_using_decl (decl);
436 if (TREE_CODE (target_decl) == TYPE_DECL && DECL_ARTIFICIAL (target_decl)
437 && target_decl != target_bval
438 && (TREE_CODE (target_bval) != TYPE_DECL
439 /* We allow pushing an enum multiple times in a class
440 template in order to handle late matching of underlying
441 type on an opaque-enum-declaration followed by an
442 enum-specifier. */
443 || (processing_template_decl
444 && TREE_CODE (TREE_TYPE (target_decl)) == ENUMERAL_TYPE
445 && TREE_CODE (TREE_TYPE (target_bval)) == ENUMERAL_TYPE
446 && (dependent_type_p (ENUM_UNDERLYING_TYPE
447 (TREE_TYPE (target_decl)))
448 || dependent_type_p (ENUM_UNDERLYING_TYPE
449 (TREE_TYPE (target_bval)))))))
450 /* The new name is the type name. */
451 binding->type = decl;
452 else if (/* TARGET_BVAL is null when push_class_level_binding moves
453 an inherited type-binding out of the way to make room
454 for a new value binding. */
455 !target_bval
456 /* TARGET_BVAL is error_mark_node when TARGET_DECL's name
457 has been used in a non-class scope prior declaration.
458 In that case, we should have already issued a
459 diagnostic; for graceful error recovery purpose, pretend
460 this was the intended declaration for that name. */
461 || target_bval == error_mark_node
462 /* If TARGET_BVAL is anticipated but has not yet been
463 declared, pretend it is not there at all. */
464 || (TREE_CODE (target_bval) == FUNCTION_DECL
465 && DECL_ANTICIPATED (target_bval)
466 && !DECL_HIDDEN_FRIEND_P (target_bval)))
467 binding->value = decl;
468 else if (TREE_CODE (target_bval) == TYPE_DECL
469 && DECL_ARTIFICIAL (target_bval)
470 && target_decl != target_bval
471 && (TREE_CODE (target_decl) != TYPE_DECL
472 || same_type_p (TREE_TYPE (target_decl),
473 TREE_TYPE (target_bval))))
475 /* The old binding was a type name. It was placed in
476 VALUE field because it was thought, at the point it was
477 declared, to be the only entity with such a name. Move the
478 type name into the type slot; it is now hidden by the new
479 binding. */
480 binding->type = bval;
481 binding->value = decl;
482 binding->value_is_inherited = false;
484 else if (TREE_CODE (target_bval) == TYPE_DECL
485 && TREE_CODE (target_decl) == TYPE_DECL
486 && DECL_NAME (target_decl) == DECL_NAME (target_bval)
487 && binding->scope->kind != sk_class
488 && (same_type_p (TREE_TYPE (target_decl), TREE_TYPE (target_bval))
489 /* If either type involves template parameters, we must
490 wait until instantiation. */
491 || uses_template_parms (TREE_TYPE (target_decl))
492 || uses_template_parms (TREE_TYPE (target_bval))))
493 /* We have two typedef-names, both naming the same type to have
494 the same name. In general, this is OK because of:
496 [dcl.typedef]
498 In a given scope, a typedef specifier can be used to redefine
499 the name of any type declared in that scope to refer to the
500 type to which it already refers.
502 However, in class scopes, this rule does not apply due to the
503 stricter language in [class.mem] prohibiting redeclarations of
504 members. */
505 ok = false;
506 /* There can be two block-scope declarations of the same variable,
507 so long as they are `extern' declarations. However, there cannot
508 be two declarations of the same static data member:
510 [class.mem]
512 A member shall not be declared twice in the
513 member-specification. */
514 else if (TREE_CODE (target_decl) == VAR_DECL
515 && TREE_CODE (target_bval) == VAR_DECL
516 && DECL_EXTERNAL (target_decl) && DECL_EXTERNAL (target_bval)
517 && !DECL_CLASS_SCOPE_P (target_decl))
519 duplicate_decls (decl, binding->value, /*newdecl_is_friend=*/false);
520 ok = false;
522 else if (TREE_CODE (decl) == NAMESPACE_DECL
523 && TREE_CODE (bval) == NAMESPACE_DECL
524 && DECL_NAMESPACE_ALIAS (decl)
525 && DECL_NAMESPACE_ALIAS (bval)
526 && ORIGINAL_NAMESPACE (bval) == ORIGINAL_NAMESPACE (decl))
527 /* [namespace.alias]
529 In a declarative region, a namespace-alias-definition can be
530 used to redefine a namespace-alias declared in that declarative
531 region to refer only to the namespace to which it already
532 refers. */
533 ok = false;
534 else
536 diagnose_name_conflict (decl, bval);
537 ok = false;
540 return ok;
543 /* Diagnose a name conflict between DECL and BVAL. */
545 static void
546 diagnose_name_conflict (tree decl, tree bval)
548 if (TREE_CODE (decl) == TREE_CODE (bval)
549 && (TREE_CODE (decl) != TYPE_DECL
550 || (DECL_ARTIFICIAL (decl) && DECL_ARTIFICIAL (bval))
551 || (!DECL_ARTIFICIAL (decl) && !DECL_ARTIFICIAL (bval)))
552 && !is_overloaded_fn (decl))
553 error ("redeclaration of %q#D", decl);
554 else
555 error ("%q#D conflicts with a previous declaration", decl);
557 inform (input_location, "previous declaration %q+#D", bval);
560 /* Wrapper for supplement_binding_1. */
562 static bool
563 supplement_binding (cxx_binding *binding, tree decl)
565 bool ret;
566 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
567 ret = supplement_binding_1 (binding, decl);
568 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
569 return ret;
572 /* Add DECL to the list of things declared in B. */
574 static void
575 add_decl_to_level (tree decl, cp_binding_level *b)
577 /* We used to record virtual tables as if they were ordinary
578 variables, but no longer do so. */
579 gcc_assert (!(TREE_CODE (decl) == VAR_DECL && DECL_VIRTUAL_P (decl)));
581 if (TREE_CODE (decl) == NAMESPACE_DECL
582 && !DECL_NAMESPACE_ALIAS (decl))
584 DECL_CHAIN (decl) = b->namespaces;
585 b->namespaces = decl;
587 else
589 /* We build up the list in reverse order, and reverse it later if
590 necessary. */
591 TREE_CHAIN (decl) = b->names;
592 b->names = decl;
594 /* If appropriate, add decl to separate list of statics. We
595 include extern variables because they might turn out to be
596 static later. It's OK for this list to contain a few false
597 positives. */
598 if (b->kind == sk_namespace)
599 if ((TREE_CODE (decl) == VAR_DECL
600 && (TREE_STATIC (decl) || DECL_EXTERNAL (decl)))
601 || (TREE_CODE (decl) == FUNCTION_DECL
602 && (!TREE_PUBLIC (decl) || DECL_DECLARED_INLINE_P (decl))))
603 vec_safe_push (b->static_decls, decl);
607 /* Record a decl-node X as belonging to the current lexical scope.
608 Check for errors (such as an incompatible declaration for the same
609 name already seen in the same scope). IS_FRIEND is true if X is
610 declared as a friend.
612 Returns either X or an old decl for the same name.
613 If an old decl is returned, it may have been smashed
614 to agree with what X says. */
616 static tree
617 pushdecl_maybe_friend_1 (tree x, bool is_friend)
619 tree t;
620 tree name;
621 int need_new_binding;
623 if (x == error_mark_node)
624 return error_mark_node;
626 need_new_binding = 1;
628 if (DECL_TEMPLATE_PARM_P (x))
629 /* Template parameters have no context; they are not X::T even
630 when declared within a class or namespace. */
632 else
634 if (current_function_decl && x != current_function_decl
635 /* A local declaration for a function doesn't constitute
636 nesting. */
637 && TREE_CODE (x) != FUNCTION_DECL
638 /* A local declaration for an `extern' variable is in the
639 scope of the current namespace, not the current
640 function. */
641 && !(TREE_CODE (x) == VAR_DECL && DECL_EXTERNAL (x))
642 /* When parsing the parameter list of a function declarator,
643 don't set DECL_CONTEXT to an enclosing function. When we
644 push the PARM_DECLs in order to process the function body,
645 current_binding_level->this_entity will be set. */
646 && !(TREE_CODE (x) == PARM_DECL
647 && current_binding_level->kind == sk_function_parms
648 && current_binding_level->this_entity == NULL)
649 && !DECL_CONTEXT (x))
650 DECL_CONTEXT (x) = current_function_decl;
652 /* If this is the declaration for a namespace-scope function,
653 but the declaration itself is in a local scope, mark the
654 declaration. */
655 if (TREE_CODE (x) == FUNCTION_DECL
656 && DECL_NAMESPACE_SCOPE_P (x)
657 && current_function_decl
658 && x != current_function_decl)
659 DECL_LOCAL_FUNCTION_P (x) = 1;
662 name = DECL_NAME (x);
663 if (name)
665 int different_binding_level = 0;
667 if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
668 name = TREE_OPERAND (name, 0);
670 /* In case this decl was explicitly namespace-qualified, look it
671 up in its namespace context. */
672 if (DECL_NAMESPACE_SCOPE_P (x) && namespace_bindings_p ())
673 t = namespace_binding (name, DECL_CONTEXT (x));
674 else
675 t = lookup_name_innermost_nonclass_level (name);
677 /* [basic.link] If there is a visible declaration of an entity
678 with linkage having the same name and type, ignoring entities
679 declared outside the innermost enclosing namespace scope, the
680 block scope declaration declares that same entity and
681 receives the linkage of the previous declaration. */
682 if (! t && current_function_decl && x != current_function_decl
683 && (TREE_CODE (x) == FUNCTION_DECL || TREE_CODE (x) == VAR_DECL)
684 && DECL_EXTERNAL (x))
686 /* Look in block scope. */
687 t = innermost_non_namespace_value (name);
688 /* Or in the innermost namespace. */
689 if (! t)
690 t = namespace_binding (name, DECL_CONTEXT (x));
691 /* Does it have linkage? Note that if this isn't a DECL, it's an
692 OVERLOAD, which is OK. */
693 if (t && DECL_P (t) && ! (TREE_STATIC (t) || DECL_EXTERNAL (t)))
694 t = NULL_TREE;
695 if (t)
696 different_binding_level = 1;
699 /* If we are declaring a function, and the result of name-lookup
700 was an OVERLOAD, look for an overloaded instance that is
701 actually the same as the function we are declaring. (If
702 there is one, we have to merge our declaration with the
703 previous declaration.) */
704 if (t && TREE_CODE (t) == OVERLOAD)
706 tree match;
708 if (TREE_CODE (x) == FUNCTION_DECL)
709 for (match = t; match; match = OVL_NEXT (match))
711 if (decls_match (OVL_CURRENT (match), x))
712 break;
714 else
715 /* Just choose one. */
716 match = t;
718 if (match)
719 t = OVL_CURRENT (match);
720 else
721 t = NULL_TREE;
724 if (t && t != error_mark_node)
726 if (different_binding_level)
728 if (decls_match (x, t))
729 /* The standard only says that the local extern
730 inherits linkage from the previous decl; in
731 particular, default args are not shared. Add
732 the decl into a hash table to make sure only
733 the previous decl in this case is seen by the
734 middle end. */
736 struct cxx_int_tree_map *h;
737 void **loc;
739 TREE_PUBLIC (x) = TREE_PUBLIC (t);
741 if (cp_function_chain->extern_decl_map == NULL)
742 cp_function_chain->extern_decl_map
743 = htab_create_ggc (20, cxx_int_tree_map_hash,
744 cxx_int_tree_map_eq, NULL);
746 h = ggc_alloc_cxx_int_tree_map ();
747 h->uid = DECL_UID (x);
748 h->to = t;
749 loc = htab_find_slot_with_hash
750 (cp_function_chain->extern_decl_map, h,
751 h->uid, INSERT);
752 *(struct cxx_int_tree_map **) loc = h;
755 else if (TREE_CODE (t) == PARM_DECL)
757 /* Check for duplicate params. */
758 tree d = duplicate_decls (x, t, is_friend);
759 if (d)
760 return d;
762 else if ((DECL_EXTERN_C_FUNCTION_P (x)
763 || DECL_FUNCTION_TEMPLATE_P (x))
764 && is_overloaded_fn (t))
765 /* Don't do anything just yet. */;
766 else if (t == wchar_decl_node)
768 if (! DECL_IN_SYSTEM_HEADER (x))
769 pedwarn (input_location, OPT_Wpedantic, "redeclaration of %<wchar_t%> as %qT",
770 TREE_TYPE (x));
772 /* Throw away the redeclaration. */
773 return t;
775 else
777 tree olddecl = duplicate_decls (x, t, is_friend);
779 /* If the redeclaration failed, we can stop at this
780 point. */
781 if (olddecl == error_mark_node)
782 return error_mark_node;
784 if (olddecl)
786 if (TREE_CODE (t) == TYPE_DECL)
787 SET_IDENTIFIER_TYPE_VALUE (name, TREE_TYPE (t));
789 return t;
791 else if (DECL_MAIN_P (x) && TREE_CODE (t) == FUNCTION_DECL)
793 /* A redeclaration of main, but not a duplicate of the
794 previous one.
796 [basic.start.main]
798 This function shall not be overloaded. */
799 error ("invalid redeclaration of %q+D", t);
800 error ("as %qD", x);
801 /* We don't try to push this declaration since that
802 causes a crash. */
803 return x;
808 /* If x has C linkage-specification, (extern "C"),
809 lookup its binding, in case it's already bound to an object.
810 The lookup is done in all namespaces.
811 If we find an existing binding, make sure it has the same
812 exception specification as x, otherwise, bail in error [7.5, 7.6]. */
813 if ((TREE_CODE (x) == FUNCTION_DECL)
814 && DECL_EXTERN_C_P (x)
815 /* We should ignore declarations happening in system headers. */
816 && !DECL_ARTIFICIAL (x)
817 && !DECL_IN_SYSTEM_HEADER (x))
819 tree previous = lookup_extern_c_fun_in_all_ns (x);
820 if (previous
821 && !DECL_ARTIFICIAL (previous)
822 && !DECL_IN_SYSTEM_HEADER (previous)
823 && DECL_CONTEXT (previous) != DECL_CONTEXT (x))
825 /* In case either x or previous is declared to throw an exception,
826 make sure both exception specifications are equal. */
827 if (decls_match (x, previous))
829 tree x_exception_spec = NULL_TREE;
830 tree previous_exception_spec = NULL_TREE;
832 x_exception_spec =
833 TYPE_RAISES_EXCEPTIONS (TREE_TYPE (x));
834 previous_exception_spec =
835 TYPE_RAISES_EXCEPTIONS (TREE_TYPE (previous));
836 if (!comp_except_specs (previous_exception_spec,
837 x_exception_spec,
838 ce_normal))
840 pedwarn (input_location, 0,
841 "declaration of %q#D with C language linkage",
843 pedwarn (input_location, 0,
844 "conflicts with previous declaration %q+#D",
845 previous);
846 pedwarn (input_location, 0,
847 "due to different exception specifications");
848 return error_mark_node;
850 if (DECL_ASSEMBLER_NAME_SET_P (previous))
851 SET_DECL_ASSEMBLER_NAME (x,
852 DECL_ASSEMBLER_NAME (previous));
854 else
856 pedwarn (input_location, 0,
857 "declaration of %q#D with C language linkage", x);
858 pedwarn (input_location, 0,
859 "conflicts with previous declaration %q+#D",
860 previous);
865 check_template_shadow (x);
867 /* If this is a function conjured up by the back end, massage it
868 so it looks friendly. */
869 if (DECL_NON_THUNK_FUNCTION_P (x) && ! DECL_LANG_SPECIFIC (x))
871 retrofit_lang_decl (x);
872 SET_DECL_LANGUAGE (x, lang_c);
875 t = x;
876 if (DECL_NON_THUNK_FUNCTION_P (x) && ! DECL_FUNCTION_MEMBER_P (x))
878 t = push_overloaded_decl (x, PUSH_LOCAL, is_friend);
879 if (!namespace_bindings_p ())
880 /* We do not need to create a binding for this name;
881 push_overloaded_decl will have already done so if
882 necessary. */
883 need_new_binding = 0;
885 else if (DECL_FUNCTION_TEMPLATE_P (x) && DECL_NAMESPACE_SCOPE_P (x))
887 t = push_overloaded_decl (x, PUSH_GLOBAL, is_friend);
888 if (t == x)
889 add_decl_to_level (x, NAMESPACE_LEVEL (CP_DECL_CONTEXT (t)));
892 if (TREE_CODE (t) == FUNCTION_DECL || DECL_FUNCTION_TEMPLATE_P (t))
893 check_default_args (t);
895 if (t != x || DECL_FUNCTION_TEMPLATE_P (t))
896 return t;
898 /* If declaring a type as a typedef, copy the type (unless we're
899 at line 0), and install this TYPE_DECL as the new type's typedef
900 name. See the extensive comment of set_underlying_type (). */
901 if (TREE_CODE (x) == TYPE_DECL)
903 tree type = TREE_TYPE (x);
905 if (DECL_IS_BUILTIN (x)
906 || (TREE_TYPE (x) != error_mark_node
907 && TYPE_NAME (type) != x
908 /* We don't want to copy the type when all we're
909 doing is making a TYPE_DECL for the purposes of
910 inlining. */
911 && (!TYPE_NAME (type)
912 || TYPE_NAME (type) != DECL_ABSTRACT_ORIGIN (x))))
913 set_underlying_type (x);
915 if (type != error_mark_node
916 && TYPE_NAME (type)
917 && TYPE_IDENTIFIER (type))
918 set_identifier_type_value (DECL_NAME (x), x);
920 /* If this is a locally defined typedef in a function that
921 is not a template instantation, record it to implement
922 -Wunused-local-typedefs. */
923 if (current_instantiation () == NULL
924 || (current_instantiation ()->decl != current_function_decl))
925 record_locally_defined_typedef (x);
928 /* Multiple external decls of the same identifier ought to match.
930 We get warnings about inline functions where they are defined.
931 We get warnings about other functions from push_overloaded_decl.
933 Avoid duplicate warnings where they are used. */
934 if (TREE_PUBLIC (x) && TREE_CODE (x) != FUNCTION_DECL)
936 tree decl;
938 decl = IDENTIFIER_NAMESPACE_VALUE (name);
939 if (decl && TREE_CODE (decl) == OVERLOAD)
940 decl = OVL_FUNCTION (decl);
942 if (decl && decl != error_mark_node
943 && (DECL_EXTERNAL (decl) || TREE_PUBLIC (decl))
944 /* If different sort of thing, we already gave an error. */
945 && TREE_CODE (decl) == TREE_CODE (x)
946 && !same_type_p (TREE_TYPE (x), TREE_TYPE (decl)))
948 permerror (input_location, "type mismatch with previous external decl of %q#D", x);
949 permerror (input_location, "previous external decl of %q+#D", decl);
953 if (TREE_CODE (x) == FUNCTION_DECL
954 && is_friend
955 && !flag_friend_injection)
957 /* This is a new declaration of a friend function, so hide
958 it from ordinary function lookup. */
959 DECL_ANTICIPATED (x) = 1;
960 DECL_HIDDEN_FRIEND_P (x) = 1;
963 /* This name is new in its binding level.
964 Install the new declaration and return it. */
965 if (namespace_bindings_p ())
967 /* Install a global value. */
969 /* If the first global decl has external linkage,
970 warn if we later see static one. */
971 if (IDENTIFIER_GLOBAL_VALUE (name) == NULL_TREE && TREE_PUBLIC (x))
972 TREE_PUBLIC (name) = 1;
974 /* Bind the name for the entity. */
975 if (!(TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x)
976 && t != NULL_TREE)
977 && (TREE_CODE (x) == TYPE_DECL
978 || TREE_CODE (x) == VAR_DECL
979 || TREE_CODE (x) == NAMESPACE_DECL
980 || TREE_CODE (x) == CONST_DECL
981 || TREE_CODE (x) == TEMPLATE_DECL))
982 SET_IDENTIFIER_NAMESPACE_VALUE (name, x);
984 /* If new decl is `static' and an `extern' was seen previously,
985 warn about it. */
986 if (x != NULL_TREE && t != NULL_TREE && decls_match (x, t))
987 warn_extern_redeclared_static (x, t);
989 else
991 /* Here to install a non-global value. */
992 tree oldglobal = IDENTIFIER_NAMESPACE_VALUE (name);
993 tree oldlocal = NULL_TREE;
994 cp_binding_level *oldscope = NULL;
995 cxx_binding *oldbinding = outer_binding (name, NULL, true);
996 if (oldbinding)
998 oldlocal = oldbinding->value;
999 oldscope = oldbinding->scope;
1002 if (need_new_binding)
1004 push_local_binding (name, x, 0);
1005 /* Because push_local_binding will hook X on to the
1006 current_binding_level's name list, we don't want to
1007 do that again below. */
1008 need_new_binding = 0;
1011 /* If this is a TYPE_DECL, push it into the type value slot. */
1012 if (TREE_CODE (x) == TYPE_DECL)
1013 set_identifier_type_value (name, x);
1015 /* Clear out any TYPE_DECL shadowed by a namespace so that
1016 we won't think this is a type. The C struct hack doesn't
1017 go through namespaces. */
1018 if (TREE_CODE (x) == NAMESPACE_DECL)
1019 set_identifier_type_value (name, NULL_TREE);
1021 if (oldlocal)
1023 tree d = oldlocal;
1025 while (oldlocal
1026 && TREE_CODE (oldlocal) == VAR_DECL
1027 && DECL_DEAD_FOR_LOCAL (oldlocal))
1028 oldlocal = DECL_SHADOWED_FOR_VAR (oldlocal);
1030 if (oldlocal == NULL_TREE)
1031 oldlocal = IDENTIFIER_NAMESPACE_VALUE (DECL_NAME (d));
1034 /* If this is an extern function declaration, see if we
1035 have a global definition or declaration for the function. */
1036 if (oldlocal == NULL_TREE
1037 && DECL_EXTERNAL (x)
1038 && oldglobal != NULL_TREE
1039 && TREE_CODE (x) == FUNCTION_DECL
1040 && TREE_CODE (oldglobal) == FUNCTION_DECL)
1042 /* We have one. Their types must agree. */
1043 if (decls_match (x, oldglobal))
1044 /* OK */;
1045 else
1047 warning (0, "extern declaration of %q#D doesn%'t match", x);
1048 warning (0, "global declaration %q+#D", oldglobal);
1051 /* If we have a local external declaration,
1052 and no file-scope declaration has yet been seen,
1053 then if we later have a file-scope decl it must not be static. */
1054 if (oldlocal == NULL_TREE
1055 && oldglobal == NULL_TREE
1056 && DECL_EXTERNAL (x)
1057 && TREE_PUBLIC (x))
1058 TREE_PUBLIC (name) = 1;
1060 /* Don't complain about the parms we push and then pop
1061 while tentatively parsing a function declarator. */
1062 if (TREE_CODE (x) == PARM_DECL && DECL_CONTEXT (x) == NULL_TREE)
1063 /* Ignore. */;
1065 /* Warn if shadowing an argument at the top level of the body. */
1066 else if (oldlocal != NULL_TREE && !DECL_EXTERNAL (x)
1067 /* Inline decls shadow nothing. */
1068 && !DECL_FROM_INLINE (x)
1069 && (TREE_CODE (oldlocal) == PARM_DECL
1070 || TREE_CODE (oldlocal) == VAR_DECL
1071 /* If the old decl is a type decl, only warn if the
1072 old decl is an explicit typedef or if both the old
1073 and new decls are type decls. */
1074 || (TREE_CODE (oldlocal) == TYPE_DECL
1075 && (!DECL_ARTIFICIAL (oldlocal)
1076 || TREE_CODE (x) == TYPE_DECL)))
1077 /* Don't check for internally generated vars unless
1078 it's an implicit typedef (see create_implicit_typedef
1079 in decl.c). */
1080 && (!DECL_ARTIFICIAL (x) || DECL_IMPLICIT_TYPEDEF_P (x)))
1082 bool nowarn = false;
1084 /* Don't complain if it's from an enclosing function. */
1085 if (DECL_CONTEXT (oldlocal) == current_function_decl
1086 && TREE_CODE (x) != PARM_DECL
1087 && TREE_CODE (oldlocal) == PARM_DECL)
1089 /* Go to where the parms should be and see if we find
1090 them there. */
1091 cp_binding_level *b = current_binding_level->level_chain;
1093 if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
1094 /* Skip the ctor/dtor cleanup level. */
1095 b = b->level_chain;
1097 /* ARM $8.3 */
1098 if (b->kind == sk_function_parms)
1100 error ("declaration of %q#D shadows a parameter", x);
1101 nowarn = true;
1105 /* The local structure or class can't use parameters of
1106 the containing function anyway. */
1107 if (DECL_CONTEXT (oldlocal) != current_function_decl)
1109 cp_binding_level *scope = current_binding_level;
1110 tree context = DECL_CONTEXT (oldlocal);
1111 for (; scope; scope = scope->level_chain)
1113 if (scope->kind == sk_function_parms
1114 && scope->this_entity == context)
1115 break;
1116 if (scope->kind == sk_class
1117 && !LAMBDA_TYPE_P (scope->this_entity))
1119 nowarn = true;
1120 break;
1124 /* Error if redeclaring a local declared in a
1125 for-init-statement or in the condition of an if or
1126 switch statement when the new declaration is in the
1127 outermost block of the controlled statement.
1128 Redeclaring a variable from a for or while condition is
1129 detected elsewhere. */
1130 else if (TREE_CODE (oldlocal) == VAR_DECL
1131 && oldscope == current_binding_level->level_chain
1132 && (oldscope->kind == sk_cond
1133 || oldscope->kind == sk_for))
1135 error ("redeclaration of %q#D", x);
1136 error ("%q+#D previously declared here", oldlocal);
1139 if (warn_shadow && !nowarn)
1141 if (TREE_CODE (oldlocal) == PARM_DECL)
1142 warning_at (input_location, OPT_Wshadow,
1143 "declaration of %q#D shadows a parameter", x);
1144 else if (is_capture_proxy (oldlocal))
1145 warning_at (input_location, OPT_Wshadow,
1146 "declaration of %qD shadows a lambda capture",
1148 else
1149 warning_at (input_location, OPT_Wshadow,
1150 "declaration of %qD shadows a previous local",
1152 warning_at (DECL_SOURCE_LOCATION (oldlocal), OPT_Wshadow,
1153 "shadowed declaration is here");
1157 /* Maybe warn if shadowing something else. */
1158 else if (warn_shadow && !DECL_EXTERNAL (x)
1159 /* No shadow warnings for internally generated vars unless
1160 it's an implicit typedef (see create_implicit_typedef
1161 in decl.c). */
1162 && (! DECL_ARTIFICIAL (x) || DECL_IMPLICIT_TYPEDEF_P (x))
1163 /* No shadow warnings for vars made for inlining. */
1164 && ! DECL_FROM_INLINE (x))
1166 tree member;
1168 if (current_class_ptr)
1169 member = lookup_member (current_class_type,
1170 name,
1171 /*protect=*/0,
1172 /*want_type=*/false,
1173 tf_warning_or_error);
1174 else
1175 member = NULL_TREE;
1177 if (member && !TREE_STATIC (member))
1179 /* Location of previous decl is not useful in this case. */
1180 warning (OPT_Wshadow, "declaration of %qD shadows a member of 'this'",
1183 else if (oldglobal != NULL_TREE
1184 && (TREE_CODE (oldglobal) == VAR_DECL
1185 /* If the old decl is a type decl, only warn if the
1186 old decl is an explicit typedef or if both the
1187 old and new decls are type decls. */
1188 || (TREE_CODE (oldglobal) == TYPE_DECL
1189 && (!DECL_ARTIFICIAL (oldglobal)
1190 || TREE_CODE (x) == TYPE_DECL))))
1191 /* XXX shadow warnings in outer-more namespaces */
1193 warning_at (input_location, OPT_Wshadow,
1194 "declaration of %qD shadows a global declaration", x);
1195 warning_at (DECL_SOURCE_LOCATION (oldglobal), OPT_Wshadow,
1196 "shadowed declaration is here");
1201 if (TREE_CODE (x) == VAR_DECL)
1202 maybe_register_incomplete_var (x);
1205 if (need_new_binding)
1206 add_decl_to_level (x,
1207 DECL_NAMESPACE_SCOPE_P (x)
1208 ? NAMESPACE_LEVEL (CP_DECL_CONTEXT (x))
1209 : current_binding_level);
1211 return x;
1214 /* Wrapper for pushdecl_maybe_friend_1. */
1216 tree
1217 pushdecl_maybe_friend (tree x, bool is_friend)
1219 tree ret;
1220 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
1221 ret = pushdecl_maybe_friend_1 (x, is_friend);
1222 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
1223 return ret;
1226 /* Record a decl-node X as belonging to the current lexical scope. */
1228 tree
1229 pushdecl (tree x)
1231 return pushdecl_maybe_friend (x, false);
1234 /* Enter DECL into the symbol table, if that's appropriate. Returns
1235 DECL, or a modified version thereof. */
1237 tree
1238 maybe_push_decl (tree decl)
1240 tree type = TREE_TYPE (decl);
1242 /* Add this decl to the current binding level, but not if it comes
1243 from another scope, e.g. a static member variable. TEM may equal
1244 DECL or it may be a previous decl of the same name. */
1245 if (decl == error_mark_node
1246 || (TREE_CODE (decl) != PARM_DECL
1247 && DECL_CONTEXT (decl) != NULL_TREE
1248 /* Definitions of namespace members outside their namespace are
1249 possible. */
1250 && !DECL_NAMESPACE_SCOPE_P (decl))
1251 || (TREE_CODE (decl) == TEMPLATE_DECL && !namespace_bindings_p ())
1252 || type == unknown_type_node
1253 /* The declaration of a template specialization does not affect
1254 the functions available for overload resolution, so we do not
1255 call pushdecl. */
1256 || (TREE_CODE (decl) == FUNCTION_DECL
1257 && DECL_TEMPLATE_SPECIALIZATION (decl)))
1258 return decl;
1259 else
1260 return pushdecl (decl);
1263 /* Bind DECL to ID in the current_binding_level, assumed to be a local
1264 binding level. If PUSH_USING is set in FLAGS, we know that DECL
1265 doesn't really belong to this binding level, that it got here
1266 through a using-declaration. */
1268 void
1269 push_local_binding (tree id, tree decl, int flags)
1271 cp_binding_level *b;
1273 /* Skip over any local classes. This makes sense if we call
1274 push_local_binding with a friend decl of a local class. */
1275 b = innermost_nonclass_level ();
1277 if (lookup_name_innermost_nonclass_level (id))
1279 /* Supplement the existing binding. */
1280 if (!supplement_binding (IDENTIFIER_BINDING (id), decl))
1281 /* It didn't work. Something else must be bound at this
1282 level. Do not add DECL to the list of things to pop
1283 later. */
1284 return;
1286 else
1287 /* Create a new binding. */
1288 push_binding (id, decl, b);
1290 if (TREE_CODE (decl) == OVERLOAD || (flags & PUSH_USING))
1291 /* We must put the OVERLOAD into a TREE_LIST since the
1292 TREE_CHAIN of an OVERLOAD is already used. Similarly for
1293 decls that got here through a using-declaration. */
1294 decl = build_tree_list (NULL_TREE, decl);
1296 /* And put DECL on the list of things declared by the current
1297 binding level. */
1298 add_decl_to_level (decl, b);
1301 /* Check to see whether or not DECL is a variable that would have been
1302 in scope under the ARM, but is not in scope under the ANSI/ISO
1303 standard. If so, issue an error message. If name lookup would
1304 work in both cases, but return a different result, this function
1305 returns the result of ANSI/ISO lookup. Otherwise, it returns
1306 DECL. */
1308 tree
1309 check_for_out_of_scope_variable (tree decl)
1311 tree shadowed;
1313 /* We only care about out of scope variables. */
1314 if (!(TREE_CODE (decl) == VAR_DECL && DECL_DEAD_FOR_LOCAL (decl)))
1315 return decl;
1317 shadowed = DECL_HAS_SHADOWED_FOR_VAR_P (decl)
1318 ? DECL_SHADOWED_FOR_VAR (decl) : NULL_TREE ;
1319 while (shadowed != NULL_TREE && TREE_CODE (shadowed) == VAR_DECL
1320 && DECL_DEAD_FOR_LOCAL (shadowed))
1321 shadowed = DECL_HAS_SHADOWED_FOR_VAR_P (shadowed)
1322 ? DECL_SHADOWED_FOR_VAR (shadowed) : NULL_TREE;
1323 if (!shadowed)
1324 shadowed = IDENTIFIER_NAMESPACE_VALUE (DECL_NAME (decl));
1325 if (shadowed)
1327 if (!DECL_ERROR_REPORTED (decl))
1329 warning (0, "name lookup of %qD changed", DECL_NAME (decl));
1330 warning (0, " matches this %q+D under ISO standard rules",
1331 shadowed);
1332 warning (0, " matches this %q+D under old rules", decl);
1333 DECL_ERROR_REPORTED (decl) = 1;
1335 return shadowed;
1338 /* If we have already complained about this declaration, there's no
1339 need to do it again. */
1340 if (DECL_ERROR_REPORTED (decl))
1341 return decl;
1343 DECL_ERROR_REPORTED (decl) = 1;
1345 if (TREE_TYPE (decl) == error_mark_node)
1346 return decl;
1348 if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
1350 error ("name lookup of %qD changed for ISO %<for%> scoping",
1351 DECL_NAME (decl));
1352 error (" cannot use obsolete binding at %q+D because "
1353 "it has a destructor", decl);
1354 return error_mark_node;
1356 else
1358 permerror (input_location, "name lookup of %qD changed for ISO %<for%> scoping",
1359 DECL_NAME (decl));
1360 if (flag_permissive)
1361 permerror (input_location, " using obsolete binding at %q+D", decl);
1362 else
1364 static bool hint;
1365 if (!hint)
1367 inform (input_location, "(if you use %<-fpermissive%> G++ will accept your code)");
1368 hint = true;
1373 return decl;
1376 /* true means unconditionally make a BLOCK for the next level pushed. */
1378 static bool keep_next_level_flag;
1380 static int binding_depth = 0;
1382 static void
1383 indent (int depth)
1385 int i;
1387 for (i = 0; i < depth * 2; i++)
1388 putc (' ', stderr);
1391 /* Return a string describing the kind of SCOPE we have. */
1392 static const char *
1393 cp_binding_level_descriptor (cp_binding_level *scope)
1395 /* The order of this table must match the "scope_kind"
1396 enumerators. */
1397 static const char* scope_kind_names[] = {
1398 "block-scope",
1399 "cleanup-scope",
1400 "try-scope",
1401 "catch-scope",
1402 "for-scope",
1403 "function-parameter-scope",
1404 "class-scope",
1405 "namespace-scope",
1406 "template-parameter-scope",
1407 "template-explicit-spec-scope"
1409 const scope_kind kind = scope->explicit_spec_p
1410 ? sk_template_spec : scope->kind;
1412 return scope_kind_names[kind];
1415 /* Output a debugging information about SCOPE when performing
1416 ACTION at LINE. */
1417 static void
1418 cp_binding_level_debug (cp_binding_level *scope, int line, const char *action)
1420 const char *desc = cp_binding_level_descriptor (scope);
1421 if (scope->this_entity)
1422 verbatim ("%s %s(%E) %p %d\n", action, desc,
1423 scope->this_entity, (void *) scope, line);
1424 else
1425 verbatim ("%s %s %p %d\n", action, desc, (void *) scope, line);
1428 /* Return the estimated initial size of the hashtable of a NAMESPACE
1429 scope. */
1431 static inline size_t
1432 namespace_scope_ht_size (tree ns)
1434 tree name = DECL_NAME (ns);
1436 return name == std_identifier
1437 ? NAMESPACE_STD_HT_SIZE
1438 : (name == global_scope_name
1439 ? GLOBAL_SCOPE_HT_SIZE
1440 : NAMESPACE_ORDINARY_HT_SIZE);
1443 /* A chain of binding_level structures awaiting reuse. */
1445 static GTY((deletable)) cp_binding_level *free_binding_level;
1447 /* Insert SCOPE as the innermost binding level. */
1449 void
1450 push_binding_level (cp_binding_level *scope)
1452 /* Add it to the front of currently active scopes stack. */
1453 scope->level_chain = current_binding_level;
1454 current_binding_level = scope;
1455 keep_next_level_flag = false;
1457 if (ENABLE_SCOPE_CHECKING)
1459 scope->binding_depth = binding_depth;
1460 indent (binding_depth);
1461 cp_binding_level_debug (scope, input_line, "push");
1462 binding_depth++;
1466 /* Create a new KIND scope and make it the top of the active scopes stack.
1467 ENTITY is the scope of the associated C++ entity (namespace, class,
1468 function, C++0x enumeration); it is NULL otherwise. */
1470 cp_binding_level *
1471 begin_scope (scope_kind kind, tree entity)
1473 cp_binding_level *scope;
1475 /* Reuse or create a struct for this binding level. */
1476 if (!ENABLE_SCOPE_CHECKING && free_binding_level)
1478 scope = free_binding_level;
1479 memset (scope, 0, sizeof (cp_binding_level));
1480 free_binding_level = scope->level_chain;
1482 else
1483 scope = ggc_alloc_cleared_cp_binding_level ();
1485 scope->this_entity = entity;
1486 scope->more_cleanups_ok = true;
1487 switch (kind)
1489 case sk_cleanup:
1490 scope->keep = true;
1491 break;
1493 case sk_template_spec:
1494 scope->explicit_spec_p = true;
1495 kind = sk_template_parms;
1496 /* Fall through. */
1497 case sk_template_parms:
1498 case sk_block:
1499 case sk_try:
1500 case sk_catch:
1501 case sk_for:
1502 case sk_cond:
1503 case sk_class:
1504 case sk_scoped_enum:
1505 case sk_function_parms:
1506 case sk_omp:
1507 scope->keep = keep_next_level_flag;
1508 break;
1510 case sk_namespace:
1511 NAMESPACE_LEVEL (entity) = scope;
1512 vec_alloc (scope->static_decls,
1513 (DECL_NAME (entity) == std_identifier
1514 || DECL_NAME (entity) == global_scope_name) ? 200 : 10);
1515 break;
1517 default:
1518 /* Should not happen. */
1519 gcc_unreachable ();
1520 break;
1522 scope->kind = kind;
1524 push_binding_level (scope);
1526 return scope;
1529 /* We're about to leave current scope. Pop the top of the stack of
1530 currently active scopes. Return the enclosing scope, now active. */
1532 cp_binding_level *
1533 leave_scope (void)
1535 cp_binding_level *scope = current_binding_level;
1537 if (scope->kind == sk_namespace && class_binding_level)
1538 current_binding_level = class_binding_level;
1540 /* We cannot leave a scope, if there are none left. */
1541 if (NAMESPACE_LEVEL (global_namespace))
1542 gcc_assert (!global_scope_p (scope));
1544 if (ENABLE_SCOPE_CHECKING)
1546 indent (--binding_depth);
1547 cp_binding_level_debug (scope, input_line, "leave");
1550 /* Move one nesting level up. */
1551 current_binding_level = scope->level_chain;
1553 /* Namespace-scopes are left most probably temporarily, not
1554 completely; they can be reopened later, e.g. in namespace-extension
1555 or any name binding activity that requires us to resume a
1556 namespace. For classes, we cache some binding levels. For other
1557 scopes, we just make the structure available for reuse. */
1558 if (scope->kind != sk_namespace
1559 && scope->kind != sk_class)
1561 scope->level_chain = free_binding_level;
1562 gcc_assert (!ENABLE_SCOPE_CHECKING
1563 || scope->binding_depth == binding_depth);
1564 free_binding_level = scope;
1567 /* Find the innermost enclosing class scope, and reset
1568 CLASS_BINDING_LEVEL appropriately. */
1569 if (scope->kind == sk_class)
1571 class_binding_level = NULL;
1572 for (scope = current_binding_level; scope; scope = scope->level_chain)
1573 if (scope->kind == sk_class)
1575 class_binding_level = scope;
1576 break;
1580 return current_binding_level;
1583 static void
1584 resume_scope (cp_binding_level* b)
1586 /* Resuming binding levels is meant only for namespaces,
1587 and those cannot nest into classes. */
1588 gcc_assert (!class_binding_level);
1589 /* Also, resuming a non-directly nested namespace is a no-no. */
1590 gcc_assert (b->level_chain == current_binding_level);
1591 current_binding_level = b;
1592 if (ENABLE_SCOPE_CHECKING)
1594 b->binding_depth = binding_depth;
1595 indent (binding_depth);
1596 cp_binding_level_debug (b, input_line, "resume");
1597 binding_depth++;
1601 /* Return the innermost binding level that is not for a class scope. */
1603 static cp_binding_level *
1604 innermost_nonclass_level (void)
1606 cp_binding_level *b;
1608 b = current_binding_level;
1609 while (b->kind == sk_class)
1610 b = b->level_chain;
1612 return b;
1615 /* We're defining an object of type TYPE. If it needs a cleanup, but
1616 we're not allowed to add any more objects with cleanups to the current
1617 scope, create a new binding level. */
1619 void
1620 maybe_push_cleanup_level (tree type)
1622 if (type != error_mark_node
1623 && TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type)
1624 && current_binding_level->more_cleanups_ok == 0)
1626 begin_scope (sk_cleanup, NULL);
1627 current_binding_level->statement_list = push_stmt_list ();
1631 /* Return true if we are in the global binding level. */
1633 bool
1634 global_bindings_p (void)
1636 return global_scope_p (current_binding_level);
1639 /* True if we are currently in a toplevel binding level. This
1640 means either the global binding level or a namespace in a toplevel
1641 binding level. Since there are no non-toplevel namespace levels,
1642 this really means any namespace or template parameter level. We
1643 also include a class whose context is toplevel. */
1645 bool
1646 toplevel_bindings_p (void)
1648 cp_binding_level *b = innermost_nonclass_level ();
1650 return b->kind == sk_namespace || b->kind == sk_template_parms;
1653 /* True if this is a namespace scope, or if we are defining a class
1654 which is itself at namespace scope, or whose enclosing class is
1655 such a class, etc. */
1657 bool
1658 namespace_bindings_p (void)
1660 cp_binding_level *b = innermost_nonclass_level ();
1662 return b->kind == sk_namespace;
1665 /* True if the innermost non-class scope is a block scope. */
1667 bool
1668 local_bindings_p (void)
1670 cp_binding_level *b = innermost_nonclass_level ();
1671 return b->kind < sk_function_parms || b->kind == sk_omp;
1674 /* True if the current level needs to have a BLOCK made. */
1676 bool
1677 kept_level_p (void)
1679 return (current_binding_level->blocks != NULL_TREE
1680 || current_binding_level->keep
1681 || current_binding_level->kind == sk_cleanup
1682 || current_binding_level->names != NULL_TREE
1683 || current_binding_level->using_directives);
1686 /* Returns the kind of the innermost scope. */
1688 scope_kind
1689 innermost_scope_kind (void)
1691 return current_binding_level->kind;
1694 /* Returns true if this scope was created to store template parameters. */
1696 bool
1697 template_parm_scope_p (void)
1699 return innermost_scope_kind () == sk_template_parms;
1702 /* If KEEP is true, make a BLOCK node for the next binding level,
1703 unconditionally. Otherwise, use the normal logic to decide whether
1704 or not to create a BLOCK. */
1706 void
1707 keep_next_level (bool keep)
1709 keep_next_level_flag = keep;
1712 /* Return the list of declarations of the current level.
1713 Note that this list is in reverse order unless/until
1714 you nreverse it; and when you do nreverse it, you must
1715 store the result back using `storedecls' or you will lose. */
1717 tree
1718 getdecls (void)
1720 return current_binding_level->names;
1723 /* Return how many function prototypes we are currently nested inside. */
1726 function_parm_depth (void)
1728 int level = 0;
1729 cp_binding_level *b;
1731 for (b = current_binding_level;
1732 b->kind == sk_function_parms;
1733 b = b->level_chain)
1734 ++level;
1736 return level;
1739 /* For debugging. */
1740 static int no_print_functions = 0;
1741 static int no_print_builtins = 0;
1743 static void
1744 print_binding_level (cp_binding_level* lvl)
1746 tree t;
1747 int i = 0, len;
1748 fprintf (stderr, " blocks=%p", (void *) lvl->blocks);
1749 if (lvl->more_cleanups_ok)
1750 fprintf (stderr, " more-cleanups-ok");
1751 if (lvl->have_cleanups)
1752 fprintf (stderr, " have-cleanups");
1753 fprintf (stderr, "\n");
1754 if (lvl->names)
1756 fprintf (stderr, " names:\t");
1757 /* We can probably fit 3 names to a line? */
1758 for (t = lvl->names; t; t = TREE_CHAIN (t))
1760 if (no_print_functions && (TREE_CODE (t) == FUNCTION_DECL))
1761 continue;
1762 if (no_print_builtins
1763 && (TREE_CODE (t) == TYPE_DECL)
1764 && DECL_IS_BUILTIN (t))
1765 continue;
1767 /* Function decls tend to have longer names. */
1768 if (TREE_CODE (t) == FUNCTION_DECL)
1769 len = 3;
1770 else
1771 len = 2;
1772 i += len;
1773 if (i > 6)
1775 fprintf (stderr, "\n\t");
1776 i = len;
1778 print_node_brief (stderr, "", t, 0);
1779 if (t == error_mark_node)
1780 break;
1782 if (i)
1783 fprintf (stderr, "\n");
1785 if (vec_safe_length (lvl->class_shadowed))
1787 size_t i;
1788 cp_class_binding *b;
1789 fprintf (stderr, " class-shadowed:");
1790 FOR_EACH_VEC_ELT (*lvl->class_shadowed, i, b)
1791 fprintf (stderr, " %s ", IDENTIFIER_POINTER (b->identifier));
1792 fprintf (stderr, "\n");
1794 if (lvl->type_shadowed)
1796 fprintf (stderr, " type-shadowed:");
1797 for (t = lvl->type_shadowed; t; t = TREE_CHAIN (t))
1799 fprintf (stderr, " %s ", IDENTIFIER_POINTER (TREE_PURPOSE (t)));
1801 fprintf (stderr, "\n");
1805 void
1806 print_other_binding_stack (cp_binding_level *stack)
1808 cp_binding_level *level;
1809 for (level = stack; !global_scope_p (level); level = level->level_chain)
1811 fprintf (stderr, "binding level %p\n", (void *) level);
1812 print_binding_level (level);
1816 void
1817 print_binding_stack (void)
1819 cp_binding_level *b;
1820 fprintf (stderr, "current_binding_level=%p\n"
1821 "class_binding_level=%p\n"
1822 "NAMESPACE_LEVEL (global_namespace)=%p\n",
1823 (void *) current_binding_level, (void *) class_binding_level,
1824 (void *) NAMESPACE_LEVEL (global_namespace));
1825 if (class_binding_level)
1827 for (b = class_binding_level; b; b = b->level_chain)
1828 if (b == current_binding_level)
1829 break;
1830 if (b)
1831 b = class_binding_level;
1832 else
1833 b = current_binding_level;
1835 else
1836 b = current_binding_level;
1837 print_other_binding_stack (b);
1838 fprintf (stderr, "global:\n");
1839 print_binding_level (NAMESPACE_LEVEL (global_namespace));
1842 /* Return the type associated with ID. */
1844 static tree
1845 identifier_type_value_1 (tree id)
1847 /* There is no type with that name, anywhere. */
1848 if (REAL_IDENTIFIER_TYPE_VALUE (id) == NULL_TREE)
1849 return NULL_TREE;
1850 /* This is not the type marker, but the real thing. */
1851 if (REAL_IDENTIFIER_TYPE_VALUE (id) != global_type_node)
1852 return REAL_IDENTIFIER_TYPE_VALUE (id);
1853 /* Have to search for it. It must be on the global level, now.
1854 Ask lookup_name not to return non-types. */
1855 id = lookup_name_real (id, 2, 1, /*block_p=*/true, 0, 0);
1856 if (id)
1857 return TREE_TYPE (id);
1858 return NULL_TREE;
1861 /* Wrapper for identifier_type_value_1. */
1863 tree
1864 identifier_type_value (tree id)
1866 tree ret;
1867 timevar_start (TV_NAME_LOOKUP);
1868 ret = identifier_type_value_1 (id);
1869 timevar_stop (TV_NAME_LOOKUP);
1870 return ret;
1874 /* Return the IDENTIFIER_GLOBAL_VALUE of T, for use in common code, since
1875 the definition of IDENTIFIER_GLOBAL_VALUE is different for C and C++. */
1877 tree
1878 identifier_global_value (tree t)
1880 return IDENTIFIER_GLOBAL_VALUE (t);
1883 /* Push a definition of struct, union or enum tag named ID. into
1884 binding_level B. DECL is a TYPE_DECL for the type. We assume that
1885 the tag ID is not already defined. */
1887 static void
1888 set_identifier_type_value_with_scope (tree id, tree decl, cp_binding_level *b)
1890 tree type;
1892 if (b->kind != sk_namespace)
1894 /* Shadow the marker, not the real thing, so that the marker
1895 gets restored later. */
1896 tree old_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
1897 b->type_shadowed
1898 = tree_cons (id, old_type_value, b->type_shadowed);
1899 type = decl ? TREE_TYPE (decl) : NULL_TREE;
1900 TREE_TYPE (b->type_shadowed) = type;
1902 else
1904 cxx_binding *binding =
1905 binding_for_name (NAMESPACE_LEVEL (current_namespace), id);
1906 gcc_assert (decl);
1907 if (binding->value)
1908 supplement_binding (binding, decl);
1909 else
1910 binding->value = decl;
1912 /* Store marker instead of real type. */
1913 type = global_type_node;
1915 SET_IDENTIFIER_TYPE_VALUE (id, type);
1918 /* As set_identifier_type_value_with_scope, but using
1919 current_binding_level. */
1921 void
1922 set_identifier_type_value (tree id, tree decl)
1924 set_identifier_type_value_with_scope (id, decl, current_binding_level);
1927 /* Return the name for the constructor (or destructor) for the
1928 specified class TYPE. When given a template, this routine doesn't
1929 lose the specialization. */
1931 static inline tree
1932 constructor_name_full (tree type)
1934 return TYPE_IDENTIFIER (TYPE_MAIN_VARIANT (type));
1937 /* Return the name for the constructor (or destructor) for the
1938 specified class. When given a template, return the plain
1939 unspecialized name. */
1941 tree
1942 constructor_name (tree type)
1944 tree name;
1945 name = constructor_name_full (type);
1946 if (IDENTIFIER_TEMPLATE (name))
1947 name = IDENTIFIER_TEMPLATE (name);
1948 return name;
1951 /* Returns TRUE if NAME is the name for the constructor for TYPE,
1952 which must be a class type. */
1954 bool
1955 constructor_name_p (tree name, tree type)
1957 tree ctor_name;
1959 gcc_assert (MAYBE_CLASS_TYPE_P (type));
1961 if (!name)
1962 return false;
1964 if (TREE_CODE (name) != IDENTIFIER_NODE)
1965 return false;
1967 /* These don't have names. */
1968 if (TREE_CODE (type) == DECLTYPE_TYPE
1969 || TREE_CODE (type) == TYPEOF_TYPE)
1970 return false;
1972 ctor_name = constructor_name_full (type);
1973 if (name == ctor_name)
1974 return true;
1975 if (IDENTIFIER_TEMPLATE (ctor_name)
1976 && name == IDENTIFIER_TEMPLATE (ctor_name))
1977 return true;
1978 return false;
1981 /* Counter used to create anonymous type names. */
1983 static GTY(()) int anon_cnt;
1985 /* Return an IDENTIFIER which can be used as a name for
1986 anonymous structs and unions. */
1988 tree
1989 make_anon_name (void)
1991 char buf[32];
1993 sprintf (buf, ANON_AGGRNAME_FORMAT, anon_cnt++);
1994 return get_identifier (buf);
1997 /* This code is practically identical to that for creating
1998 anonymous names, but is just used for lambdas instead. This isn't really
1999 necessary, but it's convenient to avoid treating lambdas like other
2000 anonymous types. */
2002 static GTY(()) int lambda_cnt = 0;
2004 tree
2005 make_lambda_name (void)
2007 char buf[32];
2009 sprintf (buf, LAMBDANAME_FORMAT, lambda_cnt++);
2010 return get_identifier (buf);
2013 /* Return (from the stack of) the BINDING, if any, established at SCOPE. */
2015 static inline cxx_binding *
2016 find_binding (cp_binding_level *scope, cxx_binding *binding)
2018 for (; binding != NULL; binding = binding->previous)
2019 if (binding->scope == scope)
2020 return binding;
2022 return (cxx_binding *)0;
2025 /* Return the binding for NAME in SCOPE, if any. Otherwise, return NULL. */
2027 static inline cxx_binding *
2028 cp_binding_level_find_binding_for_name (cp_binding_level *scope, tree name)
2030 cxx_binding *b = IDENTIFIER_NAMESPACE_BINDINGS (name);
2031 if (b)
2033 /* Fold-in case where NAME is used only once. */
2034 if (scope == b->scope && b->previous == NULL)
2035 return b;
2036 return find_binding (scope, b);
2038 return NULL;
2041 /* Always returns a binding for name in scope. If no binding is
2042 found, make a new one. */
2044 static cxx_binding *
2045 binding_for_name (cp_binding_level *scope, tree name)
2047 cxx_binding *result;
2049 result = cp_binding_level_find_binding_for_name (scope, name);
2050 if (result)
2051 return result;
2052 /* Not found, make a new one. */
2053 result = cxx_binding_make (NULL, NULL);
2054 result->previous = IDENTIFIER_NAMESPACE_BINDINGS (name);
2055 result->scope = scope;
2056 result->is_local = false;
2057 result->value_is_inherited = false;
2058 IDENTIFIER_NAMESPACE_BINDINGS (name) = result;
2059 return result;
2062 /* Walk through the bindings associated to the name of FUNCTION,
2063 and return the first declaration of a function with a
2064 "C" linkage specification, a.k.a 'extern "C"'.
2065 This function looks for the binding, regardless of which scope it
2066 has been defined in. It basically looks in all the known scopes.
2067 Note that this function does not lookup for bindings of builtin functions
2068 or for functions declared in system headers. */
2069 static tree
2070 lookup_extern_c_fun_in_all_ns (tree function)
2072 tree name;
2073 cxx_binding *iter;
2075 gcc_assert (function && TREE_CODE (function) == FUNCTION_DECL);
2077 name = DECL_NAME (function);
2078 gcc_assert (name && TREE_CODE (name) == IDENTIFIER_NODE);
2080 for (iter = IDENTIFIER_NAMESPACE_BINDINGS (name);
2081 iter;
2082 iter = iter->previous)
2084 tree ovl;
2085 for (ovl = iter->value; ovl; ovl = OVL_NEXT (ovl))
2087 tree decl = OVL_CURRENT (ovl);
2088 if (decl
2089 && TREE_CODE (decl) == FUNCTION_DECL
2090 && DECL_EXTERN_C_P (decl)
2091 && !DECL_ARTIFICIAL (decl))
2093 return decl;
2097 return NULL;
2100 /* Returns a list of C-linkage decls with the name NAME. */
2102 tree
2103 c_linkage_bindings (tree name)
2105 tree decls = NULL_TREE;
2106 cxx_binding *iter;
2108 for (iter = IDENTIFIER_NAMESPACE_BINDINGS (name);
2109 iter;
2110 iter = iter->previous)
2112 tree ovl;
2113 for (ovl = iter->value; ovl; ovl = OVL_NEXT (ovl))
2115 tree decl = OVL_CURRENT (ovl);
2116 if (decl
2117 && DECL_EXTERN_C_P (decl)
2118 && !DECL_ARTIFICIAL (decl))
2120 if (decls == NULL_TREE)
2121 decls = decl;
2122 else
2123 decls = tree_cons (NULL_TREE, decl, decls);
2127 return decls;
2130 /* Insert another USING_DECL into the current binding level, returning
2131 this declaration. If this is a redeclaration, do nothing, and
2132 return NULL_TREE if this not in namespace scope (in namespace
2133 scope, a using decl might extend any previous bindings). */
2135 static tree
2136 push_using_decl_1 (tree scope, tree name)
2138 tree decl;
2140 gcc_assert (TREE_CODE (scope) == NAMESPACE_DECL);
2141 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
2142 for (decl = current_binding_level->usings; decl; decl = DECL_CHAIN (decl))
2143 if (USING_DECL_SCOPE (decl) == scope && DECL_NAME (decl) == name)
2144 break;
2145 if (decl)
2146 return namespace_bindings_p () ? decl : NULL_TREE;
2147 decl = build_lang_decl (USING_DECL, name, NULL_TREE);
2148 USING_DECL_SCOPE (decl) = scope;
2149 DECL_CHAIN (decl) = current_binding_level->usings;
2150 current_binding_level->usings = decl;
2151 return decl;
2154 /* Wrapper for push_using_decl_1. */
2156 static tree
2157 push_using_decl (tree scope, tree name)
2159 tree ret;
2160 timevar_start (TV_NAME_LOOKUP);
2161 ret = push_using_decl_1 (scope, name);
2162 timevar_stop (TV_NAME_LOOKUP);
2163 return ret;
2166 /* Same as pushdecl, but define X in binding-level LEVEL. We rely on the
2167 caller to set DECL_CONTEXT properly.
2169 Note that this must only be used when X will be the new innermost
2170 binding for its name, as we tack it onto the front of IDENTIFIER_BINDING
2171 without checking to see if the current IDENTIFIER_BINDING comes from a
2172 closer binding level than LEVEL. */
2174 static tree
2175 pushdecl_with_scope_1 (tree x, cp_binding_level *level, bool is_friend)
2177 cp_binding_level *b;
2178 tree function_decl = current_function_decl;
2180 current_function_decl = NULL_TREE;
2181 if (level->kind == sk_class)
2183 b = class_binding_level;
2184 class_binding_level = level;
2185 pushdecl_class_level (x);
2186 class_binding_level = b;
2188 else
2190 b = current_binding_level;
2191 current_binding_level = level;
2192 x = pushdecl_maybe_friend (x, is_friend);
2193 current_binding_level = b;
2195 current_function_decl = function_decl;
2196 return x;
2199 /* Wrapper for pushdecl_with_scope_1. */
2201 tree
2202 pushdecl_with_scope (tree x, cp_binding_level *level, bool is_friend)
2204 tree ret;
2205 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
2206 ret = pushdecl_with_scope_1 (x, level, is_friend);
2207 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
2208 return ret;
2212 /* DECL is a FUNCTION_DECL for a non-member function, which may have
2213 other definitions already in place. We get around this by making
2214 the value of the identifier point to a list of all the things that
2215 want to be referenced by that name. It is then up to the users of
2216 that name to decide what to do with that list.
2218 DECL may also be a TEMPLATE_DECL, with a FUNCTION_DECL in its
2219 DECL_TEMPLATE_RESULT. It is dealt with the same way.
2221 FLAGS is a bitwise-or of the following values:
2222 PUSH_LOCAL: Bind DECL in the current scope, rather than at
2223 namespace scope.
2224 PUSH_USING: DECL is being pushed as the result of a using
2225 declaration.
2227 IS_FRIEND is true if this is a friend declaration.
2229 The value returned may be a previous declaration if we guessed wrong
2230 about what language DECL should belong to (C or C++). Otherwise,
2231 it's always DECL (and never something that's not a _DECL). */
2233 static tree
2234 push_overloaded_decl_1 (tree decl, int flags, bool is_friend)
2236 tree name = DECL_NAME (decl);
2237 tree old;
2238 tree new_binding;
2239 int doing_global = (namespace_bindings_p () || !(flags & PUSH_LOCAL));
2241 if (doing_global)
2242 old = namespace_binding (name, DECL_CONTEXT (decl));
2243 else
2244 old = lookup_name_innermost_nonclass_level (name);
2246 if (old)
2248 if (TREE_CODE (old) == TYPE_DECL && DECL_ARTIFICIAL (old))
2250 tree t = TREE_TYPE (old);
2251 if (MAYBE_CLASS_TYPE_P (t) && warn_shadow
2252 && (! DECL_IN_SYSTEM_HEADER (decl)
2253 || ! DECL_IN_SYSTEM_HEADER (old)))
2254 warning (OPT_Wshadow, "%q#D hides constructor for %q#T", decl, t);
2255 old = NULL_TREE;
2257 else if (is_overloaded_fn (old))
2259 tree tmp;
2261 for (tmp = old; tmp; tmp = OVL_NEXT (tmp))
2263 tree fn = OVL_CURRENT (tmp);
2264 tree dup;
2266 if (TREE_CODE (tmp) == OVERLOAD && OVL_USED (tmp)
2267 && !(flags & PUSH_USING)
2268 && compparms (TYPE_ARG_TYPES (TREE_TYPE (fn)),
2269 TYPE_ARG_TYPES (TREE_TYPE (decl)))
2270 && ! decls_match (fn, decl))
2271 error ("%q#D conflicts with previous using declaration %q#D",
2272 decl, fn);
2274 dup = duplicate_decls (decl, fn, is_friend);
2275 /* If DECL was a redeclaration of FN -- even an invalid
2276 one -- pass that information along to our caller. */
2277 if (dup == fn || dup == error_mark_node)
2278 return dup;
2281 /* We don't overload implicit built-ins. duplicate_decls()
2282 may fail to merge the decls if the new decl is e.g. a
2283 template function. */
2284 if (TREE_CODE (old) == FUNCTION_DECL
2285 && DECL_ANTICIPATED (old)
2286 && !DECL_HIDDEN_FRIEND_P (old))
2287 old = NULL;
2289 else if (old == error_mark_node)
2290 /* Ignore the undefined symbol marker. */
2291 old = NULL_TREE;
2292 else
2294 error ("previous non-function declaration %q+#D", old);
2295 error ("conflicts with function declaration %q#D", decl);
2296 return decl;
2300 if (old || TREE_CODE (decl) == TEMPLATE_DECL
2301 /* If it's a using declaration, we always need to build an OVERLOAD,
2302 because it's the only way to remember that the declaration comes
2303 from 'using', and have the lookup behave correctly. */
2304 || (flags & PUSH_USING))
2306 if (old && TREE_CODE (old) != OVERLOAD)
2307 new_binding = ovl_cons (decl, ovl_cons (old, NULL_TREE));
2308 else
2309 new_binding = ovl_cons (decl, old);
2310 if (flags & PUSH_USING)
2311 OVL_USED (new_binding) = 1;
2313 else
2314 /* NAME is not ambiguous. */
2315 new_binding = decl;
2317 if (doing_global)
2318 set_namespace_binding (name, current_namespace, new_binding);
2319 else
2321 /* We only create an OVERLOAD if there was a previous binding at
2322 this level, or if decl is a template. In the former case, we
2323 need to remove the old binding and replace it with the new
2324 binding. We must also run through the NAMES on the binding
2325 level where the name was bound to update the chain. */
2327 if (TREE_CODE (new_binding) == OVERLOAD && old)
2329 tree *d;
2331 for (d = &IDENTIFIER_BINDING (name)->scope->names;
2333 d = &TREE_CHAIN (*d))
2334 if (*d == old
2335 || (TREE_CODE (*d) == TREE_LIST
2336 && TREE_VALUE (*d) == old))
2338 if (TREE_CODE (*d) == TREE_LIST)
2339 /* Just replace the old binding with the new. */
2340 TREE_VALUE (*d) = new_binding;
2341 else
2342 /* Build a TREE_LIST to wrap the OVERLOAD. */
2343 *d = tree_cons (NULL_TREE, new_binding,
2344 TREE_CHAIN (*d));
2346 /* And update the cxx_binding node. */
2347 IDENTIFIER_BINDING (name)->value = new_binding;
2348 return decl;
2351 /* We should always find a previous binding in this case. */
2352 gcc_unreachable ();
2355 /* Install the new binding. */
2356 push_local_binding (name, new_binding, flags);
2359 return decl;
2362 /* Wrapper for push_overloaded_decl_1. */
2364 static tree
2365 push_overloaded_decl (tree decl, int flags, bool is_friend)
2367 tree ret;
2368 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
2369 ret = push_overloaded_decl_1 (decl, flags, is_friend);
2370 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
2371 return ret;
2374 /* Check a non-member using-declaration. Return the name and scope
2375 being used, and the USING_DECL, or NULL_TREE on failure. */
2377 static tree
2378 validate_nonmember_using_decl (tree decl, tree scope, tree name)
2380 /* [namespace.udecl]
2381 A using-declaration for a class member shall be a
2382 member-declaration. */
2383 if (TYPE_P (scope))
2385 error ("%qT is not a namespace", scope);
2386 return NULL_TREE;
2388 else if (scope == error_mark_node)
2389 return NULL_TREE;
2391 if (TREE_CODE (decl) == TEMPLATE_ID_EXPR)
2393 /* 7.3.3/5
2394 A using-declaration shall not name a template-id. */
2395 error ("a using-declaration cannot specify a template-id. "
2396 "Try %<using %D%>", name);
2397 return NULL_TREE;
2400 if (TREE_CODE (decl) == NAMESPACE_DECL)
2402 error ("namespace %qD not allowed in using-declaration", decl);
2403 return NULL_TREE;
2406 if (TREE_CODE (decl) == SCOPE_REF)
2408 /* It's a nested name with template parameter dependent scope.
2409 This can only be using-declaration for class member. */
2410 error ("%qT is not a namespace", TREE_OPERAND (decl, 0));
2411 return NULL_TREE;
2414 if (is_overloaded_fn (decl))
2415 decl = get_first_fn (decl);
2417 gcc_assert (DECL_P (decl));
2419 /* Make a USING_DECL. */
2420 tree using_decl = push_using_decl (scope, name);
2422 if (using_decl == NULL_TREE
2423 && at_function_scope_p ()
2424 && TREE_CODE (decl) == VAR_DECL)
2425 /* C++11 7.3.3/10. */
2426 error ("%qD is already declared in this scope", name);
2428 return using_decl;
2431 /* Process local and global using-declarations. */
2433 static void
2434 do_nonmember_using_decl (tree scope, tree name, tree oldval, tree oldtype,
2435 tree *newval, tree *newtype)
2437 struct scope_binding decls = EMPTY_SCOPE_BINDING;
2439 *newval = *newtype = NULL_TREE;
2440 if (!qualified_lookup_using_namespace (name, scope, &decls, 0))
2441 /* Lookup error */
2442 return;
2444 if (!decls.value && !decls.type)
2446 error ("%qD not declared", name);
2447 return;
2450 /* Shift the old and new bindings around so we're comparing class and
2451 enumeration names to each other. */
2452 if (oldval && DECL_IMPLICIT_TYPEDEF_P (oldval))
2454 oldtype = oldval;
2455 oldval = NULL_TREE;
2458 if (decls.value && DECL_IMPLICIT_TYPEDEF_P (decls.value))
2460 decls.type = decls.value;
2461 decls.value = NULL_TREE;
2464 /* It is impossible to overload a built-in function; any explicit
2465 declaration eliminates the built-in declaration. So, if OLDVAL
2466 is a built-in, then we can just pretend it isn't there. */
2467 if (oldval
2468 && TREE_CODE (oldval) == FUNCTION_DECL
2469 && DECL_ANTICIPATED (oldval)
2470 && !DECL_HIDDEN_FRIEND_P (oldval))
2471 oldval = NULL_TREE;
2473 if (decls.value)
2475 /* Check for using functions. */
2476 if (is_overloaded_fn (decls.value))
2478 tree tmp, tmp1;
2480 if (oldval && !is_overloaded_fn (oldval))
2482 error ("%qD is already declared in this scope", name);
2483 oldval = NULL_TREE;
2486 *newval = oldval;
2487 for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp))
2489 tree new_fn = OVL_CURRENT (tmp);
2491 /* [namespace.udecl]
2493 If a function declaration in namespace scope or block
2494 scope has the same name and the same parameter types as a
2495 function introduced by a using declaration the program is
2496 ill-formed. */
2497 for (tmp1 = oldval; tmp1; tmp1 = OVL_NEXT (tmp1))
2499 tree old_fn = OVL_CURRENT (tmp1);
2501 if (new_fn == old_fn)
2502 /* The function already exists in the current namespace. */
2503 break;
2504 else if (OVL_USED (tmp1))
2505 continue; /* this is a using decl */
2506 else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (new_fn)),
2507 TYPE_ARG_TYPES (TREE_TYPE (old_fn))))
2509 gcc_assert (!DECL_ANTICIPATED (old_fn)
2510 || DECL_HIDDEN_FRIEND_P (old_fn));
2512 /* There was already a non-using declaration in
2513 this scope with the same parameter types. If both
2514 are the same extern "C" functions, that's ok. */
2515 if (decls_match (new_fn, old_fn))
2516 break;
2517 else
2519 error ("%qD is already declared in this scope", name);
2520 break;
2525 /* If we broke out of the loop, there's no reason to add
2526 this function to the using declarations for this
2527 scope. */
2528 if (tmp1)
2529 continue;
2531 /* If we are adding to an existing OVERLOAD, then we no
2532 longer know the type of the set of functions. */
2533 if (*newval && TREE_CODE (*newval) == OVERLOAD)
2534 TREE_TYPE (*newval) = unknown_type_node;
2535 /* Add this new function to the set. */
2536 *newval = build_overload (OVL_CURRENT (tmp), *newval);
2537 /* If there is only one function, then we use its type. (A
2538 using-declaration naming a single function can be used in
2539 contexts where overload resolution cannot be
2540 performed.) */
2541 if (TREE_CODE (*newval) != OVERLOAD)
2543 *newval = ovl_cons (*newval, NULL_TREE);
2544 TREE_TYPE (*newval) = TREE_TYPE (OVL_CURRENT (tmp));
2546 OVL_USED (*newval) = 1;
2549 else
2551 *newval = decls.value;
2552 if (oldval && !decls_match (*newval, oldval))
2553 error ("%qD is already declared in this scope", name);
2556 else
2557 *newval = oldval;
2559 if (decls.type && TREE_CODE (decls.type) == TREE_LIST)
2561 error ("reference to %qD is ambiguous", name);
2562 print_candidates (decls.type);
2564 else
2566 *newtype = decls.type;
2567 if (oldtype && *newtype && !decls_match (oldtype, *newtype))
2568 error ("%qD is already declared in this scope", name);
2571 /* If *newval is empty, shift any class or enumeration name down. */
2572 if (!*newval)
2574 *newval = *newtype;
2575 *newtype = NULL_TREE;
2579 /* Process a using-declaration at function scope. */
2581 void
2582 do_local_using_decl (tree decl, tree scope, tree name)
2584 tree oldval, oldtype, newval, newtype;
2585 tree orig_decl = decl;
2587 decl = validate_nonmember_using_decl (decl, scope, name);
2588 if (decl == NULL_TREE)
2589 return;
2591 if (building_stmt_list_p ()
2592 && at_function_scope_p ())
2593 add_decl_expr (decl);
2595 oldval = lookup_name_innermost_nonclass_level (name);
2596 oldtype = lookup_type_current_level (name);
2598 do_nonmember_using_decl (scope, name, oldval, oldtype, &newval, &newtype);
2600 if (newval)
2602 if (is_overloaded_fn (newval))
2604 tree fn, term;
2606 /* We only need to push declarations for those functions
2607 that were not already bound in the current level.
2608 The old value might be NULL_TREE, it might be a single
2609 function, or an OVERLOAD. */
2610 if (oldval && TREE_CODE (oldval) == OVERLOAD)
2611 term = OVL_FUNCTION (oldval);
2612 else
2613 term = oldval;
2614 for (fn = newval; fn && OVL_CURRENT (fn) != term;
2615 fn = OVL_NEXT (fn))
2616 push_overloaded_decl (OVL_CURRENT (fn),
2617 PUSH_LOCAL | PUSH_USING,
2618 false);
2620 else
2621 push_local_binding (name, newval, PUSH_USING);
2623 if (newtype)
2625 push_local_binding (name, newtype, PUSH_USING);
2626 set_identifier_type_value (name, newtype);
2629 /* Emit debug info. */
2630 if (!processing_template_decl)
2631 cp_emit_debug_info_for_using (orig_decl, current_scope());
2634 /* Returns true if ROOT (a namespace, class, or function) encloses
2635 CHILD. CHILD may be either a class type or a namespace. */
2637 bool
2638 is_ancestor (tree root, tree child)
2640 gcc_assert ((TREE_CODE (root) == NAMESPACE_DECL
2641 || TREE_CODE (root) == FUNCTION_DECL
2642 || CLASS_TYPE_P (root)));
2643 gcc_assert ((TREE_CODE (child) == NAMESPACE_DECL
2644 || CLASS_TYPE_P (child)));
2646 /* The global namespace encloses everything. */
2647 if (root == global_namespace)
2648 return true;
2650 while (true)
2652 /* If we've run out of scopes, stop. */
2653 if (!child)
2654 return false;
2655 /* If we've reached the ROOT, it encloses CHILD. */
2656 if (root == child)
2657 return true;
2658 /* Go out one level. */
2659 if (TYPE_P (child))
2660 child = TYPE_NAME (child);
2661 child = DECL_CONTEXT (child);
2665 /* Enter the class or namespace scope indicated by T suitable for name
2666 lookup. T can be arbitrary scope, not necessary nested inside the
2667 current scope. Returns a non-null scope to pop iff pop_scope
2668 should be called later to exit this scope. */
2670 tree
2671 push_scope (tree t)
2673 if (TREE_CODE (t) == NAMESPACE_DECL)
2674 push_decl_namespace (t);
2675 else if (CLASS_TYPE_P (t))
2677 if (!at_class_scope_p ()
2678 || !same_type_p (current_class_type, t))
2679 push_nested_class (t);
2680 else
2681 /* T is the same as the current scope. There is therefore no
2682 need to re-enter the scope. Since we are not actually
2683 pushing a new scope, our caller should not call
2684 pop_scope. */
2685 t = NULL_TREE;
2688 return t;
2691 /* Leave scope pushed by push_scope. */
2693 void
2694 pop_scope (tree t)
2696 if (t == NULL_TREE)
2697 return;
2698 if (TREE_CODE (t) == NAMESPACE_DECL)
2699 pop_decl_namespace ();
2700 else if CLASS_TYPE_P (t)
2701 pop_nested_class ();
2704 /* Subroutine of push_inner_scope. */
2706 static void
2707 push_inner_scope_r (tree outer, tree inner)
2709 tree prev;
2711 if (outer == inner
2712 || (TREE_CODE (inner) != NAMESPACE_DECL && !CLASS_TYPE_P (inner)))
2713 return;
2715 prev = CP_DECL_CONTEXT (TREE_CODE (inner) == NAMESPACE_DECL ? inner : TYPE_NAME (inner));
2716 if (outer != prev)
2717 push_inner_scope_r (outer, prev);
2718 if (TREE_CODE (inner) == NAMESPACE_DECL)
2720 cp_binding_level *save_template_parm = 0;
2721 /* Temporary take out template parameter scopes. They are saved
2722 in reversed order in save_template_parm. */
2723 while (current_binding_level->kind == sk_template_parms)
2725 cp_binding_level *b = current_binding_level;
2726 current_binding_level = b->level_chain;
2727 b->level_chain = save_template_parm;
2728 save_template_parm = b;
2731 resume_scope (NAMESPACE_LEVEL (inner));
2732 current_namespace = inner;
2734 /* Restore template parameter scopes. */
2735 while (save_template_parm)
2737 cp_binding_level *b = save_template_parm;
2738 save_template_parm = b->level_chain;
2739 b->level_chain = current_binding_level;
2740 current_binding_level = b;
2743 else
2744 pushclass (inner);
2747 /* Enter the scope INNER from current scope. INNER must be a scope
2748 nested inside current scope. This works with both name lookup and
2749 pushing name into scope. In case a template parameter scope is present,
2750 namespace is pushed under the template parameter scope according to
2751 name lookup rule in 14.6.1/6.
2753 Return the former current scope suitable for pop_inner_scope. */
2755 tree
2756 push_inner_scope (tree inner)
2758 tree outer = current_scope ();
2759 if (!outer)
2760 outer = current_namespace;
2762 push_inner_scope_r (outer, inner);
2763 return outer;
2766 /* Exit the current scope INNER back to scope OUTER. */
2768 void
2769 pop_inner_scope (tree outer, tree inner)
2771 if (outer == inner
2772 || (TREE_CODE (inner) != NAMESPACE_DECL && !CLASS_TYPE_P (inner)))
2773 return;
2775 while (outer != inner)
2777 if (TREE_CODE (inner) == NAMESPACE_DECL)
2779 cp_binding_level *save_template_parm = 0;
2780 /* Temporary take out template parameter scopes. They are saved
2781 in reversed order in save_template_parm. */
2782 while (current_binding_level->kind == sk_template_parms)
2784 cp_binding_level *b = current_binding_level;
2785 current_binding_level = b->level_chain;
2786 b->level_chain = save_template_parm;
2787 save_template_parm = b;
2790 pop_namespace ();
2792 /* Restore template parameter scopes. */
2793 while (save_template_parm)
2795 cp_binding_level *b = save_template_parm;
2796 save_template_parm = b->level_chain;
2797 b->level_chain = current_binding_level;
2798 current_binding_level = b;
2801 else
2802 popclass ();
2804 inner = CP_DECL_CONTEXT (TREE_CODE (inner) == NAMESPACE_DECL ? inner : TYPE_NAME (inner));
2808 /* Do a pushlevel for class declarations. */
2810 void
2811 pushlevel_class (void)
2813 class_binding_level = begin_scope (sk_class, current_class_type);
2816 /* ...and a poplevel for class declarations. */
2818 void
2819 poplevel_class (void)
2821 cp_binding_level *level = class_binding_level;
2822 cp_class_binding *cb;
2823 size_t i;
2824 tree shadowed;
2826 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
2827 gcc_assert (level != 0);
2829 /* If we're leaving a toplevel class, cache its binding level. */
2830 if (current_class_depth == 1)
2831 previous_class_level = level;
2832 for (shadowed = level->type_shadowed;
2833 shadowed;
2834 shadowed = TREE_CHAIN (shadowed))
2835 SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (shadowed), TREE_VALUE (shadowed));
2837 /* Remove the bindings for all of the class-level declarations. */
2838 if (level->class_shadowed)
2840 FOR_EACH_VEC_ELT (*level->class_shadowed, i, cb)
2842 IDENTIFIER_BINDING (cb->identifier) = cb->base->previous;
2843 cxx_binding_free (cb->base);
2845 ggc_free (level->class_shadowed);
2846 level->class_shadowed = NULL;
2849 /* Now, pop out of the binding level which we created up in the
2850 `pushlevel_class' routine. */
2851 gcc_assert (current_binding_level == level);
2852 leave_scope ();
2853 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
2856 /* Set INHERITED_VALUE_BINDING_P on BINDING to true or false, as
2857 appropriate. DECL is the value to which a name has just been
2858 bound. CLASS_TYPE is the class in which the lookup occurred. */
2860 static void
2861 set_inherited_value_binding_p (cxx_binding *binding, tree decl,
2862 tree class_type)
2864 if (binding->value == decl && TREE_CODE (decl) != TREE_LIST)
2866 tree context;
2868 if (TREE_CODE (decl) == OVERLOAD)
2869 context = ovl_scope (decl);
2870 else
2872 gcc_assert (DECL_P (decl));
2873 context = context_for_name_lookup (decl);
2876 if (is_properly_derived_from (class_type, context))
2877 INHERITED_VALUE_BINDING_P (binding) = 1;
2878 else
2879 INHERITED_VALUE_BINDING_P (binding) = 0;
2881 else if (binding->value == decl)
2882 /* We only encounter a TREE_LIST when there is an ambiguity in the
2883 base classes. Such an ambiguity can be overridden by a
2884 definition in this class. */
2885 INHERITED_VALUE_BINDING_P (binding) = 1;
2886 else
2887 INHERITED_VALUE_BINDING_P (binding) = 0;
2890 /* Make the declaration of X appear in CLASS scope. */
2892 bool
2893 pushdecl_class_level (tree x)
2895 tree name;
2896 bool is_valid = true;
2897 bool subtime;
2899 /* Do nothing if we're adding to an outer lambda closure type,
2900 outer_binding will add it later if it's needed. */
2901 if (current_class_type != class_binding_level->this_entity)
2902 return true;
2904 subtime = timevar_cond_start (TV_NAME_LOOKUP);
2905 /* Get the name of X. */
2906 if (TREE_CODE (x) == OVERLOAD)
2907 name = DECL_NAME (get_first_fn (x));
2908 else
2909 name = DECL_NAME (x);
2911 if (name)
2913 is_valid = push_class_level_binding (name, x);
2914 if (TREE_CODE (x) == TYPE_DECL)
2915 set_identifier_type_value (name, x);
2917 else if (ANON_AGGR_TYPE_P (TREE_TYPE (x)))
2919 /* If X is an anonymous aggregate, all of its members are
2920 treated as if they were members of the class containing the
2921 aggregate, for naming purposes. */
2922 tree f;
2924 for (f = TYPE_FIELDS (TREE_TYPE (x)); f; f = DECL_CHAIN (f))
2926 location_t save_location = input_location;
2927 input_location = DECL_SOURCE_LOCATION (f);
2928 if (!pushdecl_class_level (f))
2929 is_valid = false;
2930 input_location = save_location;
2933 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
2934 return is_valid;
2937 /* Return the BINDING (if any) for NAME in SCOPE, which is a class
2938 scope. If the value returned is non-NULL, and the PREVIOUS field
2939 is not set, callers must set the PREVIOUS field explicitly. */
2941 static cxx_binding *
2942 get_class_binding (tree name, cp_binding_level *scope)
2944 tree class_type;
2945 tree type_binding;
2946 tree value_binding;
2947 cxx_binding *binding;
2949 class_type = scope->this_entity;
2951 /* Get the type binding. */
2952 type_binding = lookup_member (class_type, name,
2953 /*protect=*/2, /*want_type=*/true,
2954 tf_warning_or_error);
2955 /* Get the value binding. */
2956 value_binding = lookup_member (class_type, name,
2957 /*protect=*/2, /*want_type=*/false,
2958 tf_warning_or_error);
2960 if (value_binding
2961 && (TREE_CODE (value_binding) == TYPE_DECL
2962 || DECL_CLASS_TEMPLATE_P (value_binding)
2963 || (TREE_CODE (value_binding) == TREE_LIST
2964 && TREE_TYPE (value_binding) == error_mark_node
2965 && (TREE_CODE (TREE_VALUE (value_binding))
2966 == TYPE_DECL))))
2967 /* We found a type binding, even when looking for a non-type
2968 binding. This means that we already processed this binding
2969 above. */
2971 else if (value_binding)
2973 if (TREE_CODE (value_binding) == TREE_LIST
2974 && TREE_TYPE (value_binding) == error_mark_node)
2975 /* NAME is ambiguous. */
2977 else if (BASELINK_P (value_binding))
2978 /* NAME is some overloaded functions. */
2979 value_binding = BASELINK_FUNCTIONS (value_binding);
2982 /* If we found either a type binding or a value binding, create a
2983 new binding object. */
2984 if (type_binding || value_binding)
2986 binding = new_class_binding (name,
2987 value_binding,
2988 type_binding,
2989 scope);
2990 /* This is a class-scope binding, not a block-scope binding. */
2991 LOCAL_BINDING_P (binding) = 0;
2992 set_inherited_value_binding_p (binding, value_binding, class_type);
2994 else
2995 binding = NULL;
2997 return binding;
3000 /* Make the declaration(s) of X appear in CLASS scope under the name
3001 NAME. Returns true if the binding is valid. */
3003 static bool
3004 push_class_level_binding_1 (tree name, tree x)
3006 cxx_binding *binding;
3007 tree decl = x;
3008 bool ok;
3010 /* The class_binding_level will be NULL if x is a template
3011 parameter name in a member template. */
3012 if (!class_binding_level)
3013 return true;
3015 if (name == error_mark_node)
3016 return false;
3018 /* Check for invalid member names. */
3019 gcc_assert (TYPE_BEING_DEFINED (current_class_type));
3020 /* Check that we're pushing into the right binding level. */
3021 gcc_assert (current_class_type == class_binding_level->this_entity);
3023 /* We could have been passed a tree list if this is an ambiguous
3024 declaration. If so, pull the declaration out because
3025 check_template_shadow will not handle a TREE_LIST. */
3026 if (TREE_CODE (decl) == TREE_LIST
3027 && TREE_TYPE (decl) == error_mark_node)
3028 decl = TREE_VALUE (decl);
3030 if (TREE_CODE (decl) == USING_DECL
3031 && TREE_CODE (USING_DECL_SCOPE (decl)) == TEMPLATE_TYPE_PARM
3032 && DECL_NAME (decl) == TYPE_IDENTIFIER (USING_DECL_SCOPE (decl)))
3033 /* This using-declaration declares constructors that inherit from the
3034 constructors for the template parameter. It does not redeclare the
3035 name of the template parameter. */
3036 return true;
3038 if (!check_template_shadow (decl))
3039 return false;
3041 /* [class.mem]
3043 If T is the name of a class, then each of the following shall
3044 have a name different from T:
3046 -- every static data member of class T;
3048 -- every member of class T that is itself a type;
3050 -- every enumerator of every member of class T that is an
3051 enumerated type;
3053 -- every member of every anonymous union that is a member of
3054 class T.
3056 (Non-static data members were also forbidden to have the same
3057 name as T until TC1.) */
3058 if ((TREE_CODE (x) == VAR_DECL
3059 || TREE_CODE (x) == CONST_DECL
3060 || (TREE_CODE (x) == TYPE_DECL
3061 && !DECL_SELF_REFERENCE_P (x))
3062 /* A data member of an anonymous union. */
3063 || (TREE_CODE (x) == FIELD_DECL
3064 && DECL_CONTEXT (x) != current_class_type))
3065 && DECL_NAME (x) == constructor_name (current_class_type))
3067 tree scope = context_for_name_lookup (x);
3068 if (TYPE_P (scope) && same_type_p (scope, current_class_type))
3070 error ("%qD has the same name as the class in which it is "
3071 "declared",
3073 return false;
3077 /* Get the current binding for NAME in this class, if any. */
3078 binding = IDENTIFIER_BINDING (name);
3079 if (!binding || binding->scope != class_binding_level)
3081 binding = get_class_binding (name, class_binding_level);
3082 /* If a new binding was created, put it at the front of the
3083 IDENTIFIER_BINDING list. */
3084 if (binding)
3086 binding->previous = IDENTIFIER_BINDING (name);
3087 IDENTIFIER_BINDING (name) = binding;
3091 /* If there is already a binding, then we may need to update the
3092 current value. */
3093 if (binding && binding->value)
3095 tree bval = binding->value;
3096 tree old_decl = NULL_TREE;
3097 tree target_decl = strip_using_decl (decl);
3098 tree target_bval = strip_using_decl (bval);
3100 if (INHERITED_VALUE_BINDING_P (binding))
3102 /* If the old binding was from a base class, and was for a
3103 tag name, slide it over to make room for the new binding.
3104 The old binding is still visible if explicitly qualified
3105 with a class-key. */
3106 if (TREE_CODE (target_bval) == TYPE_DECL
3107 && DECL_ARTIFICIAL (target_bval)
3108 && !(TREE_CODE (target_decl) == TYPE_DECL
3109 && DECL_ARTIFICIAL (target_decl)))
3111 old_decl = binding->type;
3112 binding->type = bval;
3113 binding->value = NULL_TREE;
3114 INHERITED_VALUE_BINDING_P (binding) = 0;
3116 else
3118 old_decl = bval;
3119 /* Any inherited type declaration is hidden by the type
3120 declaration in the derived class. */
3121 if (TREE_CODE (target_decl) == TYPE_DECL
3122 && DECL_ARTIFICIAL (target_decl))
3123 binding->type = NULL_TREE;
3126 else if (TREE_CODE (target_decl) == OVERLOAD
3127 && is_overloaded_fn (target_bval))
3128 old_decl = bval;
3129 else if (TREE_CODE (decl) == USING_DECL
3130 && TREE_CODE (bval) == USING_DECL
3131 && same_type_p (USING_DECL_SCOPE (decl),
3132 USING_DECL_SCOPE (bval)))
3133 /* This is a using redeclaration that will be diagnosed later
3134 in supplement_binding */
3136 else if (TREE_CODE (decl) == USING_DECL
3137 && TREE_CODE (bval) == USING_DECL
3138 && DECL_DEPENDENT_P (decl)
3139 && DECL_DEPENDENT_P (bval))
3140 return true;
3141 else if (TREE_CODE (decl) == USING_DECL
3142 && is_overloaded_fn (target_bval))
3143 old_decl = bval;
3144 else if (TREE_CODE (bval) == USING_DECL
3145 && is_overloaded_fn (target_decl))
3146 return true;
3148 if (old_decl && binding->scope == class_binding_level)
3150 binding->value = x;
3151 /* It is always safe to clear INHERITED_VALUE_BINDING_P
3152 here. This function is only used to register bindings
3153 from with the class definition itself. */
3154 INHERITED_VALUE_BINDING_P (binding) = 0;
3155 return true;
3159 /* Note that we declared this value so that we can issue an error if
3160 this is an invalid redeclaration of a name already used for some
3161 other purpose. */
3162 note_name_declared_in_class (name, decl);
3164 /* If we didn't replace an existing binding, put the binding on the
3165 stack of bindings for the identifier, and update the shadowed
3166 list. */
3167 if (binding && binding->scope == class_binding_level)
3168 /* Supplement the existing binding. */
3169 ok = supplement_binding (binding, decl);
3170 else
3172 /* Create a new binding. */
3173 push_binding (name, decl, class_binding_level);
3174 ok = true;
3177 return ok;
3180 /* Wrapper for push_class_level_binding_1. */
3182 bool
3183 push_class_level_binding (tree name, tree x)
3185 bool ret;
3186 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3187 ret = push_class_level_binding_1 (name, x);
3188 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3189 return ret;
3192 /* Process "using SCOPE::NAME" in a class scope. Return the
3193 USING_DECL created. */
3195 tree
3196 do_class_using_decl (tree scope, tree name)
3198 /* The USING_DECL returned by this function. */
3199 tree value;
3200 /* The declaration (or declarations) name by this using
3201 declaration. NULL if we are in a template and cannot figure out
3202 what has been named. */
3203 tree decl;
3204 /* True if SCOPE is a dependent type. */
3205 bool scope_dependent_p;
3206 /* True if SCOPE::NAME is dependent. */
3207 bool name_dependent_p;
3208 /* True if any of the bases of CURRENT_CLASS_TYPE are dependent. */
3209 bool bases_dependent_p;
3210 tree binfo;
3211 tree base_binfo;
3212 int i;
3214 if (name == error_mark_node)
3215 return NULL_TREE;
3217 if (!scope || !TYPE_P (scope))
3219 error ("using-declaration for non-member at class scope");
3220 return NULL_TREE;
3223 /* Make sure the name is not invalid */
3224 if (TREE_CODE (name) == BIT_NOT_EXPR)
3226 error ("%<%T::%D%> names destructor", scope, name);
3227 return NULL_TREE;
3229 if (MAYBE_CLASS_TYPE_P (scope) && constructor_name_p (name, scope))
3230 maybe_warn_cpp0x (CPP0X_INHERITING_CTORS);
3231 if (constructor_name_p (name, current_class_type))
3233 error ("%<%T::%D%> names constructor in %qT",
3234 scope, name, current_class_type);
3235 return NULL_TREE;
3238 scope_dependent_p = dependent_scope_p (scope);
3239 name_dependent_p = (scope_dependent_p
3240 || (IDENTIFIER_TYPENAME_P (name)
3241 && dependent_type_p (TREE_TYPE (name))));
3243 bases_dependent_p = false;
3244 if (processing_template_decl)
3245 for (binfo = TYPE_BINFO (current_class_type), i = 0;
3246 BINFO_BASE_ITERATE (binfo, i, base_binfo);
3247 i++)
3248 if (dependent_type_p (TREE_TYPE (base_binfo)))
3250 bases_dependent_p = true;
3251 break;
3254 decl = NULL_TREE;
3256 /* From [namespace.udecl]:
3258 A using-declaration used as a member-declaration shall refer to a
3259 member of a base class of the class being defined.
3261 In general, we cannot check this constraint in a template because
3262 we do not know the entire set of base classes of the current
3263 class type. Morover, if SCOPE is dependent, it might match a
3264 non-dependent base. */
3266 if (!scope_dependent_p)
3268 base_kind b_kind;
3269 binfo = lookup_base (current_class_type, scope, ba_any, &b_kind,
3270 tf_warning_or_error);
3271 if (b_kind < bk_proper_base)
3273 if (!bases_dependent_p)
3275 error_not_base_type (scope, current_class_type);
3276 return NULL_TREE;
3279 else if (!name_dependent_p)
3281 decl = lookup_member (binfo, name, 0, false, tf_warning_or_error);
3282 if (!decl)
3284 error ("no members matching %<%T::%D%> in %q#T", scope, name,
3285 scope);
3286 return NULL_TREE;
3288 /* The binfo from which the functions came does not matter. */
3289 if (BASELINK_P (decl))
3290 decl = BASELINK_FUNCTIONS (decl);
3294 value = build_lang_decl (USING_DECL, name, NULL_TREE);
3295 USING_DECL_DECLS (value) = decl;
3296 USING_DECL_SCOPE (value) = scope;
3297 DECL_DEPENDENT_P (value) = !decl;
3299 return value;
3303 /* Return the binding value for name in scope. */
3306 static tree
3307 namespace_binding_1 (tree name, tree scope)
3309 cxx_binding *binding;
3311 if (SCOPE_FILE_SCOPE_P (scope))
3312 scope = global_namespace;
3313 else
3314 /* Unnecessary for the global namespace because it can't be an alias. */
3315 scope = ORIGINAL_NAMESPACE (scope);
3317 binding = cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
3319 return binding ? binding->value : NULL_TREE;
3322 tree
3323 namespace_binding (tree name, tree scope)
3325 tree ret;
3326 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3327 ret = namespace_binding_1 (name, scope);
3328 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3329 return ret;
3332 /* Set the binding value for name in scope. */
3334 static void
3335 set_namespace_binding_1 (tree name, tree scope, tree val)
3337 cxx_binding *b;
3339 if (scope == NULL_TREE)
3340 scope = global_namespace;
3341 b = binding_for_name (NAMESPACE_LEVEL (scope), name);
3342 if (!b->value || TREE_CODE (val) == OVERLOAD || val == error_mark_node)
3343 b->value = val;
3344 else
3345 supplement_binding (b, val);
3348 /* Wrapper for set_namespace_binding_1. */
3350 void
3351 set_namespace_binding (tree name, tree scope, tree val)
3353 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3354 set_namespace_binding_1 (name, scope, val);
3355 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3358 /* Set the context of a declaration to scope. Complain if we are not
3359 outside scope. */
3361 void
3362 set_decl_namespace (tree decl, tree scope, bool friendp)
3364 tree old;
3366 /* Get rid of namespace aliases. */
3367 scope = ORIGINAL_NAMESPACE (scope);
3369 /* It is ok for friends to be qualified in parallel space. */
3370 if (!friendp && !is_ancestor (current_namespace, scope))
3371 error ("declaration of %qD not in a namespace surrounding %qD",
3372 decl, scope);
3373 DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
3375 /* Writing "int N::i" to declare a variable within "N" is invalid. */
3376 if (scope == current_namespace)
3378 if (at_namespace_scope_p ())
3379 error ("explicit qualification in declaration of %qD",
3380 decl);
3381 return;
3384 /* See whether this has been declared in the namespace. */
3385 old = lookup_qualified_name (scope, DECL_NAME (decl), false, true);
3386 if (old == error_mark_node)
3387 /* No old declaration at all. */
3388 goto complain;
3389 /* If it's a TREE_LIST, the result of the lookup was ambiguous. */
3390 if (TREE_CODE (old) == TREE_LIST)
3392 error ("reference to %qD is ambiguous", decl);
3393 print_candidates (old);
3394 return;
3396 if (!is_overloaded_fn (decl))
3398 /* We might have found OLD in an inline namespace inside SCOPE. */
3399 if (TREE_CODE (decl) == TREE_CODE (old))
3400 DECL_CONTEXT (decl) = DECL_CONTEXT (old);
3401 /* Don't compare non-function decls with decls_match here, since
3402 it can't check for the correct constness at this
3403 point. pushdecl will find those errors later. */
3404 return;
3406 /* Since decl is a function, old should contain a function decl. */
3407 if (!is_overloaded_fn (old))
3408 goto complain;
3409 /* A template can be explicitly specialized in any namespace. */
3410 if (processing_explicit_instantiation)
3411 return;
3412 if (processing_template_decl || processing_specialization)
3413 /* We have not yet called push_template_decl to turn a
3414 FUNCTION_DECL into a TEMPLATE_DECL, so the declarations won't
3415 match. But, we'll check later, when we construct the
3416 template. */
3417 return;
3418 /* Instantiations or specializations of templates may be declared as
3419 friends in any namespace. */
3420 if (friendp && DECL_USE_TEMPLATE (decl))
3421 return;
3422 if (is_overloaded_fn (old))
3424 tree found = NULL_TREE;
3425 tree elt = old;
3426 for (; elt; elt = OVL_NEXT (elt))
3428 tree ofn = OVL_CURRENT (elt);
3429 /* Adjust DECL_CONTEXT first so decls_match will return true
3430 if DECL will match a declaration in an inline namespace. */
3431 DECL_CONTEXT (decl) = DECL_CONTEXT (ofn);
3432 if (decls_match (decl, ofn))
3434 if (found && !decls_match (found, ofn))
3436 DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
3437 error ("reference to %qD is ambiguous", decl);
3438 print_candidates (old);
3439 return;
3441 found = ofn;
3444 if (found)
3446 if (!is_associated_namespace (scope, CP_DECL_CONTEXT (found)))
3447 goto complain;
3448 DECL_CONTEXT (decl) = DECL_CONTEXT (found);
3449 return;
3452 else
3454 DECL_CONTEXT (decl) = DECL_CONTEXT (old);
3455 if (decls_match (decl, old))
3456 return;
3459 /* It didn't work, go back to the explicit scope. */
3460 DECL_CONTEXT (decl) = FROB_CONTEXT (scope);
3461 complain:
3462 error ("%qD should have been declared inside %qD", decl, scope);
3465 /* Return the namespace where the current declaration is declared. */
3467 tree
3468 current_decl_namespace (void)
3470 tree result;
3471 /* If we have been pushed into a different namespace, use it. */
3472 if (!vec_safe_is_empty (decl_namespace_list))
3473 return decl_namespace_list->last ();
3475 if (current_class_type)
3476 result = decl_namespace_context (current_class_type);
3477 else if (current_function_decl)
3478 result = decl_namespace_context (current_function_decl);
3479 else
3480 result = current_namespace;
3481 return result;
3484 /* Process any ATTRIBUTES on a namespace definition. Currently only
3485 attribute visibility is meaningful, which is a property of the syntactic
3486 block rather than the namespace as a whole, so we don't touch the
3487 NAMESPACE_DECL at all. Returns true if attribute visibility is seen. */
3489 bool
3490 handle_namespace_attrs (tree ns, tree attributes)
3492 tree d;
3493 bool saw_vis = false;
3495 for (d = attributes; d; d = TREE_CHAIN (d))
3497 tree name = TREE_PURPOSE (d);
3498 tree args = TREE_VALUE (d);
3500 if (is_attribute_p ("visibility", name))
3502 tree x = args ? TREE_VALUE (args) : NULL_TREE;
3503 if (x == NULL_TREE || TREE_CODE (x) != STRING_CST || TREE_CHAIN (args))
3505 warning (OPT_Wattributes,
3506 "%qD attribute requires a single NTBS argument",
3507 name);
3508 continue;
3511 if (!TREE_PUBLIC (ns))
3512 warning (OPT_Wattributes,
3513 "%qD attribute is meaningless since members of the "
3514 "anonymous namespace get local symbols", name);
3516 push_visibility (TREE_STRING_POINTER (x), 1);
3517 saw_vis = true;
3519 else
3521 warning (OPT_Wattributes, "%qD attribute directive ignored",
3522 name);
3523 continue;
3527 return saw_vis;
3530 /* Push into the scope of the NAME namespace. If NAME is NULL_TREE, then we
3531 select a name that is unique to this compilation unit. */
3533 void
3534 push_namespace (tree name)
3536 tree d = NULL_TREE;
3537 bool need_new = true;
3538 bool implicit_use = false;
3539 bool anon = !name;
3541 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3543 /* We should not get here if the global_namespace is not yet constructed
3544 nor if NAME designates the global namespace: The global scope is
3545 constructed elsewhere. */
3546 gcc_assert (global_namespace != NULL && name != global_scope_name);
3548 if (anon)
3550 name = get_anonymous_namespace_name();
3551 d = IDENTIFIER_NAMESPACE_VALUE (name);
3552 if (d)
3553 /* Reopening anonymous namespace. */
3554 need_new = false;
3555 implicit_use = true;
3557 else
3559 /* Check whether this is an extended namespace definition. */
3560 d = IDENTIFIER_NAMESPACE_VALUE (name);
3561 if (d != NULL_TREE && TREE_CODE (d) == NAMESPACE_DECL)
3563 tree dna = DECL_NAMESPACE_ALIAS (d);
3564 if (dna)
3566 /* We do some error recovery for, eg, the redeclaration
3567 of M here:
3569 namespace N {}
3570 namespace M = N;
3571 namespace M {}
3573 However, in nasty cases like:
3575 namespace N
3577 namespace M = N;
3578 namespace M {}
3581 we just error out below, in duplicate_decls. */
3582 if (NAMESPACE_LEVEL (dna)->level_chain
3583 == current_binding_level)
3585 error ("namespace alias %qD not allowed here, "
3586 "assuming %qD", d, dna);
3587 d = dna;
3588 need_new = false;
3591 else
3592 need_new = false;
3596 if (need_new)
3598 /* Make a new namespace, binding the name to it. */
3599 d = build_lang_decl (NAMESPACE_DECL, name, void_type_node);
3600 DECL_CONTEXT (d) = FROB_CONTEXT (current_namespace);
3601 /* The name of this namespace is not visible to other translation
3602 units if it is an anonymous namespace or member thereof. */
3603 if (anon || decl_anon_ns_mem_p (current_namespace))
3604 TREE_PUBLIC (d) = 0;
3605 else
3606 TREE_PUBLIC (d) = 1;
3607 pushdecl (d);
3608 if (anon)
3610 /* Clear DECL_NAME for the benefit of debugging back ends. */
3611 SET_DECL_ASSEMBLER_NAME (d, name);
3612 DECL_NAME (d) = NULL_TREE;
3614 begin_scope (sk_namespace, d);
3616 else
3617 resume_scope (NAMESPACE_LEVEL (d));
3619 if (implicit_use)
3620 do_using_directive (d);
3621 /* Enter the name space. */
3622 current_namespace = d;
3624 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3627 /* Pop from the scope of the current namespace. */
3629 void
3630 pop_namespace (void)
3632 gcc_assert (current_namespace != global_namespace);
3633 current_namespace = CP_DECL_CONTEXT (current_namespace);
3634 /* The binding level is not popped, as it might be re-opened later. */
3635 leave_scope ();
3638 /* Push into the scope of the namespace NS, even if it is deeply
3639 nested within another namespace. */
3641 void
3642 push_nested_namespace (tree ns)
3644 if (ns == global_namespace)
3645 push_to_top_level ();
3646 else
3648 push_nested_namespace (CP_DECL_CONTEXT (ns));
3649 push_namespace (DECL_NAME (ns));
3653 /* Pop back from the scope of the namespace NS, which was previously
3654 entered with push_nested_namespace. */
3656 void
3657 pop_nested_namespace (tree ns)
3659 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3660 gcc_assert (current_namespace == ns);
3661 while (ns != global_namespace)
3663 pop_namespace ();
3664 ns = CP_DECL_CONTEXT (ns);
3667 pop_from_top_level ();
3668 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3671 /* Temporarily set the namespace for the current declaration. */
3673 void
3674 push_decl_namespace (tree decl)
3676 if (TREE_CODE (decl) != NAMESPACE_DECL)
3677 decl = decl_namespace_context (decl);
3678 vec_safe_push (decl_namespace_list, ORIGINAL_NAMESPACE (decl));
3681 /* [namespace.memdef]/2 */
3683 void
3684 pop_decl_namespace (void)
3686 decl_namespace_list->pop ();
3689 /* Return the namespace that is the common ancestor
3690 of two given namespaces. */
3692 static tree
3693 namespace_ancestor_1 (tree ns1, tree ns2)
3695 tree nsr;
3696 if (is_ancestor (ns1, ns2))
3697 nsr = ns1;
3698 else
3699 nsr = namespace_ancestor_1 (CP_DECL_CONTEXT (ns1), ns2);
3700 return nsr;
3703 /* Wrapper for namespace_ancestor_1. */
3705 static tree
3706 namespace_ancestor (tree ns1, tree ns2)
3708 tree nsr;
3709 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3710 nsr = namespace_ancestor_1 (ns1, ns2);
3711 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3712 return nsr;
3715 /* Process a namespace-alias declaration. */
3717 void
3718 do_namespace_alias (tree alias, tree name_space)
3720 if (name_space == error_mark_node)
3721 return;
3723 gcc_assert (TREE_CODE (name_space) == NAMESPACE_DECL);
3725 name_space = ORIGINAL_NAMESPACE (name_space);
3727 /* Build the alias. */
3728 alias = build_lang_decl (NAMESPACE_DECL, alias, void_type_node);
3729 DECL_NAMESPACE_ALIAS (alias) = name_space;
3730 DECL_EXTERNAL (alias) = 1;
3731 DECL_CONTEXT (alias) = FROB_CONTEXT (current_scope ());
3732 pushdecl (alias);
3734 /* Emit debug info for namespace alias. */
3735 if (!building_stmt_list_p ())
3736 (*debug_hooks->global_decl) (alias);
3739 /* Like pushdecl, only it places X in the current namespace,
3740 if appropriate. */
3742 tree
3743 pushdecl_namespace_level (tree x, bool is_friend)
3745 cp_binding_level *b = current_binding_level;
3746 tree t;
3748 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3749 t = pushdecl_with_scope (x, NAMESPACE_LEVEL (current_namespace), is_friend);
3751 /* Now, the type_shadowed stack may screw us. Munge it so it does
3752 what we want. */
3753 if (TREE_CODE (t) == TYPE_DECL)
3755 tree name = DECL_NAME (t);
3756 tree newval;
3757 tree *ptr = (tree *)0;
3758 for (; !global_scope_p (b); b = b->level_chain)
3760 tree shadowed = b->type_shadowed;
3761 for (; shadowed; shadowed = TREE_CHAIN (shadowed))
3762 if (TREE_PURPOSE (shadowed) == name)
3764 ptr = &TREE_VALUE (shadowed);
3765 /* Can't break out of the loop here because sometimes
3766 a binding level will have duplicate bindings for
3767 PT names. It's gross, but I haven't time to fix it. */
3770 newval = TREE_TYPE (t);
3771 if (ptr == (tree *)0)
3773 /* @@ This shouldn't be needed. My test case "zstring.cc" trips
3774 up here if this is changed to an assertion. --KR */
3775 SET_IDENTIFIER_TYPE_VALUE (name, t);
3777 else
3779 *ptr = newval;
3782 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3783 return t;
3786 /* Insert USED into the using list of USER. Set INDIRECT_flag if this
3787 directive is not directly from the source. Also find the common
3788 ancestor and let our users know about the new namespace */
3790 static void
3791 add_using_namespace_1 (tree user, tree used, bool indirect)
3793 tree t;
3794 /* Using oneself is a no-op. */
3795 if (user == used)
3796 return;
3797 gcc_assert (TREE_CODE (user) == NAMESPACE_DECL);
3798 gcc_assert (TREE_CODE (used) == NAMESPACE_DECL);
3799 /* Check if we already have this. */
3800 t = purpose_member (used, DECL_NAMESPACE_USING (user));
3801 if (t != NULL_TREE)
3803 if (!indirect)
3804 /* Promote to direct usage. */
3805 TREE_INDIRECT_USING (t) = 0;
3806 return;
3809 /* Add used to the user's using list. */
3810 DECL_NAMESPACE_USING (user)
3811 = tree_cons (used, namespace_ancestor (user, used),
3812 DECL_NAMESPACE_USING (user));
3814 TREE_INDIRECT_USING (DECL_NAMESPACE_USING (user)) = indirect;
3816 /* Add user to the used's users list. */
3817 DECL_NAMESPACE_USERS (used)
3818 = tree_cons (user, 0, DECL_NAMESPACE_USERS (used));
3820 /* Recursively add all namespaces used. */
3821 for (t = DECL_NAMESPACE_USING (used); t; t = TREE_CHAIN (t))
3822 /* indirect usage */
3823 add_using_namespace_1 (user, TREE_PURPOSE (t), 1);
3825 /* Tell everyone using us about the new used namespaces. */
3826 for (t = DECL_NAMESPACE_USERS (user); t; t = TREE_CHAIN (t))
3827 add_using_namespace_1 (TREE_PURPOSE (t), used, 1);
3830 /* Wrapper for add_using_namespace_1. */
3832 static void
3833 add_using_namespace (tree user, tree used, bool indirect)
3835 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3836 add_using_namespace_1 (user, used, indirect);
3837 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3840 /* Process a using-declaration not appearing in class or local scope. */
3842 void
3843 do_toplevel_using_decl (tree decl, tree scope, tree name)
3845 tree oldval, oldtype, newval, newtype;
3846 tree orig_decl = decl;
3847 cxx_binding *binding;
3849 decl = validate_nonmember_using_decl (decl, scope, name);
3850 if (decl == NULL_TREE)
3851 return;
3853 binding = binding_for_name (NAMESPACE_LEVEL (current_namespace), name);
3855 oldval = binding->value;
3856 oldtype = binding->type;
3858 do_nonmember_using_decl (scope, name, oldval, oldtype, &newval, &newtype);
3860 /* Emit debug info. */
3861 if (!processing_template_decl)
3862 cp_emit_debug_info_for_using (orig_decl, current_namespace);
3864 /* Copy declarations found. */
3865 if (newval)
3866 binding->value = newval;
3867 if (newtype)
3868 binding->type = newtype;
3871 /* Process a using-directive. */
3873 void
3874 do_using_directive (tree name_space)
3876 tree context = NULL_TREE;
3878 if (name_space == error_mark_node)
3879 return;
3881 gcc_assert (TREE_CODE (name_space) == NAMESPACE_DECL);
3883 if (building_stmt_list_p ())
3884 add_stmt (build_stmt (input_location, USING_STMT, name_space));
3885 name_space = ORIGINAL_NAMESPACE (name_space);
3887 if (!toplevel_bindings_p ())
3889 push_using_directive (name_space);
3891 else
3893 /* direct usage */
3894 add_using_namespace (current_namespace, name_space, 0);
3895 if (current_namespace != global_namespace)
3896 context = current_namespace;
3898 /* Emit debugging info. */
3899 if (!processing_template_decl)
3900 (*debug_hooks->imported_module_or_decl) (name_space, NULL_TREE,
3901 context, false);
3905 /* Deal with a using-directive seen by the parser. Currently we only
3906 handle attributes here, since they cannot appear inside a template. */
3908 void
3909 parse_using_directive (tree name_space, tree attribs)
3911 tree a;
3913 do_using_directive (name_space);
3915 for (a = attribs; a; a = TREE_CHAIN (a))
3917 tree name = TREE_PURPOSE (a);
3918 if (is_attribute_p ("strong", name))
3920 if (!toplevel_bindings_p ())
3921 error ("strong using only meaningful at namespace scope");
3922 else if (name_space != error_mark_node)
3924 if (!is_ancestor (current_namespace, name_space))
3925 error ("current namespace %qD does not enclose strongly used namespace %qD",
3926 current_namespace, name_space);
3927 DECL_NAMESPACE_ASSOCIATIONS (name_space)
3928 = tree_cons (current_namespace, 0,
3929 DECL_NAMESPACE_ASSOCIATIONS (name_space));
3932 else
3933 warning (OPT_Wattributes, "%qD attribute directive ignored", name);
3937 /* Like pushdecl, only it places X in the global scope if appropriate.
3938 Calls cp_finish_decl to register the variable, initializing it with
3939 *INIT, if INIT is non-NULL. */
3941 static tree
3942 pushdecl_top_level_1 (tree x, tree *init, bool is_friend)
3944 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
3945 push_to_top_level ();
3946 x = pushdecl_namespace_level (x, is_friend);
3947 if (init)
3948 cp_finish_decl (x, *init, false, NULL_TREE, 0);
3949 pop_from_top_level ();
3950 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
3951 return x;
3954 /* Like pushdecl, only it places X in the global scope if appropriate. */
3956 tree
3957 pushdecl_top_level (tree x)
3959 return pushdecl_top_level_1 (x, NULL, false);
3962 /* Like pushdecl_top_level, but adding the IS_FRIEND parameter. */
3964 tree
3965 pushdecl_top_level_maybe_friend (tree x, bool is_friend)
3967 return pushdecl_top_level_1 (x, NULL, is_friend);
3970 /* Like pushdecl, only it places X in the global scope if
3971 appropriate. Calls cp_finish_decl to register the variable,
3972 initializing it with INIT. */
3974 tree
3975 pushdecl_top_level_and_finish (tree x, tree init)
3977 return pushdecl_top_level_1 (x, &init, false);
3980 /* Combines two sets of overloaded functions into an OVERLOAD chain, removing
3981 duplicates. The first list becomes the tail of the result.
3983 The algorithm is O(n^2). We could get this down to O(n log n) by
3984 doing a sort on the addresses of the functions, if that becomes
3985 necessary. */
3987 static tree
3988 merge_functions (tree s1, tree s2)
3990 for (; s2; s2 = OVL_NEXT (s2))
3992 tree fn2 = OVL_CURRENT (s2);
3993 tree fns1;
3995 for (fns1 = s1; fns1; fns1 = OVL_NEXT (fns1))
3997 tree fn1 = OVL_CURRENT (fns1);
3999 /* If the function from S2 is already in S1, there is no
4000 need to add it again. For `extern "C"' functions, we
4001 might have two FUNCTION_DECLs for the same function, in
4002 different namespaces, but let's leave them in in case
4003 they have different default arguments. */
4004 if (fn1 == fn2)
4005 break;
4008 /* If we exhausted all of the functions in S1, FN2 is new. */
4009 if (!fns1)
4010 s1 = build_overload (fn2, s1);
4012 return s1;
4015 /* Returns TRUE iff OLD and NEW are the same entity.
4017 3 [basic]/3: An entity is a value, object, reference, function,
4018 enumerator, type, class member, template, template specialization,
4019 namespace, parameter pack, or this.
4021 7.3.4 [namespace.udir]/4: If name lookup finds a declaration for a name
4022 in two different namespaces, and the declarations do not declare the
4023 same entity and do not declare functions, the use of the name is
4024 ill-formed. */
4026 static bool
4027 same_entity_p (tree one, tree two)
4029 if (one == two)
4030 return true;
4031 if (!one || !two)
4032 return false;
4033 if (TREE_CODE (one) == TYPE_DECL
4034 && TREE_CODE (two) == TYPE_DECL
4035 && same_type_p (TREE_TYPE (one), TREE_TYPE (two)))
4036 return true;
4037 return false;
4040 /* This should return an error not all definitions define functions.
4041 It is not an error if we find two functions with exactly the
4042 same signature, only if these are selected in overload resolution.
4043 old is the current set of bindings, new_binding the freshly-found binding.
4044 XXX Do we want to give *all* candidates in case of ambiguity?
4045 XXX In what way should I treat extern declarations?
4046 XXX I don't want to repeat the entire duplicate_decls here */
4048 static void
4049 ambiguous_decl (struct scope_binding *old, cxx_binding *new_binding, int flags)
4051 tree val, type;
4052 gcc_assert (old != NULL);
4054 /* Copy the type. */
4055 type = new_binding->type;
4056 if (LOOKUP_NAMESPACES_ONLY (flags)
4057 || (type && hidden_name_p (type) && !(flags & LOOKUP_HIDDEN)))
4058 type = NULL_TREE;
4060 /* Copy the value. */
4061 val = new_binding->value;
4062 if (val)
4064 if (hidden_name_p (val) && !(flags & LOOKUP_HIDDEN))
4065 val = NULL_TREE;
4066 else
4067 switch (TREE_CODE (val))
4069 case TEMPLATE_DECL:
4070 /* If we expect types or namespaces, and not templates,
4071 or this is not a template class. */
4072 if ((LOOKUP_QUALIFIERS_ONLY (flags)
4073 && !DECL_TYPE_TEMPLATE_P (val)))
4074 val = NULL_TREE;
4075 break;
4076 case TYPE_DECL:
4077 if (LOOKUP_NAMESPACES_ONLY (flags)
4078 || (type && (flags & LOOKUP_PREFER_TYPES)))
4079 val = NULL_TREE;
4080 break;
4081 case NAMESPACE_DECL:
4082 if (LOOKUP_TYPES_ONLY (flags))
4083 val = NULL_TREE;
4084 break;
4085 case FUNCTION_DECL:
4086 /* Ignore built-in functions that are still anticipated. */
4087 if (LOOKUP_QUALIFIERS_ONLY (flags))
4088 val = NULL_TREE;
4089 break;
4090 default:
4091 if (LOOKUP_QUALIFIERS_ONLY (flags))
4092 val = NULL_TREE;
4096 /* If val is hidden, shift down any class or enumeration name. */
4097 if (!val)
4099 val = type;
4100 type = NULL_TREE;
4103 if (!old->value)
4104 old->value = val;
4105 else if (val && !same_entity_p (val, old->value))
4107 if (is_overloaded_fn (old->value) && is_overloaded_fn (val))
4108 old->value = merge_functions (old->value, val);
4109 else
4111 old->value = tree_cons (NULL_TREE, old->value,
4112 build_tree_list (NULL_TREE, val));
4113 TREE_TYPE (old->value) = error_mark_node;
4117 if (!old->type)
4118 old->type = type;
4119 else if (type && old->type != type)
4121 old->type = tree_cons (NULL_TREE, old->type,
4122 build_tree_list (NULL_TREE, type));
4123 TREE_TYPE (old->type) = error_mark_node;
4127 /* Return the declarations that are members of the namespace NS. */
4129 tree
4130 cp_namespace_decls (tree ns)
4132 return NAMESPACE_LEVEL (ns)->names;
4135 /* Combine prefer_type and namespaces_only into flags. */
4137 static int
4138 lookup_flags (int prefer_type, int namespaces_only)
4140 if (namespaces_only)
4141 return LOOKUP_PREFER_NAMESPACES;
4142 if (prefer_type > 1)
4143 return LOOKUP_PREFER_TYPES;
4144 if (prefer_type > 0)
4145 return LOOKUP_PREFER_BOTH;
4146 return 0;
4149 /* Given a lookup that returned VAL, use FLAGS to decide if we want to
4150 ignore it or not. Subroutine of lookup_name_real and
4151 lookup_type_scope. */
4153 static bool
4154 qualify_lookup (tree val, int flags)
4156 if (val == NULL_TREE)
4157 return false;
4158 if ((flags & LOOKUP_PREFER_NAMESPACES) && TREE_CODE (val) == NAMESPACE_DECL)
4159 return true;
4160 if (flags & LOOKUP_PREFER_TYPES)
4162 tree target_val = strip_using_decl (val);
4163 if (TREE_CODE (target_val) == TYPE_DECL
4164 || TREE_CODE (target_val) == TEMPLATE_DECL)
4165 return true;
4167 if (flags & (LOOKUP_PREFER_NAMESPACES | LOOKUP_PREFER_TYPES))
4168 return false;
4169 /* Look through lambda things that we shouldn't be able to see. */
4170 if (is_lambda_ignored_entity (val))
4171 return false;
4172 return true;
4175 /* Given a lookup that returned VAL, decide if we want to ignore it or
4176 not based on DECL_ANTICIPATED. */
4178 bool
4179 hidden_name_p (tree val)
4181 if (DECL_P (val)
4182 && DECL_LANG_SPECIFIC (val)
4183 && TYPE_FUNCTION_OR_TEMPLATE_DECL_P (val)
4184 && DECL_ANTICIPATED (val))
4185 return true;
4186 return false;
4189 /* Remove any hidden friend functions from a possibly overloaded set
4190 of functions. */
4192 tree
4193 remove_hidden_names (tree fns)
4195 if (!fns)
4196 return fns;
4198 if (TREE_CODE (fns) == FUNCTION_DECL && hidden_name_p (fns))
4199 fns = NULL_TREE;
4200 else if (TREE_CODE (fns) == OVERLOAD)
4202 tree o;
4204 for (o = fns; o; o = OVL_NEXT (o))
4205 if (hidden_name_p (OVL_CURRENT (o)))
4206 break;
4207 if (o)
4209 tree n = NULL_TREE;
4211 for (o = fns; o; o = OVL_NEXT (o))
4212 if (!hidden_name_p (OVL_CURRENT (o)))
4213 n = build_overload (OVL_CURRENT (o), n);
4214 fns = n;
4218 return fns;
4221 /* Suggest alternatives for NAME, an IDENTIFIER_NODE for which name
4222 lookup failed. Search through all available namespaces and print out
4223 possible candidates. */
4225 void
4226 suggest_alternatives_for (location_t location, tree name)
4228 vec<tree> candidates = vNULL;
4229 vec<tree> namespaces_to_search = vNULL;
4230 int max_to_search = PARAM_VALUE (CXX_MAX_NAMESPACES_FOR_DIAGNOSTIC_HELP);
4231 int n_searched = 0;
4232 tree t;
4233 unsigned ix;
4235 namespaces_to_search.safe_push (global_namespace);
4237 while (!namespaces_to_search.is_empty ()
4238 && n_searched < max_to_search)
4240 tree scope = namespaces_to_search.pop ();
4241 struct scope_binding binding = EMPTY_SCOPE_BINDING;
4242 cp_binding_level *level = NAMESPACE_LEVEL (scope);
4244 /* Look in this namespace. */
4245 qualified_lookup_using_namespace (name, scope, &binding, 0);
4247 n_searched++;
4249 if (binding.value)
4250 candidates.safe_push (binding.value);
4252 /* Add child namespaces. */
4253 for (t = level->namespaces; t; t = DECL_CHAIN (t))
4254 namespaces_to_search.safe_push (t);
4257 /* If we stopped before we could examine all namespaces, inform the
4258 user. Do this even if we don't have any candidates, since there
4259 might be more candidates further down that we weren't able to
4260 find. */
4261 if (n_searched >= max_to_search
4262 && !namespaces_to_search.is_empty ())
4263 inform (location,
4264 "maximum limit of %d namespaces searched for %qE",
4265 max_to_search, name);
4267 namespaces_to_search.release ();
4269 /* Nothing useful to report. */
4270 if (candidates.is_empty ())
4271 return;
4273 inform_n (location, candidates.length (),
4274 "suggested alternative:",
4275 "suggested alternatives:");
4277 FOR_EACH_VEC_ELT (candidates, ix, t)
4278 inform (location_of (t), " %qE", t);
4280 candidates.release ();
4283 /* Unscoped lookup of a global: iterate over current namespaces,
4284 considering using-directives. */
4286 static tree
4287 unqualified_namespace_lookup_1 (tree name, int flags)
4289 tree initial = current_decl_namespace ();
4290 tree scope = initial;
4291 tree siter;
4292 cp_binding_level *level;
4293 tree val = NULL_TREE;
4295 for (; !val; scope = CP_DECL_CONTEXT (scope))
4297 struct scope_binding binding = EMPTY_SCOPE_BINDING;
4298 cxx_binding *b =
4299 cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
4301 if (b)
4302 ambiguous_decl (&binding, b, flags);
4304 /* Add all _DECLs seen through local using-directives. */
4305 for (level = current_binding_level;
4306 level->kind != sk_namespace;
4307 level = level->level_chain)
4308 if (!lookup_using_namespace (name, &binding, level->using_directives,
4309 scope, flags))
4310 /* Give up because of error. */
4311 return error_mark_node;
4313 /* Add all _DECLs seen through global using-directives. */
4314 /* XXX local and global using lists should work equally. */
4315 siter = initial;
4316 while (1)
4318 if (!lookup_using_namespace (name, &binding,
4319 DECL_NAMESPACE_USING (siter),
4320 scope, flags))
4321 /* Give up because of error. */
4322 return error_mark_node;
4323 if (siter == scope) break;
4324 siter = CP_DECL_CONTEXT (siter);
4327 val = binding.value;
4328 if (scope == global_namespace)
4329 break;
4331 return val;
4334 /* Wrapper for unqualified_namespace_lookup_1. */
4336 static tree
4337 unqualified_namespace_lookup (tree name, int flags)
4339 tree ret;
4340 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
4341 ret = unqualified_namespace_lookup_1 (name, flags);
4342 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
4343 return ret;
4346 /* Look up NAME (an IDENTIFIER_NODE) in SCOPE (either a NAMESPACE_DECL
4347 or a class TYPE). If IS_TYPE_P is TRUE, then ignore non-type
4348 bindings.
4350 Returns a DECL (or OVERLOAD, or BASELINK) representing the
4351 declaration found. If no suitable declaration can be found,
4352 ERROR_MARK_NODE is returned. If COMPLAIN is true and SCOPE is
4353 neither a class-type nor a namespace a diagnostic is issued. */
4355 tree
4356 lookup_qualified_name (tree scope, tree name, bool is_type_p, bool complain)
4358 int flags = 0;
4359 tree t = NULL_TREE;
4361 if (TREE_CODE (scope) == NAMESPACE_DECL)
4363 struct scope_binding binding = EMPTY_SCOPE_BINDING;
4365 if (is_type_p)
4366 flags |= LOOKUP_PREFER_TYPES;
4367 if (qualified_lookup_using_namespace (name, scope, &binding, flags))
4368 t = binding.value;
4370 else if (cxx_dialect != cxx98 && TREE_CODE (scope) == ENUMERAL_TYPE)
4371 t = lookup_enumerator (scope, name);
4372 else if (is_class_type (scope, complain))
4373 t = lookup_member (scope, name, 2, is_type_p, tf_warning_or_error);
4375 if (!t)
4376 return error_mark_node;
4377 return t;
4380 /* Subroutine of unqualified_namespace_lookup:
4381 Add the bindings of NAME in used namespaces to VAL.
4382 We are currently looking for names in namespace SCOPE, so we
4383 look through USINGS for using-directives of namespaces
4384 which have SCOPE as a common ancestor with the current scope.
4385 Returns false on errors. */
4387 static bool
4388 lookup_using_namespace (tree name, struct scope_binding *val,
4389 tree usings, tree scope, int flags)
4391 tree iter;
4392 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
4393 /* Iterate over all used namespaces in current, searching for using
4394 directives of scope. */
4395 for (iter = usings; iter; iter = TREE_CHAIN (iter))
4396 if (TREE_VALUE (iter) == scope)
4398 tree used = ORIGINAL_NAMESPACE (TREE_PURPOSE (iter));
4399 cxx_binding *val1 =
4400 cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (used), name);
4401 /* Resolve ambiguities. */
4402 if (val1)
4403 ambiguous_decl (val, val1, flags);
4405 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
4406 return val->value != error_mark_node;
4409 /* Returns true iff VEC contains TARGET. */
4411 static bool
4412 tree_vec_contains (vec<tree, va_gc> *vec, tree target)
4414 unsigned int i;
4415 tree elt;
4416 FOR_EACH_VEC_SAFE_ELT (vec,i,elt)
4417 if (elt == target)
4418 return true;
4419 return false;
4422 /* [namespace.qual]
4423 Accepts the NAME to lookup and its qualifying SCOPE.
4424 Returns the name/type pair found into the cxx_binding *RESULT,
4425 or false on error. */
4427 static bool
4428 qualified_lookup_using_namespace (tree name, tree scope,
4429 struct scope_binding *result, int flags)
4431 /* Maintain a list of namespaces visited... */
4432 vec<tree, va_gc> *seen = NULL;
4433 vec<tree, va_gc> *seen_inline = NULL;
4434 /* ... and a list of namespace yet to see. */
4435 vec<tree, va_gc> *todo = NULL;
4436 vec<tree, va_gc> *todo_maybe = NULL;
4437 vec<tree, va_gc> *todo_inline = NULL;
4438 tree usings;
4439 timevar_start (TV_NAME_LOOKUP);
4440 /* Look through namespace aliases. */
4441 scope = ORIGINAL_NAMESPACE (scope);
4443 /* Algorithm: Starting with SCOPE, walk through the set of used
4444 namespaces. For each used namespace, look through its inline
4445 namespace set for any bindings and usings. If no bindings are
4446 found, add any usings seen to the set of used namespaces. */
4447 vec_safe_push (todo, scope);
4449 while (todo->length ())
4451 bool found_here;
4452 scope = todo->pop ();
4453 if (tree_vec_contains (seen, scope))
4454 continue;
4455 vec_safe_push (seen, scope);
4456 vec_safe_push (todo_inline, scope);
4458 found_here = false;
4459 while (todo_inline->length ())
4461 cxx_binding *binding;
4463 scope = todo_inline->pop ();
4464 if (tree_vec_contains (seen_inline, scope))
4465 continue;
4466 vec_safe_push (seen_inline, scope);
4468 binding =
4469 cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
4470 if (binding)
4472 found_here = true;
4473 ambiguous_decl (result, binding, flags);
4476 for (usings = DECL_NAMESPACE_USING (scope); usings;
4477 usings = TREE_CHAIN (usings))
4478 if (!TREE_INDIRECT_USING (usings))
4480 if (is_associated_namespace (scope, TREE_PURPOSE (usings)))
4481 vec_safe_push (todo_inline, TREE_PURPOSE (usings));
4482 else
4483 vec_safe_push (todo_maybe, TREE_PURPOSE (usings));
4487 if (found_here)
4488 vec_safe_truncate (todo_maybe, 0);
4489 else
4490 while (vec_safe_length (todo_maybe))
4491 vec_safe_push (todo, todo_maybe->pop ());
4493 vec_free (todo);
4494 vec_free (todo_maybe);
4495 vec_free (todo_inline);
4496 vec_free (seen);
4497 vec_free (seen_inline);
4498 timevar_stop (TV_NAME_LOOKUP);
4499 return result->value != error_mark_node;
4502 /* Subroutine of outer_binding.
4504 Returns TRUE if BINDING is a binding to a template parameter of
4505 SCOPE. In that case SCOPE is the scope of a primary template
4506 parameter -- in the sense of G++, i.e, a template that has its own
4507 template header.
4509 Returns FALSE otherwise. */
4511 static bool
4512 binding_to_template_parms_of_scope_p (cxx_binding *binding,
4513 cp_binding_level *scope)
4515 tree binding_value, tmpl, tinfo;
4516 int level;
4518 if (!binding || !scope || !scope->this_entity)
4519 return false;
4521 binding_value = binding->value ? binding->value : binding->type;
4522 tinfo = get_template_info (scope->this_entity);
4524 /* BINDING_VALUE must be a template parm. */
4525 if (binding_value == NULL_TREE
4526 || (!DECL_P (binding_value)
4527 || !DECL_TEMPLATE_PARM_P (binding_value)))
4528 return false;
4530 /* The level of BINDING_VALUE. */
4531 level =
4532 template_type_parameter_p (binding_value)
4533 ? TEMPLATE_PARM_LEVEL (TEMPLATE_TYPE_PARM_INDEX
4534 (TREE_TYPE (binding_value)))
4535 : TEMPLATE_PARM_LEVEL (DECL_INITIAL (binding_value));
4537 /* The template of the current scope, iff said scope is a primary
4538 template. */
4539 tmpl = (tinfo
4540 && PRIMARY_TEMPLATE_P (TI_TEMPLATE (tinfo))
4541 ? TI_TEMPLATE (tinfo)
4542 : NULL_TREE);
4544 /* If the level of the parm BINDING_VALUE equals the depth of TMPL,
4545 then BINDING_VALUE is a parameter of TMPL. */
4546 return (tmpl && level == TMPL_PARMS_DEPTH (DECL_TEMPLATE_PARMS (tmpl)));
4549 /* Return the innermost non-namespace binding for NAME from a scope
4550 containing BINDING, or, if BINDING is NULL, the current scope.
4551 Please note that for a given template, the template parameters are
4552 considered to be in the scope containing the current scope.
4553 If CLASS_P is false, then class bindings are ignored. */
4555 cxx_binding *
4556 outer_binding (tree name,
4557 cxx_binding *binding,
4558 bool class_p)
4560 cxx_binding *outer;
4561 cp_binding_level *scope;
4562 cp_binding_level *outer_scope;
4564 if (binding)
4566 scope = binding->scope->level_chain;
4567 outer = binding->previous;
4569 else
4571 scope = current_binding_level;
4572 outer = IDENTIFIER_BINDING (name);
4574 outer_scope = outer ? outer->scope : NULL;
4576 /* Because we create class bindings lazily, we might be missing a
4577 class binding for NAME. If there are any class binding levels
4578 between the LAST_BINDING_LEVEL and the scope in which OUTER was
4579 declared, we must lookup NAME in those class scopes. */
4580 if (class_p)
4581 while (scope && scope != outer_scope && scope->kind != sk_namespace)
4583 if (scope->kind == sk_class)
4585 cxx_binding *class_binding;
4587 class_binding = get_class_binding (name, scope);
4588 if (class_binding)
4590 /* Thread this new class-scope binding onto the
4591 IDENTIFIER_BINDING list so that future lookups
4592 find it quickly. */
4593 class_binding->previous = outer;
4594 if (binding)
4595 binding->previous = class_binding;
4596 else
4597 IDENTIFIER_BINDING (name) = class_binding;
4598 return class_binding;
4601 /* If we are in a member template, the template parms of the member
4602 template are considered to be inside the scope of the containing
4603 class, but within G++ the class bindings are all pushed between the
4604 template parms and the function body. So if the outer binding is
4605 a template parm for the current scope, return it now rather than
4606 look for a class binding. */
4607 if (outer_scope && outer_scope->kind == sk_template_parms
4608 && binding_to_template_parms_of_scope_p (outer, scope))
4609 return outer;
4611 scope = scope->level_chain;
4614 return outer;
4617 /* Return the innermost block-scope or class-scope value binding for
4618 NAME, or NULL_TREE if there is no such binding. */
4620 tree
4621 innermost_non_namespace_value (tree name)
4623 cxx_binding *binding;
4624 binding = outer_binding (name, /*binding=*/NULL, /*class_p=*/true);
4625 return binding ? binding->value : NULL_TREE;
4628 /* Look up NAME in the current binding level and its superiors in the
4629 namespace of variables, functions and typedefs. Return a ..._DECL
4630 node of some kind representing its definition if there is only one
4631 such declaration, or return a TREE_LIST with all the overloaded
4632 definitions if there are many, or return 0 if it is undefined.
4633 Hidden name, either friend declaration or built-in function, are
4634 not ignored.
4636 If PREFER_TYPE is > 0, we prefer TYPE_DECLs or namespaces.
4637 If PREFER_TYPE is > 1, we reject non-type decls (e.g. namespaces).
4638 Otherwise we prefer non-TYPE_DECLs.
4640 If NONCLASS is nonzero, bindings in class scopes are ignored. If
4641 BLOCK_P is false, bindings in block scopes are ignored. */
4643 static tree
4644 lookup_name_real_1 (tree name, int prefer_type, int nonclass, bool block_p,
4645 int namespaces_only, int flags)
4647 cxx_binding *iter;
4648 tree val = NULL_TREE;
4650 /* Conversion operators are handled specially because ordinary
4651 unqualified name lookup will not find template conversion
4652 operators. */
4653 if (IDENTIFIER_TYPENAME_P (name))
4655 cp_binding_level *level;
4657 for (level = current_binding_level;
4658 level && level->kind != sk_namespace;
4659 level = level->level_chain)
4661 tree class_type;
4662 tree operators;
4664 /* A conversion operator can only be declared in a class
4665 scope. */
4666 if (level->kind != sk_class)
4667 continue;
4669 /* Lookup the conversion operator in the class. */
4670 class_type = level->this_entity;
4671 operators = lookup_fnfields (class_type, name, /*protect=*/0);
4672 if (operators)
4673 return operators;
4676 return NULL_TREE;
4679 flags |= lookup_flags (prefer_type, namespaces_only);
4681 /* First, look in non-namespace scopes. */
4683 if (current_class_type == NULL_TREE)
4684 nonclass = 1;
4686 if (block_p || !nonclass)
4687 for (iter = outer_binding (name, NULL, !nonclass);
4688 iter;
4689 iter = outer_binding (name, iter, !nonclass))
4691 tree binding;
4693 /* Skip entities we don't want. */
4694 if (LOCAL_BINDING_P (iter) ? !block_p : nonclass)
4695 continue;
4697 /* If this is the kind of thing we're looking for, we're done. */
4698 if (qualify_lookup (iter->value, flags))
4699 binding = iter->value;
4700 else if ((flags & LOOKUP_PREFER_TYPES)
4701 && qualify_lookup (iter->type, flags))
4702 binding = iter->type;
4703 else
4704 binding = NULL_TREE;
4706 if (binding)
4708 if (hidden_name_p (binding))
4710 /* A non namespace-scope binding can only be hidden in the
4711 presence of a local class, due to friend declarations.
4713 In particular, consider:
4715 struct C;
4716 void f() {
4717 struct A {
4718 friend struct B;
4719 friend struct C;
4720 void g() {
4721 B* b; // error: B is hidden
4722 C* c; // OK, finds ::C
4725 B *b; // error: B is hidden
4726 C *c; // OK, finds ::C
4727 struct B {};
4728 B *bb; // OK
4731 The standard says that "B" is a local class in "f"
4732 (but not nested within "A") -- but that name lookup
4733 for "B" does not find this declaration until it is
4734 declared directly with "f".
4736 In particular:
4738 [class.friend]
4740 If a friend declaration appears in a local class and
4741 the name specified is an unqualified name, a prior
4742 declaration is looked up without considering scopes
4743 that are outside the innermost enclosing non-class
4744 scope. For a friend function declaration, if there is
4745 no prior declaration, the program is ill-formed. For a
4746 friend class declaration, if there is no prior
4747 declaration, the class that is specified belongs to the
4748 innermost enclosing non-class scope, but if it is
4749 subsequently referenced, its name is not found by name
4750 lookup until a matching declaration is provided in the
4751 innermost enclosing nonclass scope.
4753 So just keep looking for a non-hidden binding.
4755 gcc_assert (TREE_CODE (binding) == TYPE_DECL);
4756 continue;
4758 val = binding;
4759 break;
4763 /* Now lookup in namespace scopes. */
4764 if (!val)
4765 val = unqualified_namespace_lookup (name, flags);
4767 /* If we have a single function from a using decl, pull it out. */
4768 if (val && TREE_CODE (val) == OVERLOAD && !really_overloaded_fn (val))
4769 val = OVL_FUNCTION (val);
4771 return val;
4774 /* Wrapper for lookup_name_real_1. */
4776 tree
4777 lookup_name_real (tree name, int prefer_type, int nonclass, bool block_p,
4778 int namespaces_only, int flags)
4780 tree ret;
4781 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
4782 ret = lookup_name_real_1 (name, prefer_type, nonclass, block_p,
4783 namespaces_only, flags);
4784 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
4785 return ret;
4788 tree
4789 lookup_name_nonclass (tree name)
4791 return lookup_name_real (name, 0, 1, /*block_p=*/true, 0, 0);
4794 tree
4795 lookup_function_nonclass (tree name, vec<tree, va_gc> *args, bool block_p)
4797 return
4798 lookup_arg_dependent (name,
4799 lookup_name_real (name, 0, 1, block_p, 0, 0),
4800 args, false);
4803 tree
4804 lookup_name (tree name)
4806 return lookup_name_real (name, 0, 0, /*block_p=*/true, 0, 0);
4809 tree
4810 lookup_name_prefer_type (tree name, int prefer_type)
4812 return lookup_name_real (name, prefer_type, 0, /*block_p=*/true, 0, 0);
4815 /* Look up NAME for type used in elaborated name specifier in
4816 the scopes given by SCOPE. SCOPE can be either TS_CURRENT or
4817 TS_WITHIN_ENCLOSING_NON_CLASS. Although not implied by the
4818 name, more scopes are checked if cleanup or template parameter
4819 scope is encountered.
4821 Unlike lookup_name_real, we make sure that NAME is actually
4822 declared in the desired scope, not from inheritance, nor using
4823 directive. For using declaration, there is DR138 still waiting
4824 to be resolved. Hidden name coming from an earlier friend
4825 declaration is also returned.
4827 A TYPE_DECL best matching the NAME is returned. Catching error
4828 and issuing diagnostics are caller's responsibility. */
4830 static tree
4831 lookup_type_scope_1 (tree name, tag_scope scope)
4833 cxx_binding *iter = NULL;
4834 tree val = NULL_TREE;
4836 /* Look in non-namespace scope first. */
4837 if (current_binding_level->kind != sk_namespace)
4838 iter = outer_binding (name, NULL, /*class_p=*/ true);
4839 for (; iter; iter = outer_binding (name, iter, /*class_p=*/ true))
4841 /* Check if this is the kind of thing we're looking for.
4842 If SCOPE is TS_CURRENT, also make sure it doesn't come from
4843 base class. For ITER->VALUE, we can simply use
4844 INHERITED_VALUE_BINDING_P. For ITER->TYPE, we have to use
4845 our own check.
4847 We check ITER->TYPE before ITER->VALUE in order to handle
4848 typedef struct C {} C;
4849 correctly. */
4851 if (qualify_lookup (iter->type, LOOKUP_PREFER_TYPES)
4852 && (scope != ts_current
4853 || LOCAL_BINDING_P (iter)
4854 || DECL_CONTEXT (iter->type) == iter->scope->this_entity))
4855 val = iter->type;
4856 else if ((scope != ts_current
4857 || !INHERITED_VALUE_BINDING_P (iter))
4858 && qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
4859 val = iter->value;
4861 if (val)
4862 break;
4865 /* Look in namespace scope. */
4866 if (!val)
4868 iter = cp_binding_level_find_binding_for_name
4869 (NAMESPACE_LEVEL (current_decl_namespace ()), name);
4871 if (iter)
4873 /* If this is the kind of thing we're looking for, we're done. */
4874 if (qualify_lookup (iter->type, LOOKUP_PREFER_TYPES))
4875 val = iter->type;
4876 else if (qualify_lookup (iter->value, LOOKUP_PREFER_TYPES))
4877 val = iter->value;
4882 /* Type found, check if it is in the allowed scopes, ignoring cleanup
4883 and template parameter scopes. */
4884 if (val)
4886 cp_binding_level *b = current_binding_level;
4887 while (b)
4889 if (iter->scope == b)
4890 return val;
4892 if (b->kind == sk_cleanup || b->kind == sk_template_parms
4893 || b->kind == sk_function_parms)
4894 b = b->level_chain;
4895 else if (b->kind == sk_class
4896 && scope == ts_within_enclosing_non_class)
4897 b = b->level_chain;
4898 else
4899 break;
4903 return NULL_TREE;
4906 /* Wrapper for lookup_type_scope_1. */
4908 tree
4909 lookup_type_scope (tree name, tag_scope scope)
4911 tree ret;
4912 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
4913 ret = lookup_type_scope_1 (name, scope);
4914 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
4915 return ret;
4919 /* Similar to `lookup_name' but look only in the innermost non-class
4920 binding level. */
4922 static tree
4923 lookup_name_innermost_nonclass_level_1 (tree name)
4925 cp_binding_level *b;
4926 tree t = NULL_TREE;
4928 b = innermost_nonclass_level ();
4930 if (b->kind == sk_namespace)
4932 t = IDENTIFIER_NAMESPACE_VALUE (name);
4934 /* extern "C" function() */
4935 if (t != NULL_TREE && TREE_CODE (t) == TREE_LIST)
4936 t = TREE_VALUE (t);
4938 else if (IDENTIFIER_BINDING (name)
4939 && LOCAL_BINDING_P (IDENTIFIER_BINDING (name)))
4941 cxx_binding *binding;
4942 binding = IDENTIFIER_BINDING (name);
4943 while (1)
4945 if (binding->scope == b
4946 && !(TREE_CODE (binding->value) == VAR_DECL
4947 && DECL_DEAD_FOR_LOCAL (binding->value)))
4948 return binding->value;
4950 if (b->kind == sk_cleanup)
4951 b = b->level_chain;
4952 else
4953 break;
4957 return t;
4960 /* Wrapper for lookup_name_innermost_nonclass_level_1. */
4962 tree
4963 lookup_name_innermost_nonclass_level (tree name)
4965 tree ret;
4966 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
4967 ret = lookup_name_innermost_nonclass_level_1 (name);
4968 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
4969 return ret;
4973 /* Returns true iff DECL is a block-scope extern declaration of a function
4974 or variable. */
4976 bool
4977 is_local_extern (tree decl)
4979 cxx_binding *binding;
4981 /* For functions, this is easy. */
4982 if (TREE_CODE (decl) == FUNCTION_DECL)
4983 return DECL_LOCAL_FUNCTION_P (decl);
4985 if (TREE_CODE (decl) != VAR_DECL)
4986 return false;
4987 if (!current_function_decl)
4988 return false;
4990 /* For variables, this is not easy. We need to look at the binding stack
4991 for the identifier to see whether the decl we have is a local. */
4992 for (binding = IDENTIFIER_BINDING (DECL_NAME (decl));
4993 binding && binding->scope->kind != sk_namespace;
4994 binding = binding->previous)
4995 if (binding->value == decl)
4996 return LOCAL_BINDING_P (binding);
4998 return false;
5001 /* Like lookup_name_innermost_nonclass_level, but for types. */
5003 static tree
5004 lookup_type_current_level (tree name)
5006 tree t = NULL_TREE;
5008 timevar_start (TV_NAME_LOOKUP);
5009 gcc_assert (current_binding_level->kind != sk_namespace);
5011 if (REAL_IDENTIFIER_TYPE_VALUE (name) != NULL_TREE
5012 && REAL_IDENTIFIER_TYPE_VALUE (name) != global_type_node)
5014 cp_binding_level *b = current_binding_level;
5015 while (1)
5017 if (purpose_member (name, b->type_shadowed))
5019 t = REAL_IDENTIFIER_TYPE_VALUE (name);
5020 break;
5022 if (b->kind == sk_cleanup)
5023 b = b->level_chain;
5024 else
5025 break;
5029 timevar_stop (TV_NAME_LOOKUP);
5030 return t;
5033 /* [basic.lookup.koenig] */
5034 /* A nonzero return value in the functions below indicates an error. */
5036 struct arg_lookup
5038 tree name;
5039 vec<tree, va_gc> *args;
5040 vec<tree, va_gc> *namespaces;
5041 vec<tree, va_gc> *classes;
5042 tree functions;
5043 struct pointer_set_t *fn_set;
5046 static bool arg_assoc (struct arg_lookup*, tree);
5047 static bool arg_assoc_args (struct arg_lookup*, tree);
5048 static bool arg_assoc_args_vec (struct arg_lookup*, vec<tree, va_gc> *);
5049 static bool arg_assoc_type (struct arg_lookup*, tree);
5050 static bool add_function (struct arg_lookup *, tree);
5051 static bool arg_assoc_namespace (struct arg_lookup *, tree);
5052 static bool arg_assoc_class_only (struct arg_lookup *, tree);
5053 static bool arg_assoc_bases (struct arg_lookup *, tree);
5054 static bool arg_assoc_class (struct arg_lookup *, tree);
5055 static bool arg_assoc_template_arg (struct arg_lookup*, tree);
5057 /* Add a function to the lookup structure.
5058 Returns true on error. */
5060 static bool
5061 add_function (struct arg_lookup *k, tree fn)
5063 if (!is_overloaded_fn (fn))
5064 /* All names except those of (possibly overloaded) functions and
5065 function templates are ignored. */;
5066 else if (k->fn_set && pointer_set_insert (k->fn_set, fn))
5067 /* It's already in the list. */;
5068 else if (!k->functions)
5069 k->functions = fn;
5070 else if (fn == k->functions)
5072 else
5074 k->functions = build_overload (fn, k->functions);
5075 if (TREE_CODE (k->functions) == OVERLOAD)
5076 OVL_ARG_DEPENDENT (k->functions) = true;
5079 return false;
5082 /* Returns true iff CURRENT has declared itself to be an associated
5083 namespace of SCOPE via a strong using-directive (or transitive chain
5084 thereof). Both are namespaces. */
5086 bool
5087 is_associated_namespace (tree current, tree scope)
5089 vec<tree, va_gc> *seen = make_tree_vector ();
5090 vec<tree, va_gc> *todo = make_tree_vector ();
5091 tree t;
5092 bool ret;
5094 while (1)
5096 if (scope == current)
5098 ret = true;
5099 break;
5101 vec_safe_push (seen, scope);
5102 for (t = DECL_NAMESPACE_ASSOCIATIONS (scope); t; t = TREE_CHAIN (t))
5103 if (!vec_member (TREE_PURPOSE (t), seen))
5104 vec_safe_push (todo, TREE_PURPOSE (t));
5105 if (!todo->is_empty ())
5107 scope = todo->last ();
5108 todo->pop ();
5110 else
5112 ret = false;
5113 break;
5117 release_tree_vector (seen);
5118 release_tree_vector (todo);
5120 return ret;
5123 /* Add functions of a namespace to the lookup structure.
5124 Returns true on error. */
5126 static bool
5127 arg_assoc_namespace (struct arg_lookup *k, tree scope)
5129 tree value;
5131 if (vec_member (scope, k->namespaces))
5132 return false;
5133 vec_safe_push (k->namespaces, scope);
5135 /* Check out our super-users. */
5136 for (value = DECL_NAMESPACE_ASSOCIATIONS (scope); value;
5137 value = TREE_CHAIN (value))
5138 if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
5139 return true;
5141 /* Also look down into inline namespaces. */
5142 for (value = DECL_NAMESPACE_USING (scope); value;
5143 value = TREE_CHAIN (value))
5144 if (is_associated_namespace (scope, TREE_PURPOSE (value)))
5145 if (arg_assoc_namespace (k, TREE_PURPOSE (value)))
5146 return true;
5148 value = namespace_binding (k->name, scope);
5149 if (!value)
5150 return false;
5152 for (; value; value = OVL_NEXT (value))
5154 /* We don't want to find arbitrary hidden functions via argument
5155 dependent lookup. We only want to find friends of associated
5156 classes, which we'll do via arg_assoc_class. */
5157 if (hidden_name_p (OVL_CURRENT (value)))
5158 continue;
5160 if (add_function (k, OVL_CURRENT (value)))
5161 return true;
5164 return false;
5167 /* Adds everything associated with a template argument to the lookup
5168 structure. Returns true on error. */
5170 static bool
5171 arg_assoc_template_arg (struct arg_lookup *k, tree arg)
5173 /* [basic.lookup.koenig]
5175 If T is a template-id, its associated namespaces and classes are
5176 ... the namespaces and classes associated with the types of the
5177 template arguments provided for template type parameters
5178 (excluding template template parameters); the namespaces in which
5179 any template template arguments are defined; and the classes in
5180 which any member templates used as template template arguments
5181 are defined. [Note: non-type template arguments do not
5182 contribute to the set of associated namespaces. ] */
5184 /* Consider first template template arguments. */
5185 if (TREE_CODE (arg) == TEMPLATE_TEMPLATE_PARM
5186 || TREE_CODE (arg) == UNBOUND_CLASS_TEMPLATE)
5187 return false;
5188 else if (TREE_CODE (arg) == TEMPLATE_DECL)
5190 tree ctx = CP_DECL_CONTEXT (arg);
5192 /* It's not a member template. */
5193 if (TREE_CODE (ctx) == NAMESPACE_DECL)
5194 return arg_assoc_namespace (k, ctx);
5195 /* Otherwise, it must be member template. */
5196 else
5197 return arg_assoc_class_only (k, ctx);
5199 /* It's an argument pack; handle it recursively. */
5200 else if (ARGUMENT_PACK_P (arg))
5202 tree args = ARGUMENT_PACK_ARGS (arg);
5203 int i, len = TREE_VEC_LENGTH (args);
5204 for (i = 0; i < len; ++i)
5205 if (arg_assoc_template_arg (k, TREE_VEC_ELT (args, i)))
5206 return true;
5208 return false;
5210 /* It's not a template template argument, but it is a type template
5211 argument. */
5212 else if (TYPE_P (arg))
5213 return arg_assoc_type (k, arg);
5214 /* It's a non-type template argument. */
5215 else
5216 return false;
5219 /* Adds the class and its friends to the lookup structure.
5220 Returns true on error. */
5222 static bool
5223 arg_assoc_class_only (struct arg_lookup *k, tree type)
5225 tree list, friends, context;
5227 /* Backend-built structures, such as __builtin_va_list, aren't
5228 affected by all this. */
5229 if (!CLASS_TYPE_P (type))
5230 return false;
5232 context = decl_namespace_context (type);
5233 if (arg_assoc_namespace (k, context))
5234 return true;
5236 complete_type (type);
5238 /* Process friends. */
5239 for (list = DECL_FRIENDLIST (TYPE_MAIN_DECL (type)); list;
5240 list = TREE_CHAIN (list))
5241 if (k->name == FRIEND_NAME (list))
5242 for (friends = FRIEND_DECLS (list); friends;
5243 friends = TREE_CHAIN (friends))
5245 tree fn = TREE_VALUE (friends);
5247 /* Only interested in global functions with potentially hidden
5248 (i.e. unqualified) declarations. */
5249 if (CP_DECL_CONTEXT (fn) != context)
5250 continue;
5251 /* Template specializations are never found by name lookup.
5252 (Templates themselves can be found, but not template
5253 specializations.) */
5254 if (TREE_CODE (fn) == FUNCTION_DECL && DECL_USE_TEMPLATE (fn))
5255 continue;
5256 if (add_function (k, fn))
5257 return true;
5260 return false;
5263 /* Adds the class and its bases to the lookup structure.
5264 Returns true on error. */
5266 static bool
5267 arg_assoc_bases (struct arg_lookup *k, tree type)
5269 if (arg_assoc_class_only (k, type))
5270 return true;
5272 if (TYPE_BINFO (type))
5274 /* Process baseclasses. */
5275 tree binfo, base_binfo;
5276 int i;
5278 for (binfo = TYPE_BINFO (type), i = 0;
5279 BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
5280 if (arg_assoc_bases (k, BINFO_TYPE (base_binfo)))
5281 return true;
5284 return false;
5287 /* Adds everything associated with a class argument type to the lookup
5288 structure. Returns true on error.
5290 If T is a class type (including unions), its associated classes are: the
5291 class itself; the class of which it is a member, if any; and its direct
5292 and indirect base classes. Its associated namespaces are the namespaces
5293 of which its associated classes are members. Furthermore, if T is a
5294 class template specialization, its associated namespaces and classes
5295 also include: the namespaces and classes associated with the types of
5296 the template arguments provided for template type parameters (excluding
5297 template template parameters); the namespaces of which any template
5298 template arguments are members; and the classes of which any member
5299 templates used as template template arguments are members. [ Note:
5300 non-type template arguments do not contribute to the set of associated
5301 namespaces. --end note] */
5303 static bool
5304 arg_assoc_class (struct arg_lookup *k, tree type)
5306 tree list;
5307 int i;
5309 /* Backend build structures, such as __builtin_va_list, aren't
5310 affected by all this. */
5311 if (!CLASS_TYPE_P (type))
5312 return false;
5314 if (vec_member (type, k->classes))
5315 return false;
5316 vec_safe_push (k->classes, type);
5318 if (TYPE_CLASS_SCOPE_P (type)
5319 && arg_assoc_class_only (k, TYPE_CONTEXT (type)))
5320 return true;
5322 if (arg_assoc_bases (k, type))
5323 return true;
5325 /* Process template arguments. */
5326 if (CLASSTYPE_TEMPLATE_INFO (type)
5327 && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (type)))
5329 list = INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (type));
5330 for (i = 0; i < TREE_VEC_LENGTH (list); ++i)
5331 if (arg_assoc_template_arg (k, TREE_VEC_ELT (list, i)))
5332 return true;
5335 return false;
5338 /* Adds everything associated with a given type.
5339 Returns 1 on error. */
5341 static bool
5342 arg_assoc_type (struct arg_lookup *k, tree type)
5344 /* As we do not get the type of non-type dependent expressions
5345 right, we can end up with such things without a type. */
5346 if (!type)
5347 return false;
5349 if (TYPE_PTRDATAMEM_P (type))
5351 /* Pointer to member: associate class type and value type. */
5352 if (arg_assoc_type (k, TYPE_PTRMEM_CLASS_TYPE (type)))
5353 return true;
5354 return arg_assoc_type (k, TYPE_PTRMEM_POINTED_TO_TYPE (type));
5356 else switch (TREE_CODE (type))
5358 case ERROR_MARK:
5359 return false;
5360 case VOID_TYPE:
5361 case INTEGER_TYPE:
5362 case REAL_TYPE:
5363 case COMPLEX_TYPE:
5364 case VECTOR_TYPE:
5365 case BOOLEAN_TYPE:
5366 case FIXED_POINT_TYPE:
5367 case DECLTYPE_TYPE:
5368 case NULLPTR_TYPE:
5369 return false;
5370 case RECORD_TYPE:
5371 if (TYPE_PTRMEMFUNC_P (type))
5372 return arg_assoc_type (k, TYPE_PTRMEMFUNC_FN_TYPE (type));
5373 case UNION_TYPE:
5374 return arg_assoc_class (k, type);
5375 case POINTER_TYPE:
5376 case REFERENCE_TYPE:
5377 case ARRAY_TYPE:
5378 return arg_assoc_type (k, TREE_TYPE (type));
5379 case ENUMERAL_TYPE:
5380 if (TYPE_CLASS_SCOPE_P (type)
5381 && arg_assoc_class_only (k, TYPE_CONTEXT (type)))
5382 return true;
5383 return arg_assoc_namespace (k, decl_namespace_context (type));
5384 case METHOD_TYPE:
5385 /* The basetype is referenced in the first arg type, so just
5386 fall through. */
5387 case FUNCTION_TYPE:
5388 /* Associate the parameter types. */
5389 if (arg_assoc_args (k, TYPE_ARG_TYPES (type)))
5390 return true;
5391 /* Associate the return type. */
5392 return arg_assoc_type (k, TREE_TYPE (type));
5393 case TEMPLATE_TYPE_PARM:
5394 case BOUND_TEMPLATE_TEMPLATE_PARM:
5395 return false;
5396 case TYPENAME_TYPE:
5397 return false;
5398 case LANG_TYPE:
5399 gcc_assert (type == unknown_type_node
5400 || type == init_list_type_node);
5401 return false;
5402 case TYPE_PACK_EXPANSION:
5403 return arg_assoc_type (k, PACK_EXPANSION_PATTERN (type));
5405 default:
5406 gcc_unreachable ();
5408 return false;
5411 /* Adds everything associated with arguments. Returns true on error. */
5413 static bool
5414 arg_assoc_args (struct arg_lookup *k, tree args)
5416 for (; args; args = TREE_CHAIN (args))
5417 if (arg_assoc (k, TREE_VALUE (args)))
5418 return true;
5419 return false;
5422 /* Adds everything associated with an argument vector. Returns true
5423 on error. */
5425 static bool
5426 arg_assoc_args_vec (struct arg_lookup *k, vec<tree, va_gc> *args)
5428 unsigned int ix;
5429 tree arg;
5431 FOR_EACH_VEC_SAFE_ELT (args, ix, arg)
5432 if (arg_assoc (k, arg))
5433 return true;
5434 return false;
5437 /* Adds everything associated with a given tree_node. Returns 1 on error. */
5439 static bool
5440 arg_assoc (struct arg_lookup *k, tree n)
5442 if (n == error_mark_node)
5443 return false;
5445 if (TYPE_P (n))
5446 return arg_assoc_type (k, n);
5448 if (! type_unknown_p (n))
5449 return arg_assoc_type (k, TREE_TYPE (n));
5451 if (TREE_CODE (n) == ADDR_EXPR)
5452 n = TREE_OPERAND (n, 0);
5453 if (TREE_CODE (n) == COMPONENT_REF)
5454 n = TREE_OPERAND (n, 1);
5455 if (TREE_CODE (n) == OFFSET_REF)
5456 n = TREE_OPERAND (n, 1);
5457 while (TREE_CODE (n) == TREE_LIST)
5458 n = TREE_VALUE (n);
5459 if (BASELINK_P (n))
5460 n = BASELINK_FUNCTIONS (n);
5462 if (TREE_CODE (n) == FUNCTION_DECL)
5463 return arg_assoc_type (k, TREE_TYPE (n));
5464 if (TREE_CODE (n) == TEMPLATE_ID_EXPR)
5466 /* The working paper doesn't currently say how to handle template-id
5467 arguments. The sensible thing would seem to be to handle the list
5468 of template candidates like a normal overload set, and handle the
5469 template arguments like we do for class template
5470 specializations. */
5471 tree templ = TREE_OPERAND (n, 0);
5472 tree args = TREE_OPERAND (n, 1);
5473 int ix;
5475 /* First the templates. */
5476 if (arg_assoc (k, templ))
5477 return true;
5479 /* Now the arguments. */
5480 if (args)
5481 for (ix = TREE_VEC_LENGTH (args); ix--;)
5482 if (arg_assoc_template_arg (k, TREE_VEC_ELT (args, ix)) == 1)
5483 return true;
5485 else if (TREE_CODE (n) == OVERLOAD)
5487 for (; n; n = OVL_NEXT (n))
5488 if (arg_assoc_type (k, TREE_TYPE (OVL_CURRENT (n))))
5489 return true;
5492 return false;
5495 /* Performs Koenig lookup depending on arguments, where fns
5496 are the functions found in normal lookup. */
5498 static tree
5499 lookup_arg_dependent_1 (tree name, tree fns, vec<tree, va_gc> *args,
5500 bool include_std)
5502 struct arg_lookup k;
5504 /* Remove any hidden friend functions from the list of functions
5505 found so far. They will be added back by arg_assoc_class as
5506 appropriate. */
5507 fns = remove_hidden_names (fns);
5509 k.name = name;
5510 k.args = args;
5511 k.functions = fns;
5512 k.classes = make_tree_vector ();
5514 /* We previously performed an optimization here by setting
5515 NAMESPACES to the current namespace when it was safe. However, DR
5516 164 says that namespaces that were already searched in the first
5517 stage of template processing are searched again (potentially
5518 picking up later definitions) in the second stage. */
5519 k.namespaces = make_tree_vector ();
5521 /* We used to allow duplicates and let joust discard them, but
5522 since the above change for DR 164 we end up with duplicates of
5523 all the functions found by unqualified lookup. So keep track
5524 of which ones we've seen. */
5525 if (fns)
5527 tree ovl;
5528 /* We shouldn't be here if lookup found something other than
5529 namespace-scope functions. */
5530 gcc_assert (DECL_NAMESPACE_SCOPE_P (OVL_CURRENT (fns)));
5531 k.fn_set = pointer_set_create ();
5532 for (ovl = fns; ovl; ovl = OVL_NEXT (ovl))
5533 pointer_set_insert (k.fn_set, OVL_CURRENT (ovl));
5535 else
5536 k.fn_set = NULL;
5538 if (include_std)
5539 arg_assoc_namespace (&k, std_node);
5540 arg_assoc_args_vec (&k, args);
5542 fns = k.functions;
5544 if (fns
5545 && TREE_CODE (fns) != VAR_DECL
5546 && !is_overloaded_fn (fns))
5548 error ("argument dependent lookup finds %q+D", fns);
5549 error (" in call to %qD", name);
5550 fns = error_mark_node;
5553 release_tree_vector (k.classes);
5554 release_tree_vector (k.namespaces);
5555 if (k.fn_set)
5556 pointer_set_destroy (k.fn_set);
5558 return fns;
5561 /* Wrapper for lookup_arg_dependent_1. */
5563 tree
5564 lookup_arg_dependent (tree name, tree fns, vec<tree, va_gc> *args,
5565 bool include_std)
5567 tree ret;
5568 bool subtime;
5569 subtime = timevar_cond_start (TV_NAME_LOOKUP);
5570 ret = lookup_arg_dependent_1 (name, fns, args, include_std);
5571 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
5572 return ret;
5576 /* Add namespace to using_directives. Return NULL_TREE if nothing was
5577 changed (i.e. there was already a directive), or the fresh
5578 TREE_LIST otherwise. */
5580 static tree
5581 push_using_directive_1 (tree used)
5583 tree ud = current_binding_level->using_directives;
5584 tree iter, ancestor;
5586 /* Check if we already have this. */
5587 if (purpose_member (used, ud) != NULL_TREE)
5588 return NULL_TREE;
5590 ancestor = namespace_ancestor (current_decl_namespace (), used);
5591 ud = current_binding_level->using_directives;
5592 ud = tree_cons (used, ancestor, ud);
5593 current_binding_level->using_directives = ud;
5595 /* Recursively add all namespaces used. */
5596 for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter))
5597 push_using_directive (TREE_PURPOSE (iter));
5599 return ud;
5602 /* Wrapper for push_using_directive_1. */
5604 static tree
5605 push_using_directive (tree used)
5607 tree ret;
5608 timevar_start (TV_NAME_LOOKUP);
5609 ret = push_using_directive_1 (used);
5610 timevar_stop (TV_NAME_LOOKUP);
5611 return ret;
5614 /* The type TYPE is being declared. If it is a class template, or a
5615 specialization of a class template, do any processing required and
5616 perform error-checking. If IS_FRIEND is nonzero, this TYPE is
5617 being declared a friend. B is the binding level at which this TYPE
5618 should be bound.
5620 Returns the TYPE_DECL for TYPE, which may have been altered by this
5621 processing. */
5623 static tree
5624 maybe_process_template_type_declaration (tree type, int is_friend,
5625 cp_binding_level *b)
5627 tree decl = TYPE_NAME (type);
5629 if (processing_template_parmlist)
5630 /* You can't declare a new template type in a template parameter
5631 list. But, you can declare a non-template type:
5633 template <class A*> struct S;
5635 is a forward-declaration of `A'. */
5637 else if (b->kind == sk_namespace
5638 && current_binding_level->kind != sk_namespace)
5639 /* If this new type is being injected into a containing scope,
5640 then it's not a template type. */
5642 else
5644 gcc_assert (MAYBE_CLASS_TYPE_P (type)
5645 || TREE_CODE (type) == ENUMERAL_TYPE);
5647 if (processing_template_decl)
5649 /* This may change after the call to
5650 push_template_decl_real, but we want the original value. */
5651 tree name = DECL_NAME (decl);
5653 decl = push_template_decl_real (decl, is_friend);
5654 if (decl == error_mark_node)
5655 return error_mark_node;
5657 /* If the current binding level is the binding level for the
5658 template parameters (see the comment in
5659 begin_template_parm_list) and the enclosing level is a class
5660 scope, and we're not looking at a friend, push the
5661 declaration of the member class into the class scope. In the
5662 friend case, push_template_decl will already have put the
5663 friend into global scope, if appropriate. */
5664 if (TREE_CODE (type) != ENUMERAL_TYPE
5665 && !is_friend && b->kind == sk_template_parms
5666 && b->level_chain->kind == sk_class)
5668 finish_member_declaration (CLASSTYPE_TI_TEMPLATE (type));
5670 if (!COMPLETE_TYPE_P (current_class_type))
5672 maybe_add_class_template_decl_list (current_class_type,
5673 type, /*friend_p=*/0);
5674 /* Put this UTD in the table of UTDs for the class. */
5675 if (CLASSTYPE_NESTED_UTDS (current_class_type) == NULL)
5676 CLASSTYPE_NESTED_UTDS (current_class_type) =
5677 binding_table_new (SCOPE_DEFAULT_HT_SIZE);
5679 binding_table_insert
5680 (CLASSTYPE_NESTED_UTDS (current_class_type), name, type);
5686 return decl;
5689 /* Push a tag name NAME for struct/class/union/enum type TYPE. In case
5690 that the NAME is a class template, the tag is processed but not pushed.
5692 The pushed scope depend on the SCOPE parameter:
5693 - When SCOPE is TS_CURRENT, put it into the inner-most non-sk_cleanup
5694 scope.
5695 - When SCOPE is TS_GLOBAL, put it in the inner-most non-class and
5696 non-template-parameter scope. This case is needed for forward
5697 declarations.
5698 - When SCOPE is TS_WITHIN_ENCLOSING_NON_CLASS, this is similar to
5699 TS_GLOBAL case except that names within template-parameter scopes
5700 are not pushed at all.
5702 Returns TYPE upon success and ERROR_MARK_NODE otherwise. */
5704 static tree
5705 pushtag_1 (tree name, tree type, tag_scope scope)
5707 cp_binding_level *b;
5708 tree decl;
5710 b = current_binding_level;
5711 while (/* Cleanup scopes are not scopes from the point of view of
5712 the language. */
5713 b->kind == sk_cleanup
5714 /* Neither are function parameter scopes. */
5715 || b->kind == sk_function_parms
5716 /* Neither are the scopes used to hold template parameters
5717 for an explicit specialization. For an ordinary template
5718 declaration, these scopes are not scopes from the point of
5719 view of the language. */
5720 || (b->kind == sk_template_parms
5721 && (b->explicit_spec_p || scope == ts_global))
5722 || (b->kind == sk_class
5723 && (scope != ts_current
5724 /* We may be defining a new type in the initializer
5725 of a static member variable. We allow this when
5726 not pedantic, and it is particularly useful for
5727 type punning via an anonymous union. */
5728 || COMPLETE_TYPE_P (b->this_entity))))
5729 b = b->level_chain;
5731 gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
5733 /* Do C++ gratuitous typedefing. */
5734 if (identifier_type_value_1 (name) != type)
5736 tree tdef;
5737 int in_class = 0;
5738 tree context = TYPE_CONTEXT (type);
5740 if (! context)
5742 tree cs = current_scope ();
5744 if (scope == ts_current
5745 || (cs && TREE_CODE (cs) == FUNCTION_DECL))
5746 context = cs;
5747 else if (cs != NULL_TREE && TYPE_P (cs))
5748 /* When declaring a friend class of a local class, we want
5749 to inject the newly named class into the scope
5750 containing the local class, not the namespace
5751 scope. */
5752 context = decl_function_context (get_type_decl (cs));
5754 if (!context)
5755 context = current_namespace;
5757 if (b->kind == sk_class
5758 || (b->kind == sk_template_parms
5759 && b->level_chain->kind == sk_class))
5760 in_class = 1;
5762 if (current_lang_name == lang_name_java)
5763 TYPE_FOR_JAVA (type) = 1;
5765 tdef = create_implicit_typedef (name, type);
5766 DECL_CONTEXT (tdef) = FROB_CONTEXT (context);
5767 if (scope == ts_within_enclosing_non_class)
5769 /* This is a friend. Make this TYPE_DECL node hidden from
5770 ordinary name lookup. Its corresponding TEMPLATE_DECL
5771 will be marked in push_template_decl_real. */
5772 retrofit_lang_decl (tdef);
5773 DECL_ANTICIPATED (tdef) = 1;
5774 DECL_FRIEND_P (tdef) = 1;
5777 decl = maybe_process_template_type_declaration
5778 (type, scope == ts_within_enclosing_non_class, b);
5779 if (decl == error_mark_node)
5780 return decl;
5782 if (b->kind == sk_class)
5784 if (!TYPE_BEING_DEFINED (current_class_type))
5785 return error_mark_node;
5787 if (!PROCESSING_REAL_TEMPLATE_DECL_P ())
5788 /* Put this TYPE_DECL on the TYPE_FIELDS list for the
5789 class. But if it's a member template class, we want
5790 the TEMPLATE_DECL, not the TYPE_DECL, so this is done
5791 later. */
5792 finish_member_declaration (decl);
5793 else
5794 pushdecl_class_level (decl);
5796 else if (b->kind != sk_template_parms)
5798 decl = pushdecl_with_scope_1 (decl, b, /*is_friend=*/false);
5799 if (decl == error_mark_node)
5800 return decl;
5803 if (! in_class)
5804 set_identifier_type_value_with_scope (name, tdef, b);
5806 TYPE_CONTEXT (type) = DECL_CONTEXT (decl);
5808 /* If this is a local class, keep track of it. We need this
5809 information for name-mangling, and so that it is possible to
5810 find all function definitions in a translation unit in a
5811 convenient way. (It's otherwise tricky to find a member
5812 function definition it's only pointed to from within a local
5813 class.) */
5814 if (TYPE_CONTEXT (type)
5815 && TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL)
5817 if (processing_template_decl)
5819 /* Push a DECL_EXPR so we call pushtag at the right time in
5820 template instantiation rather than in some nested context. */
5821 add_decl_expr (decl);
5823 else
5824 vec_safe_push (local_classes, type);
5827 if (b->kind == sk_class
5828 && !COMPLETE_TYPE_P (current_class_type))
5830 maybe_add_class_template_decl_list (current_class_type,
5831 type, /*friend_p=*/0);
5833 if (CLASSTYPE_NESTED_UTDS (current_class_type) == NULL)
5834 CLASSTYPE_NESTED_UTDS (current_class_type)
5835 = binding_table_new (SCOPE_DEFAULT_HT_SIZE);
5837 binding_table_insert
5838 (CLASSTYPE_NESTED_UTDS (current_class_type), name, type);
5841 decl = TYPE_NAME (type);
5842 gcc_assert (TREE_CODE (decl) == TYPE_DECL);
5844 /* Set type visibility now if this is a forward declaration. */
5845 TREE_PUBLIC (decl) = 1;
5846 determine_visibility (decl);
5848 return type;
5851 /* Wrapper for pushtag_1. */
5853 tree
5854 pushtag (tree name, tree type, tag_scope scope)
5856 tree ret;
5857 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
5858 ret = pushtag_1 (name, type, scope);
5859 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
5860 return ret;
5863 /* Subroutines for reverting temporarily to top-level for instantiation
5864 of templates and such. We actually need to clear out the class- and
5865 local-value slots of all identifiers, so that only the global values
5866 are at all visible. Simply setting current_binding_level to the global
5867 scope isn't enough, because more binding levels may be pushed. */
5868 struct saved_scope *scope_chain;
5870 /* Return true if ID has not already been marked. */
5872 static inline bool
5873 store_binding_p (tree id)
5875 if (!id || !IDENTIFIER_BINDING (id))
5876 return false;
5878 if (IDENTIFIER_MARKED (id))
5879 return false;
5881 return true;
5884 /* Add an appropriate binding to *OLD_BINDINGS which needs to already
5885 have enough space reserved. */
5887 static void
5888 store_binding (tree id, vec<cxx_saved_binding, va_gc> **old_bindings)
5890 cxx_saved_binding saved;
5892 gcc_checking_assert (store_binding_p (id));
5894 IDENTIFIER_MARKED (id) = 1;
5896 saved.identifier = id;
5897 saved.binding = IDENTIFIER_BINDING (id);
5898 saved.real_type_value = REAL_IDENTIFIER_TYPE_VALUE (id);
5899 (*old_bindings)->quick_push (saved);
5900 IDENTIFIER_BINDING (id) = NULL;
5903 static void
5904 store_bindings (tree names, vec<cxx_saved_binding, va_gc> **old_bindings)
5906 static vec<tree> bindings_need_stored = vNULL;
5907 tree t, id;
5908 size_t i;
5910 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
5911 for (t = names; t; t = TREE_CHAIN (t))
5913 if (TREE_CODE (t) == TREE_LIST)
5914 id = TREE_PURPOSE (t);
5915 else
5916 id = DECL_NAME (t);
5918 if (store_binding_p (id))
5919 bindings_need_stored.safe_push (id);
5921 if (!bindings_need_stored.is_empty ())
5923 vec_safe_reserve_exact (*old_bindings, bindings_need_stored.length ());
5924 for (i = 0; bindings_need_stored.iterate (i, &id); ++i)
5926 /* We can appearantly have duplicates in NAMES. */
5927 if (store_binding_p (id))
5928 store_binding (id, old_bindings);
5930 bindings_need_stored.truncate (0);
5932 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
5935 /* Like store_bindings, but NAMES is a vector of cp_class_binding
5936 objects, rather than a TREE_LIST. */
5938 static void
5939 store_class_bindings (vec<cp_class_binding, va_gc> *names,
5940 vec<cxx_saved_binding, va_gc> **old_bindings)
5942 static vec<tree> bindings_need_stored = vNULL;
5943 size_t i;
5944 cp_class_binding *cb;
5946 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
5947 for (i = 0; vec_safe_iterate (names, i, &cb); ++i)
5948 if (store_binding_p (cb->identifier))
5949 bindings_need_stored.safe_push (cb->identifier);
5950 if (!bindings_need_stored.is_empty ())
5952 tree id;
5953 vec_safe_reserve_exact (*old_bindings, bindings_need_stored.length ());
5954 for (i = 0; bindings_need_stored.iterate (i, &id); ++i)
5955 store_binding (id, old_bindings);
5956 bindings_need_stored.truncate (0);
5958 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
5961 void
5962 push_to_top_level (void)
5964 struct saved_scope *s;
5965 cp_binding_level *b;
5966 cxx_saved_binding *sb;
5967 size_t i;
5968 bool need_pop;
5970 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
5971 s = ggc_alloc_cleared_saved_scope ();
5973 b = scope_chain ? current_binding_level : 0;
5975 /* If we're in the middle of some function, save our state. */
5976 if (cfun)
5978 need_pop = true;
5979 push_function_context ();
5981 else
5982 need_pop = false;
5984 if (scope_chain && previous_class_level)
5985 store_class_bindings (previous_class_level->class_shadowed,
5986 &s->old_bindings);
5988 /* Have to include the global scope, because class-scope decls
5989 aren't listed anywhere useful. */
5990 for (; b; b = b->level_chain)
5992 tree t;
5994 /* Template IDs are inserted into the global level. If they were
5995 inserted into namespace level, finish_file wouldn't find them
5996 when doing pending instantiations. Therefore, don't stop at
5997 namespace level, but continue until :: . */
5998 if (global_scope_p (b))
5999 break;
6001 store_bindings (b->names, &s->old_bindings);
6002 /* We also need to check class_shadowed to save class-level type
6003 bindings, since pushclass doesn't fill in b->names. */
6004 if (b->kind == sk_class)
6005 store_class_bindings (b->class_shadowed, &s->old_bindings);
6007 /* Unwind type-value slots back to top level. */
6008 for (t = b->type_shadowed; t; t = TREE_CHAIN (t))
6009 SET_IDENTIFIER_TYPE_VALUE (TREE_PURPOSE (t), TREE_VALUE (t));
6012 FOR_EACH_VEC_SAFE_ELT (s->old_bindings, i, sb)
6013 IDENTIFIER_MARKED (sb->identifier) = 0;
6015 s->prev = scope_chain;
6016 s->bindings = b;
6017 s->need_pop_function_context = need_pop;
6018 s->function_decl = current_function_decl;
6019 s->unevaluated_operand = cp_unevaluated_operand;
6020 s->inhibit_evaluation_warnings = c_inhibit_evaluation_warnings;
6021 s->x_stmt_tree.stmts_are_full_exprs_p = true;
6023 scope_chain = s;
6024 current_function_decl = NULL_TREE;
6025 vec_alloc (current_lang_base, 10);
6026 current_lang_name = lang_name_cplusplus;
6027 current_namespace = global_namespace;
6028 push_class_stack ();
6029 cp_unevaluated_operand = 0;
6030 c_inhibit_evaluation_warnings = 0;
6031 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
6034 static void
6035 pop_from_top_level_1 (void)
6037 struct saved_scope *s = scope_chain;
6038 cxx_saved_binding *saved;
6039 size_t i;
6041 /* Clear out class-level bindings cache. */
6042 if (previous_class_level)
6043 invalidate_class_lookup_cache ();
6044 pop_class_stack ();
6046 current_lang_base = 0;
6048 scope_chain = s->prev;
6049 FOR_EACH_VEC_SAFE_ELT (s->old_bindings, i, saved)
6051 tree id = saved->identifier;
6053 IDENTIFIER_BINDING (id) = saved->binding;
6054 SET_IDENTIFIER_TYPE_VALUE (id, saved->real_type_value);
6057 /* If we were in the middle of compiling a function, restore our
6058 state. */
6059 if (s->need_pop_function_context)
6060 pop_function_context ();
6061 current_function_decl = s->function_decl;
6062 cp_unevaluated_operand = s->unevaluated_operand;
6063 c_inhibit_evaluation_warnings = s->inhibit_evaluation_warnings;
6066 /* Wrapper for pop_from_top_level_1. */
6068 void
6069 pop_from_top_level (void)
6071 bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
6072 pop_from_top_level_1 ();
6073 timevar_cond_stop (TV_NAME_LOOKUP, subtime);
6077 /* Pop off extraneous binding levels left over due to syntax errors.
6079 We don't pop past namespaces, as they might be valid. */
6081 void
6082 pop_everything (void)
6084 if (ENABLE_SCOPE_CHECKING)
6085 verbatim ("XXX entering pop_everything ()\n");
6086 while (!toplevel_bindings_p ())
6088 if (current_binding_level->kind == sk_class)
6089 pop_nested_class ();
6090 else
6091 poplevel (0, 0, 0);
6093 if (ENABLE_SCOPE_CHECKING)
6094 verbatim ("XXX leaving pop_everything ()\n");
6097 /* Emit debugging information for using declarations and directives.
6098 If input tree is overloaded fn then emit debug info for all
6099 candidates. */
6101 void
6102 cp_emit_debug_info_for_using (tree t, tree context)
6104 /* Don't try to emit any debug information if we have errors. */
6105 if (seen_error ())
6106 return;
6108 /* Ignore this FUNCTION_DECL if it refers to a builtin declaration
6109 of a builtin function. */
6110 if (TREE_CODE (t) == FUNCTION_DECL
6111 && DECL_EXTERNAL (t)
6112 && DECL_BUILT_IN (t))
6113 return;
6115 /* Do not supply context to imported_module_or_decl, if
6116 it is a global namespace. */
6117 if (context == global_namespace)
6118 context = NULL_TREE;
6120 if (BASELINK_P (t))
6121 t = BASELINK_FUNCTIONS (t);
6123 /* FIXME: Handle TEMPLATE_DECLs. */
6124 for (t = OVL_CURRENT (t); t; t = OVL_NEXT (t))
6125 if (TREE_CODE (t) != TEMPLATE_DECL)
6127 if (building_stmt_list_p ())
6128 add_stmt (build_stmt (input_location, USING_STMT, t));
6129 else
6130 (*debug_hooks->imported_module_or_decl) (t, NULL_TREE, context, false);
6134 #include "gt-cp-name-lookup.h"