]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/cpplib.h
Merge basic-improvements-branch to trunk
[thirdparty/gcc.git] / gcc / cpplib.h
index 7b3a54a3576eb12aedcb1fde635037ec357d598d..fe1f89c50f6d03b50c8281954a8f12a262286648 100644 (file)
@@ -443,6 +443,7 @@ extern const char *progname;
 #define NODE_DIAGNOSTIC (1 << 3)       /* Possible diagnostic when lexed.  */
 #define NODE_WARN      (1 << 4)        /* Warn if redefined or undefined.  */
 #define NODE_DISABLED  (1 << 5)        /* A disabled macro.  */
+#define NODE_MACRO_ARG (1 << 6)        /* Used during #define processing. */
 
 /* Different flavors of hash node.  */
 enum node_type
@@ -477,18 +478,20 @@ enum builtin_type
 struct cpp_hashnode
 {
   struct ht_identifier ident;
-  unsigned short arg_index;            /* Macro argument index.  */
-  unsigned char directive_index;       /* Index into directive table.  */
+  unsigned int is_directive : 1;
+  unsigned int directive_index : 7;    /* If is_directive, 
+                                          then index into directive table.
+                                          Otherwise, a NODE_OPERATOR. */
   unsigned char rid_code;              /* Rid code - for front ends.  */
   ENUM_BITFIELD(node_type) type : 8;   /* CPP node type.  */
   unsigned char flags;                 /* CPP flags.  */
 
-  union
+  union _cpp_hashnode_value
   {
     cpp_macro *macro;                  /* If a macro.  */
     struct answer *answers;            /* Answers to an assertion.  */
-    enum cpp_ttype operator;           /* Code for a named operator.  */
     enum builtin_type builtin;         /* Code for a builtin macro.  */
+    unsigned short arg_index;          /* Macro argument index.  */
   } value;
 };