cpplib: Tweak struct cpp_token

Neil Booth NeilB@earthling.net
Mon Nov 6 10:42:00 GMT 2000


This will help in the stdio bypass, as well as adding a small amount
of clarity.  Bootstrapped and make check x86 Linux.

Neil.

	* c-lex.c (c_lex): Replace tok.val.aux with tok.val.c or
	tok.val.arg_no as appropriate.
	* cppexp.c (lex): Similarly.
	* cpplex.c (_cpp_lex_token, cpp_spell_token, cpp_output_token,
	cpp_equiv_tokens, cpp_can_paste, cpp_avoid_paste): Similarly.
	* cppmacro.c (stringify_arg, replace_args, lex_expansion_token,
	cpp_macro_definition): Similarly.
	* cpplib.h (struct cpp_token): Replace aux with c and arg_no.

Index: c-lex.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/c-lex.c,v
retrieving revision 1.107
diff -u -p -r1.107 c-lex.c
--- c-lex.c	2000/11/02 08:05:44	1.107
+++ c-lex.c	2000/11/06 18:39:00
@@ -1440,12 +1440,12 @@ c_lex (value)
     case CPP_OPEN_BRACE:  indent_level++;  break;
     case CPP_CLOSE_BRACE: indent_level--;  break;
 
-    /* Issue this error here, where we can get at tok.val.aux.  */
+    /* Issue this error here, where we can get at tok.val.c.  */
     case CPP_OTHER:
-      if (ISGRAPH (tok.val.aux))
-	error ("stray '%c' in program", tok.val.aux);
+      if (ISGRAPH (tok.val.c))
+	error ("stray '%c' in program", tok.val.c);
       else
-	error ("stray '\\%#o' in program", tok.val.aux);
+	error ("stray '\\%#o' in program", tok.val.c);
       goto retry;
       
     case CPP_NAME:
Index: cppexp.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cppexp.c,v
retrieving revision 1.75
diff -u -p -r1.75 cppexp.c
--- cppexp.c	2000/10/28 17:59:04	1.75
+++ cppexp.c	2000/11/06 18:39:03
@@ -401,10 +401,10 @@ lex (pfile, skip_evaluation, token)
       SYNTAX_ERROR ("floating point numbers are not valid in #if");
 
     case CPP_OTHER:
-      if (ISGRAPH (token->val.aux))
-	SYNTAX_ERROR2 ("invalid character '%c' in #if", token->val.aux);
+      if (ISGRAPH (token->val.c))
+	SYNTAX_ERROR2 ("invalid character '%c' in #if", token->val.c);
       else
-	SYNTAX_ERROR2 ("invalid character '\\%03o' in #if", token->val.aux);
+	SYNTAX_ERROR2 ("invalid character '\\%03o' in #if", token->val.c);
 
     case CPP_NAME:
       if (token->val.node == pfile->spec_nodes.n_defined)
Index: cpplex.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cpplex.c,v
retrieving revision 1.111
diff -u -p -r1.111 cpplex.c
--- cpplex.c	2000/11/04 11:13:22	1.111
+++ cpplex.c	2000/11/06 18:39:06
@@ -1241,7 +1241,7 @@ _cpp_lex_token (pfile, result)
     random_char:
     default:
       result->type = CPP_OTHER;
-      result->val.aux = c;
+      result->val.c = c;
       break;
     }
 }
@@ -1321,7 +1321,7 @@ cpp_spell_token (pfile, token, buffer)
       break;
 
     case SPELL_CHAR:
-      *buffer++ = token->val.aux;
+      *buffer++ = token->val.c;
       break;
 
     case SPELL_NONE:
@@ -1410,7 +1410,7 @@ cpp_output_token (token, fp)
       break;
 
     case SPELL_CHAR:
-      putc (token->val.aux, fp);
+      putc (token->val.c, fp);
       break;
 
     case SPELL_NONE:
@@ -1431,9 +1431,9 @@ _cpp_equiv_tokens (a, b)
       case SPELL_OPERATOR:
 	return 1;
       case SPELL_CHAR:
-	return a->val.aux == b->val.aux; /* Character.  */
+	return a->val.c == b->val.c; /* Character.  */
       case SPELL_NONE:
-	return (a->type != CPP_MACRO_ARG || a->val.aux == b->val.aux);
+	return (a->type != CPP_MACRO_ARG || a->val.c == b->val.c);
       case SPELL_IDENT:
 	return a->val.node == b->val.node;
       case SPELL_STRING:
