OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [cp/] [name-lookup.c] - Blame information for rev 16

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.