]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cpplib.c (output_line_command): Drop CONDITIONAL argument.
authorZack Weinberg <zack@rabi.columbia.edu>
Mon, 19 Apr 1999 11:55:04 +0000 (11:55 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Mon, 19 Apr 1999 11:55:04 +0000 (11:55 +0000)
1999-04-19 14:51 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
* cpplib.c (output_line_command): Drop CONDITIONAL argument.
We can omit unnecessary line commands if file_change ==
same_file and pfile->lineno != 0.  All callers changed.
(cpp_get_token [case '\n']): Don't bump pfile->lineno if
CPP_OPTIONS (pfile)->no_line_commands is set.
* cpplib.h: Fix prototype of output_line_command.

From-SVN: r26547

gcc/ChangeLog
gcc/cppinit.c
gcc/cpplib.c
gcc/cpplib.h

index f8f5aa336615333a05d6c115b38d9f2305087d85..d3dc6a26396f70cc546cbbe1c51d11276e74511f 100644 (file)
@@ -1,3 +1,12 @@
+1999-04-19 14:51 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
+
+       * cpplib.c (output_line_command): Drop CONDITIONAL argument.
+       We can omit unnecessary line commands if file_change ==
+       same_file and pfile->lineno != 0.  All callers changed.
+       (cpp_get_token [case '\n']): Don't bump pfile->lineno if
+       CPP_OPTIONS (pfile)->no_line_commands is set.
+       * cpplib.h: Fix prototype of output_line_command.
+
 1999-04-18 17:46 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
 
        * cppfiles.c (find_position, read_and_prescan): Use `unsigned
index d02a1f9b8275bf71a2f152f97a067fa10d65dbda..9b2ecca459ac1c77df8897260b34854562fd3def 100644 (file)
@@ -505,7 +505,7 @@ dump_special_to_buffer (pfile, macro_name)
 {
   static char define_directive[] = "#define ";
   int macro_name_length = strlen (macro_name);
-  output_line_command (pfile, 0, same_file);
+  output_line_command (pfile, same_file);
   CPP_RESERVE (pfile, sizeof(define_directive) + macro_name_length);
   CPP_PUTS_Q (pfile, define_directive, sizeof(define_directive)-1);
   CPP_PUTS_Q (pfile, macro_name, macro_name_length);
@@ -814,7 +814,7 @@ cpp_start_read (pfile, fname)
   while (p)
     {
       if (opts->debug_output)
-       output_line_command (pfile, 0, same_file);
+       output_line_command (pfile, same_file);
       if (p->undef)
        cpp_undef (pfile, p->arg);
       else
@@ -829,7 +829,7 @@ cpp_start_read (pfile, fname)
   while (p)
     {
       if (opts->debug_output)
-       output_line_command (pfile, 0, same_file);
+       output_line_command (pfile, same_file);
       if (p->undef)
        cpp_unassert (pfile, p->arg);
       else
@@ -980,7 +980,7 @@ cpp_start_read (pfile, fname)
   ih_fake->limit = 0;
   if (!finclude (pfile, f, ih_fake))
     return 0;
-  output_line_command (pfile, 0, same_file);
+  output_line_command (pfile, same_file);
   pfile->only_seen_white = 2;
 
   /* The -imacros files can be scanned now, but the -include files
@@ -1043,7 +1043,7 @@ cpp_start_read (pfile, fname)
       ih_fake->buf = (char *)-1;
       ih_fake->limit = 0;
       if (finclude (pfile, fd, ih_fake))
-       output_line_command (pfile, 0, enter_file);
+       output_line_command (pfile, enter_file);
 
       q = p->next;
       free (p);
@@ -1094,6 +1094,25 @@ cpp_finish (pfile)
            }
        }
     }
+
+  if (opts->dump_macros == dump_only)
+    {
+      int i;
+      HASHNODE *h;
+      MACRODEF m;
+      for (i = HASHSIZE; --i >= 0;)
+       {
+         for (h = pfile->hashtab[i]; h; h = h->next)
+           if (h->type == T_MACRO)
+             {
+               m.defn = h->value.defn;
+               m.symnam = h->name;
+               m.symlen = h->length;
+               dump_definition (pfile, m);
+               CPP_PUTC (pfile, '\n');
+             }
+       }
+    }
 }
 
 /* Handle one command-line option in (argc, argv).
index aa198dd931bc6918b18343be399d9c64e5b485a5..eb43e3ba32972f10122484d1a8fa5f57a4197e43 100644 (file)
@@ -896,19 +896,15 @@ cpp_file_buffer (pfile)
 
 /*
  * write out a #line command, for instance, after an #include file.
- * If CONDITIONAL is nonzero, we can omit the #line if it would
- * appear to be a no-op, and we can output a few newlines instead
- * if we want to increase the line number by a small amount.
  * FILE_CHANGE says whether we are entering a file, leaving, or neither.
  */
 
 void
-output_line_command (pfile, conditional, file_change)
+output_line_command (pfile, file_change)
      cpp_reader *pfile;
-     int conditional;
      enum file_change_code file_change;
 {
-  long line, col;
+  long line;
   cpp_buffer *ip = CPP_BUFFER (pfile);
 
   if (ip->fname == NULL)
@@ -918,9 +914,15 @@ output_line_command (pfile, conditional, file_change)
       || CPP_OPTIONS (pfile)->no_output)
     return;
 
-  cpp_buf_line_and_col (CPP_BUFFER (pfile), &line, &col);
+  cpp_buf_line_and_col (CPP_BUFFER (pfile), &line, NULL);
 
-  if (conditional)
+  /* If the current file has not changed, we omit the #line if it would
+     appear to be a no-op, and we output a few newlines instead
+     if we want to increase the line number by a small amount.
+     We cannot do this if pfile->lineno is zero, because that means we
+     haven't output any line commands yet.  (The very first line command
+     output is a `same_file' command.)  */
+  if (file_change == same_file && pfile->lineno != 0)
     {
       if (line == pfile->lineno)
        return;
@@ -1232,7 +1234,7 @@ do_include (pfile, keyword)
 
   if (finclude (pfile, fd, ihash))
     {
-      output_line_command (pfile, 0, enter_file);
+      output_line_command (pfile, enter_file);
       pfile->only_seen_white = 2;
     }
 
@@ -1357,7 +1359,7 @@ do_line (pfile, keyword)
      we must store a line number now that is one less.  */
   ip->lineno = new_lineno - 1;
   CPP_SET_WRITTEN (pfile, old_written);
-  output_line_command (pfile, 0, file_change);
+  output_line_command (pfile, file_change);
   return 0;
 
  bad_line_directive:
@@ -1647,7 +1649,7 @@ do_elif (pfile, keyword)
       skip_if_group (pfile);
     else {
       ++pfile->if_stack->if_succeeded; /* continue processing input */
-      output_line_command (pfile, 1, same_file);
+      output_line_command (pfile, same_file);
     }
   }
   return 0;
@@ -1786,7 +1788,7 @@ conditional_skip (pfile, skip, type, control_macro)
     return;
   } else {
     ++pfile->if_stack->if_succeeded;
-    output_line_command (pfile, 1, same_file);
+    output_line_command (pfile, same_file);
   }
 }
 
