(dump_single_macro, dump_defn_1): If -traditional, dump macros in traditional style.
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 8 Nov 1994 12:27:24 +0000 (07:27 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 8 Nov 1994 12:27:24 +0000 (07:27 -0500)
(dump_single_macro, dump_defn_1): If -traditional, dump macros in
traditional style.  This also avoids a bogus error message if the
macro uses traditional stringizing.

From-SVN: r8405

gcc/cccp.c

index 889285b912bd1510d8b007b23a3ec7ead4b94285..a53ce0f3347614eaab2058b210ee79d0e3c99f86 100644 (file)
@@ -9031,16 +9031,18 @@ dump_single_macro (hp, of)
   concat = 0;
   for (ap = defn->pattern; ap != NULL; ap = ap->next) {
     dump_defn_1 (defn->expansion, offset, ap->nchars, of);
-    if (ap->nchars != 0)
-      concat = 0;
     offset += ap->nchars;
-    if (ap->stringify)
-      fprintf (of, " #");
-    if (ap->raw_before && !concat)
-      fprintf (of, " ## ");
-    concat = 0;
+    if (!traditional) {
+      if (ap->nchars != 0)
+       concat = 0;
+      if (ap->stringify)
+       fprintf (of, " #");
+      if (ap->raw_before && !concat)
+       fprintf (of, " ## ");
+      concat = 0;
+    }
     dump_arg_n (defn, ap->argno, of);
-    if (ap->raw_after) {
+    if (!traditional && ap->raw_after) {
       fprintf (of, " ## ");
       concat = 1;
     }
@@ -9069,7 +9071,7 @@ dump_all_macros ()
 /* Output to OF a substring of a macro definition.
    BASE is the beginning of the definition.
    Output characters START thru LENGTH.
-   Discard newlines outside of strings, thus
+   Unless traditional, discard newlines outside of strings, thus
    converting funny-space markers to ordinary spaces.  */
 
 static void
@@ -9082,16 +9084,20 @@ dump_defn_1 (base, start, length, of)
   U_CHAR *p = base + start;
   U_CHAR *limit = base + start + length;
 
-  while (p < limit) {
-    if (*p == '\"' || *p =='\'') {
-      U_CHAR *p1 = skip_quoted_string (p, limit, 0, NULL_PTR,
-                                      NULL_PTR, NULL_PTR);
-      fwrite (p, p1 - p, 1, of);
-      p = p1;
-    } else {
-      if (*p != '\n')
-       putc (*p, of);
-      p++;
+  if (traditional)
+    fwrite (p, sizeof (*p), length, of);
+  else {
+    while (p < limit) {
+      if (*p == '\"' || *p =='\'') {
+       U_CHAR *p1 = skip_quoted_string (p, limit, 0, NULL_PTR,
+                                        NULL_PTR, NULL_PTR);
+       fwrite (p, sizeof (*p), p1 - p, of);
+       p = p1;
+      } else {
+       if (*p != '\n')
+         putc (*p, of);
+       p++;
+      }
     }
   }
 }