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