From: Jason Merrill Date: Thu, 28 Jan 1999 09:47:48 +0000 (+0000) Subject: cp-tree.h (struct tree_binding): Replace scope field with a union. X-Git-Tag: prereleases/libgcj-0.1~1153 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c7a932b1cff62ab30552ce88caf48272243f108e;p=thirdparty%2Fgcc.git cp-tree.h (struct tree_binding): Replace scope field with a union. * cp-tree.h (struct tree_binding): Replace scope field with a union. (BINDING_SCOPE): Adjust. * decl.c (BINDING_LEVEL): Adjust. From-SVN: r24894 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7342161b75b9..d1154ef77625 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +1999-01-28 Jason Merrill + + * cp-tree.h (struct tree_binding): Replace scope field with a union. + (BINDING_SCOPE): Adjust. + * decl.c (BINDING_LEVEL): Adjust. + 1999-01-26 Jason Merrill * pt.c (instantiate_class_template): Set up the DECL_INITIAL of diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index 534fadc06087..0471be4f8078 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -138,7 +138,7 @@ typedef struct ptrmem_cst _TYPE node, or a NAMESPACE_DECL.) This macro should be used only for namespace-level bindings; on the IDENTIFIER_BINDING list BINDING_LEVEL is used instead. */ -#define BINDING_SCOPE(NODE) ((tree) ((struct tree_binding*)NODE)->scope) +#define BINDING_SCOPE(NODE) (((struct tree_binding*)NODE)->scope.scope) /* This is the declaration bound to the name. Possible values: variable, overloaded function, namespace, template, enumerator. */ @@ -159,7 +159,10 @@ typedef struct ptrmem_cst struct tree_binding { char common[sizeof (struct tree_common)]; - void* scope; + union { + tree scope; + struct binding_level *level; + } scope; tree value; }; diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 401158192879..95b16d29abee 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1039,7 +1039,7 @@ pushlevel_temporary (tag_transparent) /* For a binding between a name and an entity at a block scope, this is the `struct binding_level' for the block. */ #define BINDING_LEVEL(NODE) \ - ((struct binding_level*) ((struct tree_binding*)NODE)->scope) + (((struct tree_binding*)NODE)->scope.level) /* These are currently unused, but permanent, CPLUS_BINDING nodes. They are kept here because they are allocated from the permanent