Commit 2c140474 by Diego Novillo Committed by Diego Novillo

name-lookup.h (cp_binding_level): Rename from cxx_scope.

	* name-lookup.h (cp_binding_level): Rename from cxx_scope.
	Update all users.
	(struct cp_binding_level): Fix indentation.

From-SVN: r176218
parent 38ab02db
2011-07-12 Diego Novillo <dnovillo@google.com>
* name-lookup.h (cp_binding_level): Rename from cxx_scope.
Update all users.
(struct cp_binding_level): Fix indentation.
2011-07-11 Jason Merrill <jason@redhat.com> 2011-07-11 Jason Merrill <jason@redhat.com>
PR c++/49672 PR c++/49672
......
...@@ -950,7 +950,7 @@ struct GTY(()) saved_scope { ...@@ -950,7 +950,7 @@ struct GTY(()) saved_scope {
VEC(tree,gc) *lang_base; VEC(tree,gc) *lang_base;
tree lang_name; tree lang_name;
tree template_parms; tree template_parms;
struct cp_binding_level *x_previous_class_level; cp_binding_level *x_previous_class_level;
tree x_saved_tree; tree x_saved_tree;
/* Only used for uses of this in trailing return type. */ /* Only used for uses of this in trailing return type. */
...@@ -967,8 +967,8 @@ struct GTY(()) saved_scope { ...@@ -967,8 +967,8 @@ struct GTY(()) saved_scope {
struct stmt_tree_s x_stmt_tree; struct stmt_tree_s x_stmt_tree;
struct cp_binding_level *class_bindings; cp_binding_level *class_bindings;
struct cp_binding_level *bindings; cp_binding_level *bindings;
struct saved_scope *prev; struct saved_scope *prev;
}; };
...@@ -1054,7 +1054,7 @@ struct GTY(()) language_function { ...@@ -1054,7 +1054,7 @@ struct GTY(()) language_function {
BOOL_BITFIELD can_throw : 1; BOOL_BITFIELD can_throw : 1;
htab_t GTY((param_is(struct named_label_entry))) x_named_labels; htab_t GTY((param_is(struct named_label_entry))) x_named_labels;
struct cp_binding_level *bindings; cp_binding_level *bindings;
VEC(tree,gc) *x_local_names; VEC(tree,gc) *x_local_names;
htab_t GTY((param_is (struct cxx_int_tree_map))) extern_decl_map; htab_t GTY((param_is (struct cxx_int_tree_map))) extern_decl_map;
}; };
...@@ -1944,7 +1944,7 @@ struct GTY(()) lang_decl_fn { ...@@ -1944,7 +1944,7 @@ struct GTY(()) lang_decl_fn {
struct GTY(()) lang_decl_ns { struct GTY(()) lang_decl_ns {
struct lang_decl_base base; struct lang_decl_base base;
struct cp_binding_level *level; cp_binding_level *level;
}; };
/* DECL_LANG_SPECIFIC for parameters. */ /* DECL_LANG_SPECIFIC for parameters. */
...@@ -4860,7 +4860,7 @@ extern tree make_anon_name (void); ...@@ -4860,7 +4860,7 @@ extern tree make_anon_name (void);
extern tree pushdecl_top_level_maybe_friend (tree, bool); extern tree pushdecl_top_level_maybe_friend (tree, bool);
extern tree pushdecl_top_level_and_finish (tree, tree); extern tree pushdecl_top_level_and_finish (tree, tree);
extern tree check_for_out_of_scope_variable (tree); extern tree check_for_out_of_scope_variable (tree);
extern void print_other_binding_stack (struct cp_binding_level *); extern void print_other_binding_stack (cp_binding_level *);
extern tree maybe_push_decl (tree); extern tree maybe_push_decl (tree);
extern tree current_decl_namespace (void); extern tree current_decl_namespace (void);
......
...@@ -184,7 +184,7 @@ struct GTY((chain_next ("%h.next"))) named_label_use_entry { ...@@ -184,7 +184,7 @@ struct GTY((chain_next ("%h.next"))) named_label_use_entry {
/* The binding level to which this entry is *currently* attached. /* The binding level to which this entry is *currently* attached.
This is initially the binding level in which the goto appeared, This is initially the binding level in which the goto appeared,
but is modified as scopes are closed. */ but is modified as scopes are closed. */
struct cp_binding_level *binding_level; cp_binding_level *binding_level;
/* The head of the names list that was current when the goto appeared, /* The head of the names list that was current when the goto appeared,
or the inner scope popped. These are the decls that will *not* be or the inner scope popped. These are the decls that will *not* be
skipped when jumping to the label. */ skipped when jumping to the label. */
...@@ -208,7 +208,7 @@ struct GTY(()) named_label_entry { ...@@ -208,7 +208,7 @@ struct GTY(()) named_label_entry {
/* The binding level to which the label is *currently* attached. /* The binding level to which the label is *currently* attached.
This is initially set to the binding level in which the label This is initially set to the binding level in which the label
is defined, but is modified as scopes are closed. */ is defined, but is modified as scopes are closed. */
struct cp_binding_level *binding_level; cp_binding_level *binding_level;
/* The head of the names list that was current when the label was /* The head of the names list that was current when the label was
defined, or the inner scope popped. These are the decls that will defined, or the inner scope popped. These are the decls that will
be skipped when jumping to the label. */ be skipped when jumping to the label. */
...@@ -270,7 +270,7 @@ current_tmpl_spec_kind (int n_class_scopes) ...@@ -270,7 +270,7 @@ current_tmpl_spec_kind (int n_class_scopes)
int n_template_parm_scopes = 0; int n_template_parm_scopes = 0;
int seen_specialization_p = 0; int seen_specialization_p = 0;
int innermost_specialization_p = 0; int innermost_specialization_p = 0;
struct cp_binding_level *b; cp_binding_level *b;
/* Scan through the template parameter scopes. */ /* Scan through the template parameter scopes. */
for (b = current_binding_level; for (b = current_binding_level;
...@@ -447,7 +447,7 @@ objc_get_current_scope (void) ...@@ -447,7 +447,7 @@ objc_get_current_scope (void)
void void
objc_mark_locals_volatile (void *enclosing_blk) objc_mark_locals_volatile (void *enclosing_blk)
{ {
struct cp_binding_level *scope; cp_binding_level *scope;
for (scope = current_binding_level; for (scope = current_binding_level;
scope && scope != enclosing_blk; scope && scope != enclosing_blk;
...@@ -470,8 +470,8 @@ static int ...@@ -470,8 +470,8 @@ static int
poplevel_named_label_1 (void **slot, void *data) poplevel_named_label_1 (void **slot, void *data)
{ {
struct named_label_entry *ent = (struct named_label_entry *) *slot; struct named_label_entry *ent = (struct named_label_entry *) *slot;
struct cp_binding_level *bl = (struct cp_binding_level *) data; cp_binding_level *bl = (cp_binding_level *) data;
struct cp_binding_level *obl = bl->level_chain; cp_binding_level *obl = bl->level_chain;
if (ent->binding_level == bl) if (ent->binding_level == bl)
{ {
...@@ -853,7 +853,7 @@ walk_namespaces (walk_namespaces_fn f, void* data) ...@@ -853,7 +853,7 @@ walk_namespaces (walk_namespaces_fn f, void* data)
int int
wrapup_globals_for_namespace (tree name_space, void* data) wrapup_globals_for_namespace (tree name_space, void* data)
{ {
struct cp_binding_level *level = NAMESPACE_LEVEL (name_space); cp_binding_level *level = NAMESPACE_LEVEL (name_space);
VEC(tree,gc) *statics = level->static_decls; VEC(tree,gc) *statics = level->static_decls;
tree *vec = VEC_address (tree, statics); tree *vec = VEC_address (tree, statics);
int len = VEC_length (tree, statics); int len = VEC_length (tree, statics);
...@@ -2644,10 +2644,10 @@ identify_goto (tree decl, const location_t *locus) ...@@ -2644,10 +2644,10 @@ identify_goto (tree decl, const location_t *locus)
true if all is well. */ true if all is well. */
static bool static bool
check_previous_goto_1 (tree decl, struct cp_binding_level* level, tree names, check_previous_goto_1 (tree decl, cp_binding_level* level, tree names,
bool exited_omp, const location_t *locus) bool exited_omp, const location_t *locus)
{ {
struct cp_binding_level *b; cp_binding_level *b;
bool identified = false, saw_eh = false, saw_omp = false; bool identified = false, saw_eh = false, saw_omp = false;
if (exited_omp) if (exited_omp)
...@@ -2719,7 +2719,7 @@ check_previous_goto (tree decl, struct named_label_use_entry *use) ...@@ -2719,7 +2719,7 @@ check_previous_goto (tree decl, struct named_label_use_entry *use)
} }
static bool static bool
check_switch_goto (struct cp_binding_level* level) check_switch_goto (cp_binding_level* level)
{ {
return check_previous_goto_1 (NULL_TREE, level, level->names, false, NULL); return check_previous_goto_1 (NULL_TREE, level, level->names, false, NULL);
} }
...@@ -2805,7 +2805,7 @@ check_goto (tree decl) ...@@ -2805,7 +2805,7 @@ check_goto (tree decl)
error (" enters OpenMP structured block"); error (" enters OpenMP structured block");
else if (flag_openmp) else if (flag_openmp)
{ {
struct cp_binding_level *b; cp_binding_level *b;
for (b = current_binding_level; b ; b = b->level_chain) for (b = current_binding_level; b ; b = b->level_chain)
{ {
if (b == ent->binding_level) if (b == ent->binding_level)
...@@ -2831,7 +2831,7 @@ check_goto (tree decl) ...@@ -2831,7 +2831,7 @@ check_goto (tree decl)
bool bool
check_omp_return (void) check_omp_return (void)
{ {
struct cp_binding_level *b; cp_binding_level *b;
for (b = current_binding_level; b ; b = b->level_chain) for (b = current_binding_level; b ; b = b->level_chain)
if (b->kind == sk_omp) if (b->kind == sk_omp)
{ {
...@@ -2850,7 +2850,7 @@ static tree ...@@ -2850,7 +2850,7 @@ static tree
define_label_1 (location_t location, tree name) define_label_1 (location_t location, tree name)
{ {
struct named_label_entry *ent, dummy; struct named_label_entry *ent, dummy;
struct cp_binding_level *p; cp_binding_level *p;
tree decl; tree decl;
decl = lookup_label (name); decl = lookup_label (name);
...@@ -2909,7 +2909,7 @@ define_label (location_t location, tree name) ...@@ -2909,7 +2909,7 @@ define_label (location_t location, tree name)
struct cp_switch struct cp_switch
{ {
struct cp_binding_level *level; cp_binding_level *level;
struct cp_switch *next; struct cp_switch *next;
/* The SWITCH_STMT being built. */ /* The SWITCH_STMT being built. */
tree switch_stmt; tree switch_stmt;
...@@ -2990,7 +2990,7 @@ tree ...@@ -2990,7 +2990,7 @@ tree
finish_case_label (location_t loc, tree low_value, tree high_value) finish_case_label (location_t loc, tree low_value, tree high_value)
{ {
tree cond, r; tree cond, r;
struct cp_binding_level *p; cp_binding_level *p;
tree type; tree type;
if (processing_template_decl) if (processing_template_decl)
...@@ -3758,7 +3758,7 @@ cp_make_fname_decl (location_t loc, tree id, int type_dep) ...@@ -3758,7 +3758,7 @@ cp_make_fname_decl (location_t loc, tree id, int type_dep)
if (current_function_decl) if (current_function_decl)
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
if (b->kind == sk_function_parms) if (b->kind == sk_function_parms)
return error_mark_node; return error_mark_node;
while (b->level_chain->kind != sk_function_parms) while (b->level_chain->kind != sk_function_parms)
...@@ -8499,7 +8499,7 @@ grokdeclarator (const cp_declarator *declarator, ...@@ -8499,7 +8499,7 @@ grokdeclarator (const cp_declarator *declarator,
if (decl_context == NORMAL && !toplevel_bindings_p ()) if (decl_context == NORMAL && !toplevel_bindings_p ())
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
current_binding_level = b->level_chain; current_binding_level = b->level_chain;
if (current_binding_level != 0 && toplevel_bindings_p ()) if (current_binding_level != 0 && toplevel_bindings_p ())
decl_context = PARM; decl_context = PARM;
...@@ -12436,7 +12436,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags) ...@@ -12436,7 +12436,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
tree fntype; tree fntype;
tree restype; tree restype;
int doing_friend = 0; int doing_friend = 0;
struct cp_binding_level *bl; cp_binding_level *bl;
tree current_function_parms; tree current_function_parms;
struct c_fileinfo *finfo struct c_fileinfo *finfo
= get_fileinfo (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1))); = get_fileinfo (LOCATION_FILE (DECL_SOURCE_LOCATION (decl1)));
......
...@@ -43,8 +43,8 @@ struct scope_binding { ...@@ -43,8 +43,8 @@ struct scope_binding {
}; };
#define EMPTY_SCOPE_BINDING { NULL_TREE, NULL_TREE } #define EMPTY_SCOPE_BINDING { NULL_TREE, NULL_TREE }
static cxx_scope *innermost_nonclass_level (void); static cp_binding_level *innermost_nonclass_level (void);
static cxx_binding *binding_for_name (cxx_scope *, tree); static cxx_binding *binding_for_name (cp_binding_level *, tree);
static tree push_overloaded_decl (tree, int, bool); static tree push_overloaded_decl (tree, int, bool);
static bool lookup_using_namespace (tree, struct scope_binding *, tree, static bool lookup_using_namespace (tree, struct scope_binding *, tree,
tree, int); tree, int);
...@@ -315,7 +315,7 @@ cxx_binding_free (cxx_binding *binding) ...@@ -315,7 +315,7 @@ cxx_binding_free (cxx_binding *binding)
bindings) in the class scope indicated by SCOPE. */ bindings) in the class scope indicated by SCOPE. */
static cxx_binding * static cxx_binding *
new_class_binding (tree name, tree value, tree type, cxx_scope *scope) new_class_binding (tree name, tree value, tree type, cp_binding_level *scope)
{ {
cp_class_binding *cb; cp_class_binding *cb;
cxx_binding *binding; cxx_binding *binding;
...@@ -332,7 +332,7 @@ new_class_binding (tree name, tree value, tree type, cxx_scope *scope) ...@@ -332,7 +332,7 @@ new_class_binding (tree name, tree value, tree type, cxx_scope *scope)
level at which this declaration is being bound. */ level at which this declaration is being bound. */
static void static void
push_binding (tree id, tree decl, cxx_scope* level) push_binding (tree id, tree decl, cp_binding_level* level)
{ {
cxx_binding *binding; cxx_binding *binding;
...@@ -524,7 +524,7 @@ supplement_binding (cxx_binding *binding, tree decl) ...@@ -524,7 +524,7 @@ supplement_binding (cxx_binding *binding, tree decl)
/* Add DECL to the list of things declared in B. */ /* Add DECL to the list of things declared in B. */
static void static void
add_decl_to_level (tree decl, cxx_scope *b) add_decl_to_level (tree decl, cp_binding_level *b)
{ {
/* We used to record virtual tables as if they were ordinary /* We used to record virtual tables as if they were ordinary
variables, but no longer do so. */ variables, but no longer do so. */
...@@ -939,7 +939,7 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend) ...@@ -939,7 +939,7 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend)
/* Here to install a non-global value. */ /* Here to install a non-global value. */
tree oldglobal = IDENTIFIER_NAMESPACE_VALUE (name); tree oldglobal = IDENTIFIER_NAMESPACE_VALUE (name);
tree oldlocal = NULL_TREE; tree oldlocal = NULL_TREE;
cxx_scope *oldscope = NULL; cp_binding_level *oldscope = NULL;
cxx_binding *oldbinding = outer_binding (name, NULL, true); cxx_binding *oldbinding = outer_binding (name, NULL, true);
if (oldbinding) if (oldbinding)
{ {
...@@ -1036,7 +1036,7 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend) ...@@ -1036,7 +1036,7 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend)
{ {
/* Go to where the parms should be and see if we find /* Go to where the parms should be and see if we find
them there. */ them there. */
struct cp_binding_level *b = current_binding_level->level_chain; cp_binding_level *b = current_binding_level->level_chain;
if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl)) if (FUNCTION_NEEDS_BODY_BLOCK (current_function_decl))
/* Skip the ctor/dtor cleanup level. */ /* Skip the ctor/dtor cleanup level. */
...@@ -1054,7 +1054,7 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend) ...@@ -1054,7 +1054,7 @@ pushdecl_maybe_friend_1 (tree x, bool is_friend)
the containing function anyway. */ the containing function anyway. */
if (DECL_CONTEXT (oldlocal) != current_function_decl) if (DECL_CONTEXT (oldlocal) != current_function_decl)
{ {
cxx_scope *scope = current_binding_level; cp_binding_level *scope = current_binding_level;
tree context = DECL_CONTEXT (oldlocal); tree context = DECL_CONTEXT (oldlocal);
for (; scope; scope = scope->level_chain) for (; scope; scope = scope->level_chain)
{ {
...@@ -1215,7 +1215,7 @@ maybe_push_decl (tree decl) ...@@ -1215,7 +1215,7 @@ maybe_push_decl (tree decl)
void void
push_local_binding (tree id, tree decl, int flags) push_local_binding (tree id, tree decl, int flags)
{ {
struct cp_binding_level *b; cp_binding_level *b;
/* Skip over any local classes. This makes sense if we call /* Skip over any local classes. This makes sense if we call
push_local_binding with a friend decl of a local class. */ push_local_binding with a friend decl of a local class. */
...@@ -1337,7 +1337,7 @@ indent (int depth) ...@@ -1337,7 +1337,7 @@ indent (int depth)
/* Return a string describing the kind of SCOPE we have. */ /* Return a string describing the kind of SCOPE we have. */
static const char * static const char *
cxx_scope_descriptor (cxx_scope *scope) cp_binding_level_descriptor (cp_binding_level *scope)
{ {
/* The order of this table must match the "scope_kind" /* The order of this table must match the "scope_kind"
enumerators. */ enumerators. */
...@@ -1362,9 +1362,9 @@ cxx_scope_descriptor (cxx_scope *scope) ...@@ -1362,9 +1362,9 @@ cxx_scope_descriptor (cxx_scope *scope)
/* Output a debugging information about SCOPE when performing /* Output a debugging information about SCOPE when performing
ACTION at LINE. */ ACTION at LINE. */
static void static void
cxx_scope_debug (cxx_scope *scope, int line, const char *action) cp_binding_level_debug (cp_binding_level *scope, int line, const char *action)
{ {
const char *desc = cxx_scope_descriptor (scope); const char *desc = cp_binding_level_descriptor (scope);
if (scope->this_entity) if (scope->this_entity)
verbatim ("%s %s(%E) %p %d\n", action, desc, verbatim ("%s %s(%E) %p %d\n", action, desc,
scope->this_entity, (void *) scope, line); scope->this_entity, (void *) scope, line);
...@@ -1389,12 +1389,12 @@ namespace_scope_ht_size (tree ns) ...@@ -1389,12 +1389,12 @@ namespace_scope_ht_size (tree ns)
/* A chain of binding_level structures awaiting reuse. */ /* A chain of binding_level structures awaiting reuse. */
static GTY((deletable)) struct cp_binding_level *free_binding_level; static GTY((deletable)) cp_binding_level *free_binding_level;
/* Insert SCOPE as the innermost binding level. */ /* Insert SCOPE as the innermost binding level. */
void void
push_binding_level (struct cp_binding_level *scope) push_binding_level (cp_binding_level *scope)
{ {
/* Add it to the front of currently active scopes stack. */ /* Add it to the front of currently active scopes stack. */
scope->level_chain = current_binding_level; scope->level_chain = current_binding_level;
...@@ -1405,7 +1405,7 @@ push_binding_level (struct cp_binding_level *scope) ...@@ -1405,7 +1405,7 @@ push_binding_level (struct cp_binding_level *scope)
{ {
scope->binding_depth = binding_depth; scope->binding_depth = binding_depth;
indent (binding_depth); indent (binding_depth);
cxx_scope_debug (scope, input_line, "push"); cp_binding_level_debug (scope, input_line, "push");
binding_depth++; binding_depth++;
} }
} }
...@@ -1414,20 +1414,20 @@ push_binding_level (struct cp_binding_level *scope) ...@@ -1414,20 +1414,20 @@ push_binding_level (struct cp_binding_level *scope)
ENTITY is the scope of the associated C++ entity (namespace, class, ENTITY is the scope of the associated C++ entity (namespace, class,
function, C++0x enumeration); it is NULL otherwise. */ function, C++0x enumeration); it is NULL otherwise. */
cxx_scope * cp_binding_level *
begin_scope (scope_kind kind, tree entity) begin_scope (scope_kind kind, tree entity)
{ {
cxx_scope *scope; cp_binding_level *scope;
/* Reuse or create a struct for this binding level. */ /* Reuse or create a struct for this binding level. */
if (!ENABLE_SCOPE_CHECKING && free_binding_level) if (!ENABLE_SCOPE_CHECKING && free_binding_level)
{ {
scope = free_binding_level; scope = free_binding_level;
memset (scope, 0, sizeof (cxx_scope)); memset (scope, 0, sizeof (cp_binding_level));
free_binding_level = scope->level_chain; free_binding_level = scope->level_chain;
} }
else else
scope = ggc_alloc_cleared_cxx_scope (); scope = ggc_alloc_cleared_cp_binding_level ();
scope->this_entity = entity; scope->this_entity = entity;
scope->more_cleanups_ok = true; scope->more_cleanups_ok = true;
...@@ -1478,10 +1478,10 @@ begin_scope (scope_kind kind, tree entity) ...@@ -1478,10 +1478,10 @@ begin_scope (scope_kind kind, tree entity)
/* We're about to leave current scope. Pop the top of the stack of /* We're about to leave current scope. Pop the top of the stack of
currently active scopes. Return the enclosing scope, now active. */ currently active scopes. Return the enclosing scope, now active. */
cxx_scope * cp_binding_level *
leave_scope (void) leave_scope (void)
{ {
cxx_scope *scope = current_binding_level; cp_binding_level *scope = current_binding_level;
if (scope->kind == sk_namespace && class_binding_level) if (scope->kind == sk_namespace && class_binding_level)
current_binding_level = class_binding_level; current_binding_level = class_binding_level;
...@@ -1493,7 +1493,7 @@ leave_scope (void) ...@@ -1493,7 +1493,7 @@ leave_scope (void)
if (ENABLE_SCOPE_CHECKING) if (ENABLE_SCOPE_CHECKING)
{ {
indent (--binding_depth); indent (--binding_depth);
cxx_scope_debug (scope, input_line, "leave"); cp_binding_level_debug (scope, input_line, "leave");
} }
/* Move one nesting level up. */ /* Move one nesting level up. */
...@@ -1530,7 +1530,7 @@ leave_scope (void) ...@@ -1530,7 +1530,7 @@ leave_scope (void)
} }
static void static void
resume_scope (struct cp_binding_level* b) resume_scope (cp_binding_level* b)
{ {
/* Resuming binding levels is meant only for namespaces, /* Resuming binding levels is meant only for namespaces,
and those cannot nest into classes. */ and those cannot nest into classes. */
...@@ -1542,17 +1542,17 @@ resume_scope (struct cp_binding_level* b) ...@@ -1542,17 +1542,17 @@ resume_scope (struct cp_binding_level* b)
{ {
b->binding_depth = binding_depth; b->binding_depth = binding_depth;
indent (binding_depth); indent (binding_depth);
cxx_scope_debug (b, input_line, "resume"); cp_binding_level_debug (b, input_line, "resume");
binding_depth++; binding_depth++;
} }
} }
/* Return the innermost binding level that is not for a class scope. */ /* Return the innermost binding level that is not for a class scope. */
static cxx_scope * static cp_binding_level *
innermost_nonclass_level (void) innermost_nonclass_level (void)
{ {
cxx_scope *b; cp_binding_level *b;
b = current_binding_level; b = current_binding_level;
while (b->kind == sk_class) while (b->kind == sk_class)
...@@ -1594,7 +1594,7 @@ global_bindings_p (void) ...@@ -1594,7 +1594,7 @@ global_bindings_p (void)
bool bool
toplevel_bindings_p (void) toplevel_bindings_p (void)
{ {
struct cp_binding_level *b = innermost_nonclass_level (); cp_binding_level *b = innermost_nonclass_level ();
return b->kind == sk_namespace || b->kind == sk_template_parms; return b->kind == sk_namespace || b->kind == sk_template_parms;
} }
...@@ -1606,7 +1606,7 @@ toplevel_bindings_p (void) ...@@ -1606,7 +1606,7 @@ toplevel_bindings_p (void)
bool bool
namespace_bindings_p (void) namespace_bindings_p (void)
{ {
struct cp_binding_level *b = innermost_nonclass_level (); cp_binding_level *b = innermost_nonclass_level ();
return b->kind == sk_namespace; return b->kind == sk_namespace;
} }
...@@ -1666,7 +1666,7 @@ int ...@@ -1666,7 +1666,7 @@ int
function_parm_depth (void) function_parm_depth (void)
{ {
int level = 0; int level = 0;
struct cp_binding_level *b; cp_binding_level *b;
for (b = current_binding_level; for (b = current_binding_level;
b->kind == sk_function_parms; b->kind == sk_function_parms;
...@@ -1681,7 +1681,7 @@ static int no_print_functions = 0; ...@@ -1681,7 +1681,7 @@ static int no_print_functions = 0;
static int no_print_builtins = 0; static int no_print_builtins = 0;
static void static void
print_binding_level (struct cp_binding_level* lvl) print_binding_level (cp_binding_level* lvl)
{ {
tree t; tree t;
int i = 0, len; int i = 0, len;
...@@ -1743,9 +1743,9 @@ print_binding_level (struct cp_binding_level* lvl) ...@@ -1743,9 +1743,9 @@ print_binding_level (struct cp_binding_level* lvl)
} }
void void
print_other_binding_stack (struct cp_binding_level *stack) print_other_binding_stack (cp_binding_level *stack)
{ {
struct cp_binding_level *level; cp_binding_level *level;
for (level = stack; !global_scope_p (level); level = level->level_chain) for (level = stack; !global_scope_p (level); level = level->level_chain)
{ {
fprintf (stderr, "binding level %p\n", (void *) level); fprintf (stderr, "binding level %p\n", (void *) level);
...@@ -1756,7 +1756,7 @@ print_other_binding_stack (struct cp_binding_level *stack) ...@@ -1756,7 +1756,7 @@ print_other_binding_stack (struct cp_binding_level *stack)
void void
print_binding_stack (void) print_binding_stack (void)
{ {
struct cp_binding_level *b; cp_binding_level *b;
fprintf (stderr, "current_binding_level=%p\n" fprintf (stderr, "current_binding_level=%p\n"
"class_binding_level=%p\n" "class_binding_level=%p\n"
"NAMESPACE_LEVEL (global_namespace)=%p\n", "NAMESPACE_LEVEL (global_namespace)=%p\n",
...@@ -1825,7 +1825,7 @@ identifier_global_value (tree t) ...@@ -1825,7 +1825,7 @@ identifier_global_value (tree t)
the tag ID is not already defined. */ the tag ID is not already defined. */
static void static void
set_identifier_type_value_with_scope (tree id, tree decl, cxx_scope *b) set_identifier_type_value_with_scope (tree id, tree decl, cp_binding_level *b)
{ {
tree type; tree type;
...@@ -1949,7 +1949,7 @@ make_lambda_name (void) ...@@ -1949,7 +1949,7 @@ make_lambda_name (void)
/* Return (from the stack of) the BINDING, if any, established at SCOPE. */ /* Return (from the stack of) the BINDING, if any, established at SCOPE. */
static inline cxx_binding * static inline cxx_binding *
find_binding (cxx_scope *scope, cxx_binding *binding) find_binding (cp_binding_level *scope, cxx_binding *binding)
{ {
for (; binding != NULL; binding = binding->previous) for (; binding != NULL; binding = binding->previous)
if (binding->scope == scope) if (binding->scope == scope)
...@@ -1961,7 +1961,7 @@ find_binding (cxx_scope *scope, cxx_binding *binding) ...@@ -1961,7 +1961,7 @@ find_binding (cxx_scope *scope, cxx_binding *binding)
/* Return the binding for NAME in SCOPE, if any. Otherwise, return NULL. */ /* Return the binding for NAME in SCOPE, if any. Otherwise, return NULL. */
static inline cxx_binding * static inline cxx_binding *
cxx_scope_find_binding_for_name (cxx_scope *scope, tree name) cp_binding_level_find_binding_for_name (cp_binding_level *scope, tree name)
{ {
cxx_binding *b = IDENTIFIER_NAMESPACE_BINDINGS (name); cxx_binding *b = IDENTIFIER_NAMESPACE_BINDINGS (name);
if (b) if (b)
...@@ -1978,11 +1978,11 @@ cxx_scope_find_binding_for_name (cxx_scope *scope, tree name) ...@@ -1978,11 +1978,11 @@ cxx_scope_find_binding_for_name (cxx_scope *scope, tree name)
found, make a new one. */ found, make a new one. */
static cxx_binding * static cxx_binding *
binding_for_name (cxx_scope *scope, tree name) binding_for_name (cp_binding_level *scope, tree name)
{ {
cxx_binding *result; cxx_binding *result;
result = cxx_scope_find_binding_for_name (scope, name); result = cp_binding_level_find_binding_for_name (scope, name);
if (result) if (result)
return result; return result;
/* Not found, make a new one. */ /* Not found, make a new one. */
...@@ -2073,9 +2073,9 @@ push_using_decl (tree scope, tree name) ...@@ -2073,9 +2073,9 @@ push_using_decl (tree scope, tree name)
closer binding level than LEVEL. */ closer binding level than LEVEL. */
static tree static tree
pushdecl_with_scope_1 (tree x, cxx_scope *level, bool is_friend) pushdecl_with_scope_1 (tree x, cp_binding_level *level, bool is_friend)
{ {
struct cp_binding_level *b; cp_binding_level *b;
tree function_decl = current_function_decl; tree function_decl = current_function_decl;
current_function_decl = NULL_TREE; current_function_decl = NULL_TREE;
...@@ -2100,7 +2100,7 @@ pushdecl_with_scope_1 (tree x, cxx_scope *level, bool is_friend) ...@@ -2100,7 +2100,7 @@ pushdecl_with_scope_1 (tree x, cxx_scope *level, bool is_friend)
/* Wrapper for pushdecl_with_scope_1. */ /* Wrapper for pushdecl_with_scope_1. */
tree tree
pushdecl_with_scope (tree x, cxx_scope *level, bool is_friend) pushdecl_with_scope (tree x, cp_binding_level *level, bool is_friend)
{ {
tree ret; tree ret;
bool subtime = timevar_cond_start (TV_NAME_LOOKUP); bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
...@@ -2610,12 +2610,12 @@ push_inner_scope_r (tree outer, tree inner) ...@@ -2610,12 +2610,12 @@ push_inner_scope_r (tree outer, tree inner)
push_inner_scope_r (outer, prev); push_inner_scope_r (outer, prev);
if (TREE_CODE (inner) == NAMESPACE_DECL) if (TREE_CODE (inner) == NAMESPACE_DECL)
{ {
struct cp_binding_level *save_template_parm = 0; cp_binding_level *save_template_parm = 0;
/* Temporary take out template parameter scopes. They are saved /* Temporary take out template parameter scopes. They are saved
in reversed order in save_template_parm. */ in reversed order in save_template_parm. */
while (current_binding_level->kind == sk_template_parms) while (current_binding_level->kind == sk_template_parms)
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
current_binding_level = b->level_chain; current_binding_level = b->level_chain;
b->level_chain = save_template_parm; b->level_chain = save_template_parm;
save_template_parm = b; save_template_parm = b;
...@@ -2627,7 +2627,7 @@ push_inner_scope_r (tree outer, tree inner) ...@@ -2627,7 +2627,7 @@ push_inner_scope_r (tree outer, tree inner)
/* Restore template parameter scopes. */ /* Restore template parameter scopes. */
while (save_template_parm) while (save_template_parm)
{ {
struct cp_binding_level *b = save_template_parm; cp_binding_level *b = save_template_parm;
save_template_parm = b->level_chain; save_template_parm = b->level_chain;
b->level_chain = current_binding_level; b->level_chain = current_binding_level;
current_binding_level = b; current_binding_level = b;
...@@ -2669,12 +2669,12 @@ pop_inner_scope (tree outer, tree inner) ...@@ -2669,12 +2669,12 @@ pop_inner_scope (tree outer, tree inner)
{ {
if (TREE_CODE (inner) == NAMESPACE_DECL) if (TREE_CODE (inner) == NAMESPACE_DECL)
{ {
struct cp_binding_level *save_template_parm = 0; cp_binding_level *save_template_parm = 0;
/* Temporary take out template parameter scopes. They are saved /* Temporary take out template parameter scopes. They are saved
in reversed order in save_template_parm. */ in reversed order in save_template_parm. */
while (current_binding_level->kind == sk_template_parms) while (current_binding_level->kind == sk_template_parms)
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
current_binding_level = b->level_chain; current_binding_level = b->level_chain;
b->level_chain = save_template_parm; b->level_chain = save_template_parm;
save_template_parm = b; save_template_parm = b;
...@@ -2685,7 +2685,7 @@ pop_inner_scope (tree outer, tree inner) ...@@ -2685,7 +2685,7 @@ pop_inner_scope (tree outer, tree inner)
/* Restore template parameter scopes. */ /* Restore template parameter scopes. */
while (save_template_parm) while (save_template_parm)
{ {
struct cp_binding_level *b = save_template_parm; cp_binding_level *b = save_template_parm;
save_template_parm = b->level_chain; save_template_parm = b->level_chain;
b->level_chain = current_binding_level; b->level_chain = current_binding_level;
current_binding_level = b; current_binding_level = b;
...@@ -2711,7 +2711,7 @@ pushlevel_class (void) ...@@ -2711,7 +2711,7 @@ pushlevel_class (void)
void void
poplevel_class (void) poplevel_class (void)
{ {
struct cp_binding_level *level = class_binding_level; cp_binding_level *level = class_binding_level;
cp_class_binding *cb; cp_class_binding *cb;
size_t i; size_t i;
tree shadowed; tree shadowed;
...@@ -2832,7 +2832,7 @@ pushdecl_class_level (tree x) ...@@ -2832,7 +2832,7 @@ pushdecl_class_level (tree x)
is not set, callers must set the PREVIOUS field explicitly. */ is not set, callers must set the PREVIOUS field explicitly. */
static cxx_binding * static cxx_binding *
get_class_binding (tree name, cxx_scope *scope) get_class_binding (tree name, cp_binding_level *scope)
{ {
tree class_type; tree class_type;
tree type_binding; tree type_binding;
...@@ -3181,7 +3181,7 @@ namespace_binding_1 (tree name, tree scope) ...@@ -3181,7 +3181,7 @@ namespace_binding_1 (tree name, tree scope)
/* Unnecessary for the global namespace because it can't be an alias. */ /* Unnecessary for the global namespace because it can't be an alias. */
scope = ORIGINAL_NAMESPACE (scope); scope = ORIGINAL_NAMESPACE (scope);
binding = cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name); binding = cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
return binding ? binding->value : NULL_TREE; return binding ? binding->value : NULL_TREE;
} }
...@@ -3586,7 +3586,7 @@ do_namespace_alias (tree alias, tree name_space) ...@@ -3586,7 +3586,7 @@ do_namespace_alias (tree alias, tree name_space)
tree tree
pushdecl_namespace_level (tree x, bool is_friend) pushdecl_namespace_level (tree x, bool is_friend)
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
tree t; tree t;
bool subtime = timevar_cond_start (TV_NAME_LOOKUP); bool subtime = timevar_cond_start (TV_NAME_LOOKUP);
...@@ -4078,7 +4078,7 @@ suggest_alternatives_for (location_t location, tree name) ...@@ -4078,7 +4078,7 @@ suggest_alternatives_for (location_t location, tree name)
{ {
tree scope = VEC_pop (tree, namespaces_to_search); tree scope = VEC_pop (tree, namespaces_to_search);
struct scope_binding binding = EMPTY_SCOPE_BINDING; struct scope_binding binding = EMPTY_SCOPE_BINDING;
struct cp_binding_level *level = NAMESPACE_LEVEL (scope); cp_binding_level *level = NAMESPACE_LEVEL (scope);
/* Look in this namespace. */ /* Look in this namespace. */
qualified_lookup_using_namespace (name, scope, &binding, 0); qualified_lookup_using_namespace (name, scope, &binding, 0);
...@@ -4128,14 +4128,14 @@ unqualified_namespace_lookup_1 (tree name, int flags) ...@@ -4128,14 +4128,14 @@ unqualified_namespace_lookup_1 (tree name, int flags)
tree initial = current_decl_namespace (); tree initial = current_decl_namespace ();
tree scope = initial; tree scope = initial;
tree siter; tree siter;
struct cp_binding_level *level; cp_binding_level *level;
tree val = NULL_TREE; tree val = NULL_TREE;
for (; !val; scope = CP_DECL_CONTEXT (scope)) for (; !val; scope = CP_DECL_CONTEXT (scope))
{ {
struct scope_binding binding = EMPTY_SCOPE_BINDING; struct scope_binding binding = EMPTY_SCOPE_BINDING;
cxx_binding *b = cxx_binding *b =
cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name); cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
if (b) if (b)
ambiguous_decl (&binding, b, flags); ambiguous_decl (&binding, b, flags);
...@@ -4237,7 +4237,7 @@ lookup_using_namespace (tree name, struct scope_binding *val, ...@@ -4237,7 +4237,7 @@ lookup_using_namespace (tree name, struct scope_binding *val,
{ {
tree used = ORIGINAL_NAMESPACE (TREE_PURPOSE (iter)); tree used = ORIGINAL_NAMESPACE (TREE_PURPOSE (iter));
cxx_binding *val1 = cxx_binding *val1 =
cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (used), name); cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (used), name);
/* Resolve ambiguities. */ /* Resolve ambiguities. */
if (val1) if (val1)
ambiguous_decl (val, val1, flags); ambiguous_decl (val, val1, flags);
...@@ -4306,7 +4306,7 @@ qualified_lookup_using_namespace (tree name, tree scope, ...@@ -4306,7 +4306,7 @@ qualified_lookup_using_namespace (tree name, tree scope,
VEC_safe_push (tree, gc, seen_inline, scope); VEC_safe_push (tree, gc, seen_inline, scope);
binding = binding =
cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name); cp_binding_level_find_binding_for_name (NAMESPACE_LEVEL (scope), name);
if (binding) if (binding)
{ {
found_here = true; found_here = true;
...@@ -4350,7 +4350,7 @@ qualified_lookup_using_namespace (tree name, tree scope, ...@@ -4350,7 +4350,7 @@ qualified_lookup_using_namespace (tree name, tree scope,
static bool static bool
binding_to_template_parms_of_scope_p (cxx_binding *binding, binding_to_template_parms_of_scope_p (cxx_binding *binding,
cxx_scope *scope) cp_binding_level *scope)
{ {
tree binding_value; tree binding_value;
...@@ -4381,8 +4381,8 @@ outer_binding (tree name, ...@@ -4381,8 +4381,8 @@ outer_binding (tree name,
bool class_p) bool class_p)
{ {
cxx_binding *outer; cxx_binding *outer;
cxx_scope *scope; cp_binding_level *scope;
cxx_scope *outer_scope; cp_binding_level *outer_scope;
if (binding) if (binding)
{ {
...@@ -4475,7 +4475,7 @@ lookup_name_real_1 (tree name, int prefer_type, int nonclass, bool block_p, ...@@ -4475,7 +4475,7 @@ lookup_name_real_1 (tree name, int prefer_type, int nonclass, bool block_p,
operators. */ operators. */
if (IDENTIFIER_TYPENAME_P (name)) if (IDENTIFIER_TYPENAME_P (name))
{ {
struct cp_binding_level *level; cp_binding_level *level;
for (level = current_binding_level; for (level = current_binding_level;
level && level->kind != sk_namespace; level && level->kind != sk_namespace;
...@@ -4690,7 +4690,7 @@ lookup_type_scope_1 (tree name, tag_scope scope) ...@@ -4690,7 +4690,7 @@ lookup_type_scope_1 (tree name, tag_scope scope)
/* Look in namespace scope. */ /* Look in namespace scope. */
if (!val) if (!val)
{ {
iter = cxx_scope_find_binding_for_name iter = cp_binding_level_find_binding_for_name
(NAMESPACE_LEVEL (current_decl_namespace ()), name); (NAMESPACE_LEVEL (current_decl_namespace ()), name);
if (iter) if (iter)
...@@ -4708,7 +4708,7 @@ lookup_type_scope_1 (tree name, tag_scope scope) ...@@ -4708,7 +4708,7 @@ lookup_type_scope_1 (tree name, tag_scope scope)
and template parameter scopes. */ and template parameter scopes. */
if (val) if (val)
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
while (b) while (b)
{ {
if (iter->scope == b) if (iter->scope == b)
...@@ -4747,7 +4747,7 @@ lookup_type_scope (tree name, tag_scope scope) ...@@ -4747,7 +4747,7 @@ lookup_type_scope (tree name, tag_scope scope)
static tree static tree
lookup_name_innermost_nonclass_level_1 (tree name) lookup_name_innermost_nonclass_level_1 (tree name)
{ {
struct cp_binding_level *b; cp_binding_level *b;
tree t = NULL_TREE; tree t = NULL_TREE;
b = innermost_nonclass_level (); b = innermost_nonclass_level ();
...@@ -4836,7 +4836,7 @@ lookup_type_current_level (tree name) ...@@ -4836,7 +4836,7 @@ lookup_type_current_level (tree name)
if (REAL_IDENTIFIER_TYPE_VALUE (name) != NULL_TREE if (REAL_IDENTIFIER_TYPE_VALUE (name) != NULL_TREE
&& REAL_IDENTIFIER_TYPE_VALUE (name) != global_type_node) && REAL_IDENTIFIER_TYPE_VALUE (name) != global_type_node)
{ {
struct cp_binding_level *b = current_binding_level; cp_binding_level *b = current_binding_level;
while (1) while (1)
{ {
if (purpose_member (name, b->type_shadowed)) if (purpose_member (name, b->type_shadowed))
...@@ -5446,7 +5446,7 @@ push_using_directive (tree used) ...@@ -5446,7 +5446,7 @@ push_using_directive (tree used)
static tree static tree
maybe_process_template_type_declaration (tree type, int is_friend, maybe_process_template_type_declaration (tree type, int is_friend,
cxx_scope *b) cp_binding_level *b)
{ {
tree decl = TYPE_NAME (type); tree decl = TYPE_NAME (type);
...@@ -5528,7 +5528,7 @@ maybe_process_template_type_declaration (tree type, int is_friend, ...@@ -5528,7 +5528,7 @@ maybe_process_template_type_declaration (tree type, int is_friend,
static tree static tree
pushtag_1 (tree name, tree type, tag_scope scope) pushtag_1 (tree name, tree type, tag_scope scope)
{ {
struct cp_binding_level *b; cp_binding_level *b;
tree decl; tree decl;
b = current_binding_level; b = current_binding_level;
...@@ -5745,7 +5745,7 @@ void ...@@ -5745,7 +5745,7 @@ void
push_to_top_level (void) push_to_top_level (void)
{ {
struct saved_scope *s; struct saved_scope *s;
struct cp_binding_level *b; cp_binding_level *b;
cxx_saved_binding *sb; cxx_saved_binding *sb;
size_t i; size_t i;
bool need_pop; bool need_pop;
......
...@@ -53,7 +53,7 @@ extern binding_entry binding_table_find (binding_table, tree); ...@@ -53,7 +53,7 @@ extern binding_entry binding_table_find (binding_table, tree);
typedef struct cxx_binding cxx_binding; typedef struct cxx_binding cxx_binding;
/* The datatype used to implement C++ scope. */ /* The datatype used to implement C++ scope. */
typedef struct cp_binding_level cxx_scope; typedef struct cp_binding_level cp_binding_level;
/* Nonzero if this binding is for a local scope, as opposed to a class /* Nonzero if this binding is for a local scope, as opposed to a class
or namespace scope. */ or namespace scope. */
...@@ -71,7 +71,7 @@ struct GTY(()) cxx_binding { ...@@ -71,7 +71,7 @@ struct GTY(()) cxx_binding {
/* The type entity this name is bound to. */ /* The type entity this name is bound to. */
tree type; tree type;
/* The scope at which this binding was made. */ /* The scope at which this binding was made. */
cxx_scope *scope; cp_binding_level *scope;
unsigned value_is_inherited : 1; unsigned value_is_inherited : 1;
unsigned is_local : 1; unsigned is_local : 1;
}; };
...@@ -185,83 +185,83 @@ DEF_VEC_ALLOC_O(cp_label_binding,gc); ...@@ -185,83 +185,83 @@ DEF_VEC_ALLOC_O(cp_label_binding,gc);
is duplicated in the IDENTIFIER_GLOBAL_VALUEs of all identifiers. */ is duplicated in the IDENTIFIER_GLOBAL_VALUEs of all identifiers. */
struct GTY(()) cp_binding_level { struct GTY(()) cp_binding_level {
/* A chain of _DECL nodes for all variables, constants, functions, /* A chain of _DECL nodes for all variables, constants, functions,
and typedef types. These are in the reverse of the order and typedef types. These are in the reverse of the order
supplied. There may be OVERLOADs on this list, too, but they supplied. There may be OVERLOADs on this list, too, but they
are wrapped in TREE_LISTs; the TREE_VALUE is the OVERLOAD. */ are wrapped in TREE_LISTs; the TREE_VALUE is the OVERLOAD. */
tree names; tree names;
/* A chain of NAMESPACE_DECL nodes. */ /* A chain of NAMESPACE_DECL nodes. */
tree namespaces; tree namespaces;
/* An array of static functions and variables (for namespaces only) */ /* An array of static functions and variables (for namespaces only) */
VEC(tree,gc) *static_decls; VEC(tree,gc) *static_decls;
/* A list of USING_DECL nodes. */ /* A list of USING_DECL nodes. */
tree usings; tree usings;
/* A list of used namespaces. PURPOSE is the namespace, /* A list of used namespaces. PURPOSE is the namespace,
VALUE the common ancestor with this binding_level's namespace. */ VALUE the common ancestor with this binding_level's namespace. */
tree using_directives; tree using_directives;
/* For the binding level corresponding to a class, the entities /* For the binding level corresponding to a class, the entities
declared in the class or its base classes. */ declared in the class or its base classes. */
VEC(cp_class_binding,gc) *class_shadowed; VEC(cp_class_binding,gc) *class_shadowed;
/* Similar to class_shadowed, but for IDENTIFIER_TYPE_VALUE, and /* Similar to class_shadowed, but for IDENTIFIER_TYPE_VALUE, and
is used for all binding levels. The TREE_PURPOSE is the name of is used for all binding levels. The TREE_PURPOSE is the name of
the entity, the TREE_TYPE is the associated type. In addition the entity, the TREE_TYPE is the associated type. In addition
the TREE_VALUE is the IDENTIFIER_TYPE_VALUE before we entered the TREE_VALUE is the IDENTIFIER_TYPE_VALUE before we entered
the class. */ the class. */
tree type_shadowed; tree type_shadowed;
/* Similar to class_shadowed, but for IDENTIFIER_LABEL_VALUE, and /* Similar to class_shadowed, but for IDENTIFIER_LABEL_VALUE, and
used for all binding levels. */ used for all binding levels. */
VEC(cp_label_binding,gc) *shadowed_labels; VEC(cp_label_binding,gc) *shadowed_labels;
/* For each level (except not the global one), /* For each level (except not the global one),
a chain of BLOCK nodes for all the levels a chain of BLOCK nodes for all the levels
that were entered and exited one level down. */ that were entered and exited one level down. */
tree blocks; tree blocks;
/* The entity (namespace, class, function) the scope of which this /* The entity (namespace, class, function) the scope of which this
binding contour corresponds to. Otherwise NULL. */ binding contour corresponds to. Otherwise NULL. */
tree this_entity; tree this_entity;
/* The binding level which this one is contained in (inherits from). */ /* The binding level which this one is contained in (inherits from). */
struct cp_binding_level *level_chain; cp_binding_level *level_chain;
/* List of VAR_DECLS saved from a previous for statement. /* List of VAR_DECLS saved from a previous for statement.
These would be dead in ISO-conforming code, but might These would be dead in ISO-conforming code, but might
be referenced in ARM-era code. */ be referenced in ARM-era code. */
VEC(tree,gc) *dead_vars_from_for; VEC(tree,gc) *dead_vars_from_for;
/* STATEMENT_LIST for statements in this binding contour. /* STATEMENT_LIST for statements in this binding contour.
Only used at present for SK_CLEANUP temporary bindings. */ Only used at present for SK_CLEANUP temporary bindings. */
tree statement_list; tree statement_list;
/* Binding depth at which this level began. */ /* Binding depth at which this level began. */
int binding_depth; int binding_depth;
/* The kind of scope that this object represents. However, a /* The kind of scope that this object represents. However, a
SK_TEMPLATE_SPEC scope is represented with KIND set to SK_TEMPLATE_SPEC scope is represented with KIND set to
SK_TEMPLATE_PARMS and EXPLICIT_SPEC_P set to true. */ SK_TEMPLATE_PARMS and EXPLICIT_SPEC_P set to true. */
ENUM_BITFIELD (scope_kind) kind : 4; ENUM_BITFIELD (scope_kind) kind : 4;
/* True if this scope is an SK_TEMPLATE_SPEC scope. This field is /* True if this scope is an SK_TEMPLATE_SPEC scope. This field is
only valid if KIND == SK_TEMPLATE_PARMS. */ only valid if KIND == SK_TEMPLATE_PARMS. */
BOOL_BITFIELD explicit_spec_p : 1; BOOL_BITFIELD explicit_spec_p : 1;
/* true means make a BLOCK for this level regardless of all else. */ /* true means make a BLOCK for this level regardless of all else. */
unsigned keep : 1; unsigned keep : 1;
/* Nonzero if this level can safely have additional /* Nonzero if this level can safely have additional
cleanup-needing variables added to it. */ cleanup-needing variables added to it. */
unsigned more_cleanups_ok : 1; unsigned more_cleanups_ok : 1;
unsigned have_cleanups : 1; unsigned have_cleanups : 1;
/* 24 bits left to fill a 32-bit word. */ /* 24 bits left to fill a 32-bit word. */
}; };
/* The binding level currently in effect. */ /* The binding level currently in effect. */
...@@ -287,14 +287,14 @@ extern GTY(()) tree global_type_node; ...@@ -287,14 +287,14 @@ extern GTY(()) tree global_type_node;
#define global_scope_p(SCOPE) \ #define global_scope_p(SCOPE) \
((SCOPE) == NAMESPACE_LEVEL (global_namespace)) ((SCOPE) == NAMESPACE_LEVEL (global_namespace))
extern cxx_scope *leave_scope (void); extern cp_binding_level *leave_scope (void);
extern bool kept_level_p (void); extern bool kept_level_p (void);
extern bool global_bindings_p (void); extern bool global_bindings_p (void);
extern bool toplevel_bindings_p (void); extern bool toplevel_bindings_p (void);
extern bool namespace_bindings_p (void); extern bool namespace_bindings_p (void);
extern bool template_parm_scope_p (void); extern bool template_parm_scope_p (void);
extern scope_kind innermost_scope_kind (void); extern scope_kind innermost_scope_kind (void);
extern cxx_scope *begin_scope (scope_kind, tree); extern cp_binding_level *begin_scope (scope_kind, tree);
extern void print_binding_stack (void); extern void print_binding_stack (void);
extern void push_to_top_level (void); extern void push_to_top_level (void);
extern void pop_from_top_level (void); extern void pop_from_top_level (void);
...@@ -305,7 +305,7 @@ extern tree push_scope (tree); ...@@ -305,7 +305,7 @@ extern tree push_scope (tree);
extern void pop_scope (tree); extern void pop_scope (tree);
extern tree push_inner_scope (tree); extern tree push_inner_scope (tree);
extern void pop_inner_scope (tree, tree); extern void pop_inner_scope (tree, tree);
extern void push_binding_level (struct cp_binding_level *); extern void push_binding_level (cp_binding_level *);
extern void push_namespace (tree); extern void push_namespace (tree);
extern void pop_namespace (void); extern void pop_namespace (void);
...@@ -314,7 +314,7 @@ extern void pop_nested_namespace (tree); ...@@ -314,7 +314,7 @@ extern void pop_nested_namespace (tree);
extern bool handle_namespace_attrs (tree, tree); extern bool handle_namespace_attrs (tree, tree);
extern void pushlevel_class (void); extern void pushlevel_class (void);
extern void poplevel_class (void); extern void poplevel_class (void);
extern tree pushdecl_with_scope (tree, cxx_scope *, bool); extern tree pushdecl_with_scope (tree, cp_binding_level *, bool);
extern tree lookup_name_prefer_type (tree, int); extern tree lookup_name_prefer_type (tree, int);
extern tree lookup_name_real (tree, int, int, bool, int, int); extern tree lookup_name_real (tree, int, int, bool, int, int);
extern tree lookup_type_scope (tree, tag_scope); extern tree lookup_type_scope (tree, tag_scope);
......
...@@ -1791,7 +1791,7 @@ determine_specialization (tree template_id, ...@@ -1791,7 +1791,7 @@ determine_specialization (tree template_id,
with the signature of DECL. */ with the signature of DECL. */
tree templates = NULL_TREE; tree templates = NULL_TREE;
int header_count; int header_count;
struct cp_binding_level *b; cp_binding_level *b;
*targs_out = NULL_TREE; *targs_out = NULL_TREE;
......
...@@ -8452,7 +8452,7 @@ is_normal_capture_proxy (tree decl) ...@@ -8452,7 +8452,7 @@ is_normal_capture_proxy (tree decl)
static inline void static inline void
insert_capture_proxy (tree var) insert_capture_proxy (tree var)
{ {
cxx_scope *b; cp_binding_level *b;
int skip; int skip;
tree stmt_list; tree stmt_list;
...@@ -8461,7 +8461,7 @@ insert_capture_proxy (tree var) ...@@ -8461,7 +8461,7 @@ insert_capture_proxy (tree var)
b = current_binding_level; b = current_binding_level;
for (skip = 0; ; ++skip) for (skip = 0; ; ++skip)
{ {
cxx_scope *n = b->level_chain; cp_binding_level *n = b->level_chain;
if (n->kind == sk_function_parms) if (n->kind == sk_function_parms)
break; break;
b = n; b = n;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment