OSDN Git Service

* cppmacro.c (make_string_token): Avoid warning.
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Jun 2001 11:34:41 +0000 (11:34 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Jun 2001 11:34:41 +0000 (11:34 +0000)
(cpp_macro_definition): Prepend the macro name.  Update
comments.
* cppmain.c (cb_define, dump_macro): Update for changes
to cpp_macro_definition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43528 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cppmacro.c
gcc/cppmain.c

index 29d1927..442c35d 100644 (file)
@@ -1,3 +1,11 @@
+2001-06-23  Neil Booth  <neil@cat.daikokuya.demon.co.uk>
+
+       * cppmacro.c (make_string_token): Avoid warning.
+       (cpp_macro_definition): Prepend the macro name.  Update
+       comments.
+       * cppmain.c (cb_define, dump_macro): Update for changes
+       to cpp_macro_definition.
+
 Sat Jun 23 10:20:03 CEST 2001  Jan Hubicka  <jh@suse.cz>
 
        * flow.c (attempt_auto_inc, try_pre_increment_1): Fix typo.
index d8ef424..e630850 100644 (file)
@@ -110,7 +110,7 @@ make_string_token (pool, token, text, len)
   token->type = CPP_STRING;
   token->val.str.text = buf;
   token->val.str.len = quote_string (buf, text, len) - buf;
-  token->val.str.text[token->val.str.len] = '\0';
+  buf[token->val.str.len] = '\0';
   token->flags = 0;
 }
 
@@ -1549,9 +1549,10 @@ check_trad_stringification (pfile, macro, string)
     }
 }
 
-/* Returns the expansion of a macro, in a format suitable to be read
-   back in again, and therefore also for DWARF 2 debugging info.
-   Caller is expected to generate the "#define NAME" bit.  The
+/* Returns the name, arguments and expansion of a macro, in a format
+   suitable to be read back in again, and therefore also for DWARF 2
+   debugging info.  e.g. "PASTE(X, Y) X ## Y", or "MACNAME EXPANSION".
+   Caller is expected to generate the "#define" bit if needed.  The
    returned text is temporary, and automatically freed later.  */
 
 const unsigned char *
@@ -1565,15 +1566,16 @@ cpp_macro_definition (pfile, node)
 
   if (node->type != NT_MACRO || (node->flags & NODE_BUILTIN))
     {
-      cpp_ice (pfile, "invalid hash type %d in dump_definition", node->type);
+      cpp_ice (pfile, "invalid hash type %d in cpp_macro_definition", node->type);
       return 0;
     }
 
   /* Calculate length.  */
-  len = 1;                     /* ' ' */
+  len = NODE_LEN (node) + 1;                   /* ' ' */
   if (macro->fun_like)
     {
-      len += 3;                /* "()" plus possible final "." of ellipsis.  */
+      len += 3;                /* "()" plus possible final "." of named
+                          varargs (we have + 2 below).  */
       for (i = 0; i < macro->paramc; i++)
        len += NODE_LEN (macro->params[i]) + 2; /* ", " */
     }
@@ -1597,7 +1599,11 @@ cpp_macro_definition (pfile, node)
       pfile->macro_buffer = (U_CHAR *) xrealloc (pfile->macro_buffer, len);
       pfile->macro_buffer_len = len;
     }
+
+  /* Fill in the buffer.  Start with the macro name.  */
   buffer = pfile->macro_buffer;
+  memcpy (buffer, NODE_NAME (node), NODE_LEN (node));
+  buffer += NODE_LEN (node);
 
   /* Parameter names.  */
   if (macro->fun_like)
index 0c5dc3d..b946a8e 100644 (file)
@@ -364,11 +364,13 @@ cb_define (pfile, node)
      cpp_hashnode *node;
 {
   maybe_print_line (cpp_get_line (pfile)->output_line);
-  fprintf (print.outf, "#define %s", NODE_NAME (node));
+  fputs ("#define ", print.outf);
 
   /* -dD command line option.  */
   if (options->dump_macros == dump_definitions)
     fputs ((const char *) cpp_macro_definition (pfile, node), print.outf);
+  else
+    fputs ((const char *) NODE_NAME (node), print.outf);
 
   putc ('\n', print.outf);
   print.lineno++;
@@ -446,7 +448,7 @@ dump_macro (pfile, node, v)
 {
   if (node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
     {
-      fprintf (print.outf, "#define %s", NODE_NAME (node));
+      fputs ("#define ", print.outf);
       fputs ((const char *) cpp_macro_definition (pfile, node), print.outf);
       putc ('\n', print.outf);
       print.lineno++;