aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@rabi.phys.columbia.edu>1998-09-30 18:15:13 +0000
committerJeff Law <law@gcc.gnu.org>1998-09-30 12:15:13 -0600
commit6fa72945c91260ee27d445fb87f4162032307180 (patch)
treeb2cba3207f5b9a1ff7b4789dccdf4b0727a0d40c /gcc/cpplib.c
parent1e326708e83b2e03807c689f14ed3772cd346efc (diff)
downloadgcc-6fa72945c91260ee27d445fb87f4162032307180.zip
gcc-6fa72945c91260ee27d445fb87f4162032307180.tar.gz
gcc-6fa72945c91260ee27d445fb87f4162032307180.tar.bz2
toplev.c (documented_lang_options): Recognize -include, -imacros, -iwithprefix, -iwithprefixbefore.
* 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
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r--gcc/cpplib.c74
1 files changed, 37 insertions, 37 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 7521723..c605a4a 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -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;
}