@@ -1565,7 +1565,7 @@ cpp_can_paste (pfile, token1, token2, di
       break;
 
     case CPP_OTHER:
-      if (CPP_OPTION (pfile, objc) && token1->val.aux == '@')
+      if (CPP_OPTION (pfile, objc) && token1->val.c == '@')
 	{
 	  if (b == CPP_NAME)	return CPP_NAME;
 	  if (b == CPP_STRING)	return CPP_OSTRING;
@@ -1627,7 +1627,7 @@ cpp_avoid_paste (pfile, token1, token2)
     case CPP_NUMBER:	return (b == CPP_NUMBER || b == CPP_NAME
 				|| c == '.' || c == '+' || c == '-');
     case CPP_OTHER:	return (CPP_OPTION (pfile, objc)
-				&& token1->val.aux == '@'
+				&& token1->val.c == '@'
 				&& (b == CPP_NAME || b == CPP_STRING));
     default:		break;
     }
Index: cpplib.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cpplib.h,v
retrieving revision 1.130
diff -u -p -r1.130 cpplib.h
--- cpplib.h	2000/11/01 07:32:23	1.130
+++ cpplib.h	2000/11/06 18:39:12
@@ -183,11 +183,11 @@ struct cpp_token
 
   union
   {
-    HOST_WIDEST_INT integer;	/* an integer */
-    struct cpp_hashnode *node;	/* an identifier */
-    struct cpp_string str;	/* a string, or number */
-    unsigned int aux;		/* argument no. for a CPP_MACRO_ARG, or
-				   character represented by CPP_OTHER.  */
+    HOST_WIDEST_INT integer;	/* An integer.  */
+    struct cpp_hashnode *node;	/* An identifier.  */
+    struct cpp_string str;	/* A string, or number.  */
+    unsigned int arg_no;	/* Argument no. for a CPP_MACRO_ARG.  */
+    unsigned char c;		/* Character represented by CPP_OTHER.  */
   } val;
 };
 
Index: cppmacro.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cppmacro.c,v
retrieving revision 1.18
diff -u -p -r1.18 cppmacro.c
--- cppmacro.c	2000/11/01 07:32:23	1.18
+++ cppmacro.c	2000/11/06 18:39:17
@@ -386,7 +386,7 @@ stringify_arg (pfile, arg)
 	dest = cpp_spell_token (pfile, token, dest);
       total_len = dest - start;
 
-      if (token->type == CPP_OTHER && token->val.aux == '\\')
+      if (token->type == CPP_OTHER && token->val.c == '\\')
 	backslash_count++;
       else
 	backslash_count = 0;
@@ -790,7 +790,7 @@ replace_args (pfile, macro, args, list)
       {
 	/* We have an argument.  If it is not being stringified or
 	   pasted it is macro-replaced before insertion.  */
-	arg = &args[src->val.aux - 1];
+	arg = &args[src->val.arg_no - 1];
 	if (src->flags & STRINGIFY_ARG)
 	  {
 	    if (!arg->stringified)
@@ -818,7 +818,7 @@ replace_args (pfile, macro, args, list)
 	unsigned int count;
 	const cpp_token *from;
 
-	arg = &args[src->val.aux - 1];
+	arg = &args[src->val.arg_no - 1];
 	if (src->flags & STRINGIFY_ARG)
 	  from = arg->stringified, count = 1;
 	else if ((src->flags & PASTE_LEFT)
@@ -832,7 +832,7 @@ replace_args (pfile, macro, args, list)
            it is a variable argument, it is also flagged.  */
 	dest->flags &= ~PREV_WHITE;
 	dest->flags |= src->flags & PREV_WHITE;
-	if (macro->var_args && src->val.aux == macro->paramc)
+	if (macro->var_args && src->val.arg_no == macro->paramc)
 	  dest->flags |= VARARGS_FIRST;
 
 	/* The last token gets the PASTE_LEFT of the CPP_MACRO_ARG.  */
@@ -1392,7 +1392,7 @@ lex_expansion_token (pfile, macro)
   if (token->type == CPP_NAME && token->val.node->arg_index)
     {
       token->type = CPP_MACRO_ARG;
-      token->val.aux = token->val.node->arg_index;
+      token->val.arg_no = token->val.node->arg_index;
     }
   else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0
 	   && (token->type == CPP_STRING || token->type == CPP_CHAR))
@@ -1624,7 +1624,7 @@ cpp_macro_definition (pfile, node)
 	  cpp_token *token = &macro->expansion[i];
 
 	  if (token->type == CPP_MACRO_ARG)
-	    len += macro->params[token->val.aux - 1]->length;
+	    len += macro->params[token->val.arg_no - 1]->length;
 	  else
 	    len += cpp_token_len (token); /* Includes room for ' '.  */
 	  if (token->flags & STRINGIFY_ARG)
@@ -1675,8 +1675,8 @@ cpp_macro_definition (pfile, node)
 
 	  if (token->type == CPP_MACRO_ARG)
 	    {
-	      len = macro->params[token->val.aux - 1]->length;
-	      memcpy (buffer, macro->params[token->val.aux - 1]->name, len);
+	      len = macro->params[token->val.arg_no - 1]->length;
+	      memcpy (buffer, macro->params[token->val.arg_no - 1]->name, len);
 	      buffer += len;
 	    }
 	  else


More information about the Gcc-patches mailing list