toplev.c (documented_lang_options): Recognize -include, -imacros, -iwithprefix, ...
authorZack Weinberg <zack@rabi.phys.columbia.edu>
Wed, 30 Sep 1998 18:15:13 +0000 (18:15 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 30 Sep 1998 18:15:13 +0000 (12:15 -0600)
        * toplev.c (documented_lang_options): Recognize -include,
        -imacros, -iwithprefix, -iwithprefixbefore.
        * cpplib.c (cpp_start_read): Process -imacros and -include
        switches at the same time and in command-line order, after
        initializing the dependency-output code.  Emit properly nested
        #line directives for them.  Emit a #line for the main file
        before processing these switches, and don't do it again
        afterward.

From-SVN: r22689

gcc/ChangeLog
gcc/cpplib.c
gcc/toplev.c

index be78bfb144854ddcd6bd031b479d567a104c8367..20939cabc3b563cbd983550d5eb9db8c416eb462 100644 (file)
@@ -1,3 +1,14 @@
+Wed Sep 30 19:13:20 1998 Zack Weinberg  <zack@rabi.phys.columbia.edu>  
+
+       * toplev.c (documented_lang_options): Recognize -include,
+       -imacros, -iwithprefix, -iwithprefixbefore.
+       * cpplib.c (cpp_start_read): Process -imacros and -include
+       switches at the same time and in command-line order, after
+       initializing the dependency-output code.  Emit properly nested
+       #line directives for them.  Emit a #line for the main file
+       before processing these switches, and don't do it again
+       afterward.
+
 Wed Sep 30 18:03:22 1998  Richard Henderson  <rth@cygnus.com>
 
        * function.c (purge_addressof_1): Use bitfield manipulation
index 7521723f8b8254b9ba5a00aefc02ceb3a128617d..c605a4a9b9caec12a303f5477fdb0caf4b575ba3 100644 (file)
@@ -5972,29 +5972,6 @@ cpp_start_read (pfile, fname)
     fprintf (stderr, "End of search list.\n");
   }
 
-  /* Scan the -imacros files before the main input.
-     Much like #including them, but with no_output set
-     so that only their macro definitions matter.  */
-
-  opts->no_output++; pfile->no_record_file++;
-  for (pend = opts->pending;  pend;  pend = pend->next)
-    {
-      if (pend->cmd != NULL && strcmp (pend->cmd, "-imacros") == 0)
-       {
-         int fd = open (pend->arg, O_RDONLY, 0666);
-         if (fd < 0)
-           {
-             cpp_perror_with_name (pfile, pend->arg);
-             return 0;
-           }
-         if (!cpp_push_buffer (pfile, NULL, 0))
-             return 0;
-         finclude (pfile, fd, pend->arg, 0, NULL_PTR);
-         cpp_scan_buffer (pfile);
-       }
-    }
-  opts->no_output--; pfile->no_record_file--;
-
   /* Copy the entire contents of the main input file into
      the stacked input buffer previously allocated for it.  */
   if (fname == NULL || *fname == 0) {
@@ -6139,24 +6116,48 @@ cpp_start_read (pfile, fname)
     trigraph_pcp (fp);
 #endif
 
-  /* Scan the -include files before the main input.
-   We push these in reverse order, so that the first one is handled first.  */
+  /* Avoid a #line 0 if -include files are present. */
+  CPP_BUFFER (pfile)->lineno = 1;
+  output_line_command (pfile, 0, same_file);
+  
+  /* Scan the -include and -imacros files before the main input. */
 
   pfile->no_record_file++;
-  opts->pending = nreverse_pending (opts->pending);
   for (pend = opts->pending;  pend;  pend = pend->next)
     {
-      if (pend->cmd != NULL && strcmp (pend->cmd, "-include") == 0)
-       {
-         int fd = open (pend->arg, O_RDONLY, 0666);
-         if (fd < 0)
+      if (pend->cmd != NULL)
+        {
+         if (strcmp (pend->cmd, "-include") == 0)
            {
-             cpp_perror_with_name (pfile, pend->arg);
-             return 0;
+             int fd = open (pend->arg, O_RDONLY, 0666);
+             if (fd < 0)
+               {
+                 cpp_perror_with_name (pfile, pend->arg);
+                 return 0;
+               }
+             if (!cpp_push_buffer (pfile, NULL, 0))
+               return 0;
+             if (finclude (pfile, fd, pend->arg, 0, NULL_PTR))
+               {
+                 output_line_command (pfile, 0, enter_file);
+                 cpp_scan_buffer (pfile);
+               }
+           }
+         else if (strcmp (pend->cmd, "-imacros") == 0)
+           {
+             int fd = open (pend->arg, O_RDONLY, 0666);
+             if (fd < 0)
+               {
+                 cpp_perror_with_name (pfile, pend->arg);
+                 return 0;
+               }
+             opts->no_output++;
+             if (!cpp_push_buffer (pfile, NULL, 0))
+               return 0;
+             if (finclude (pfile, fd, pend->arg, 0, NULL_PTR))
+               cpp_scan_buffer (pfile);
+             opts->no_output--;
            }
-         if (!cpp_push_buffer (pfile, NULL, 0))
-           return 0;
-         finclude (pfile, fd, pend->arg, 0, NULL_PTR);
        }
     }
   pfile->no_record_file--;
@@ -6182,8 +6183,7 @@ cpp_start_read (pfile, fname)
     pedwarn ("file does not end in newline");
 
 #endif
-  if (finclude (pfile, f, fname, 0, NULL_PTR))
-    output_line_command (pfile, 0, same_file);
+  finclude (pfile, f, fname, 0, NULL_PTR);
   return 1;
 }
 
index e575bb443ed9fa57bb9fe26c53197452b49bf031..6ca6b93d1c1094d785501418eb8accdea6e9f4ec 100644 (file)
@@ -1047,16 +1047,20 @@ documented_lang_options[] =
   { "-I", "" },
   { "-U", "" },
   { "-idirafter", "" },
+  { "-imacros", "" },
+  { "-include", "" },
   { "-iprefix", "" },
   { "-isystem", "" },
+  { "-iwithprefix", "" },
+  { "-iwithprefixbefore", "" },
   { "-lang-c", "" },
   { "-lang-c89", "" },
   { "-lang-c++", "" },
+  { "-remap", "" },
   { "-nostdinc", "" },
   { "-nostdinc++", "" },
   { "-trigraphs", "" },
   { "-undef", "" },
-  { "-remap", "" },
   
 #define DEFINE_LANG_NAME(NAME) { NULL, NAME },