@@ -1881,7 +1883,7 @@ skip_if_group (pfile)
     {
       CPP_PUTS (pfile, "#failed\n", 8);
       pfile->lineno++;
-      output_line_command (pfile, 1, same_file);
+      output_line_command (pfile, same_file);
     }
 
   old_written = CPP_WRITTEN (pfile);
@@ -1986,7 +1988,7 @@ do_else (pfile, keyword)
     skip_if_group (pfile);
   else {
     ++pfile->if_stack->if_succeeded;   /* continue processing input */
-    output_line_command (pfile, 1, same_file);
+    output_line_command (pfile, same_file);
   }
   return 0;
 }
@@ -2041,7 +2043,7 @@ do_endif (pfile, keyword)
            }
         }
       free (temp);
-      output_line_command (pfile, 1, same_file);
+      output_line_command (pfile, same_file);
     }
   return 0;
 }
@@ -2101,7 +2103,7 @@ cpp_get_token (pfile)
              cpp_buffer *cur_buffer = CPP_BUFFER (pfile);
              CPP_BUFFER (pfile) = next_buf;
              pfile->input_stack_listing_current = 0;
-             output_line_command (pfile, 0, leave_file);
+             output_line_command (pfile, leave_file);
              CPP_BUFFER (pfile) = cur_buffer;
            }
          return CPP_POP;
@@ -2157,7 +2159,7 @@ cpp_get_token (pfile)
              /* OK, now bring us back to the state we were in before we entered
                 this branch.  We need #line because the newline for the pragma
                 could mess things up.  */
-             output_line_command (pfile, 0, same_file);
+             output_line_command (pfile, same_file);
              *(obp++) = ' ';   /* just in case, if comments are copied thru */
              *(obp++) = '/';
            }
@@ -2527,9 +2529,12 @@ cpp_get_token (pfile)
          if (pfile->only_seen_white == 0)
            pfile->only_seen_white = 1;
          CPP_BUMP_LINE (pfile);
-         pfile->lineno++;
-         if (CPP_BUFFER (pfile)->lineno != pfile->lineno)
-           output_line_command (pfile, 1, same_file);
+         if (! CPP_OPTIONS (pfile)->no_line_commands)
+           {
+             pfile->lineno++;
+             if (CPP_BUFFER (pfile)->lineno != pfile->lineno)
+               output_line_command (pfile, same_file);
+           }
          return CPP_VSPACE;
 
        case '(': token = CPP_LPAREN;    goto char1;
index bffd493232ff4a6664d2627ce433eac22e01e4a4..45f025e9717e299dc4942b45699d57d10b580b01 100644 (file)
@@ -726,7 +726,7 @@ extern int check_macro_name         PARAMS ((cpp_reader *, U_CHAR *, int));
 
 /* Last arg to output_line_command.  */
 enum file_change_code {same_file, enter_file, leave_file};
-extern void output_line_command                PARAMS ((cpp_reader *, int,
+extern void output_line_command                PARAMS ((cpp_reader *,
                                                 enum file_change_code));
 
 /* From cpperror.c */