aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpphash.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cpphash.h')
-rw-r--r--gcc/cpphash.h37
1 files changed, 15 insertions, 22 deletions
diff --git a/gcc/cpphash.h b/gcc/cpphash.h
index 498dee5..edb61f7 100644
--- a/gcc/cpphash.h
+++ b/gcc/cpphash.h
@@ -45,35 +45,28 @@ enum node_type
T_CONST, /* Constant string, used by `__SIZE_TYPE__' etc */
T_XCONST, /* Ditto, but the string is malloced memory */
T_POISON, /* poisoned identifier */
- T_MCONST, /* object-like macro defined to a single identifier */
- T_MACRO, /* general object-like macro */
- T_FMACRO, /* general function-like macro */
+ T_MACRO, /* object-like macro */
+ T_FMACRO, /* function-like macro */
T_IDENTITY, /* macro defined to itself */
T_EMPTY /* macro defined to nothing */
};
-/* different kinds of things that can appear in the value field
- of a hash node. */
-union hashval
-{
- const char *cpval; /* some predefined macros */
- struct definition *defn; /* #define */
- struct hashnode *aschain; /* #assert */
-};
-
typedef struct hashnode HASHNODE;
struct hashnode
{
- const U_CHAR *name; /* the actual name */
- size_t length; /* length of token, for quick comparison */
- unsigned long hash; /* cached hash value */
- union hashval value; /* pointer to expansion, or whatever */
- enum node_type type; /* type of special token */
- int disabled; /* macro turned off for rescan? */
-
- const char *file; /* File, line, column of definition; */
- int line;
- int col;
+ unsigned int hash; /* cached hash value */
+ unsigned short length; /* length of name */
+ ENUM_BITFIELD(node_type) type : 8; /* node type */
+ char disabled; /* macro turned off for rescan? */
+
+ union {
+ const char *cpval; /* some predefined macros */
+ const struct object_defn *odefn; /* #define foo bar */
+ const struct funct_defn *fdefn; /* #define foo(x) bar(x) */
+ struct hashnode *aschain; /* #assert */
+ } value;
+
+ const U_CHAR *name;
};
/* List of directories to look for include files in. */