aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.c
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-03-02 20:14:32 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-03-02 20:14:32 +0000
commitc45da1ca925d67685ca633b48a4ca1ec44dfaca1 (patch)
tree83b50be95e2db0783f35dfe9f8625210e9368a40 /gcc/cpplib.c
parente97f22c9757e8c7bbf123b6ec1af68791f41d6fa (diff)
downloadgcc-c45da1ca925d67685ca633b48a4ca1ec44dfaca1.zip
gcc-c45da1ca925d67685ca633b48a4ca1ec44dfaca1.tar.gz
gcc-c45da1ca925d67685ca633b48a4ca1ec44dfaca1.tar.bz2
cppfiles.c (cpp_read_file): New function.
* cppfiles.c (cpp_read_file): New function. * cpphash.c (collect_expansion): Make sure to reset last_token to NORM when we hit a string. Handle trailing whitespace properly when the expansion is empty. (create_definition): Disable line commands while parsing the directive line. (dump_definition): If pfile->lineno == 0, output a line command ahead of the dump, and add a trailing newline. * cppinit.c (append_include_chain): Add fifth argument, which indicates whether or not system headers are C++ aware. (initialize_standard_includes): New function, broken out of read_and_prescan. Pass 'cxx_aware' value from the include_defaults_array on to append_include_chain. (dump_special_to_buffer): Const-ify char array. (builtin_array): Don't dump __BASE_FILE__. (cpp_start_read): Use cpp_read_file. Reorder code for clarity. Don't output line commands here for -D/-A/-U switches. Don't call deps_output for files included with -include or -imacros. * cpplib.c (do_define): Don't pay any attention to the second argument. (cpp_expand_to_buffer): Disable line commands while scanning. (output_line_command): Work in the file buffer. * cpplib.h: Remove no_record_file flag from struct cpp_reader. Fix formatting of comments. Prototype cpp_read_file. From-SVN: r32293
Diffstat (limited to 'gcc/cpplib.c')
-rw-r--r--gcc/cpplib.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/gcc/cpplib.c b/gcc/cpplib.c
index 8cdc241..c5cf674 100644
--- a/gcc/cpplib.c
+++ b/gcc/cpplib.c
@@ -654,7 +654,7 @@ get_macro_name (pfile)
static int
do_define (pfile, keyword)
cpp_reader *pfile;
- const struct directive *keyword;
+ const struct directive *keyword ATTRIBUTE_UNUSED;
{
HASHNODE *hp;
DEFINITION *def;
@@ -728,14 +728,11 @@ do_define (pfile, keyword)
else
cpp_install (pfile, sym, len, T_MACRO, (char *) def);
- if (keyword != NULL && keyword->type == T_DEFINE)
- {
- if (CPP_OPTIONS (pfile)->debug_output
- || CPP_OPTIONS (pfile)->dump_macros == dump_definitions)
- dump_definition (pfile, sym, len, def);
- else if (CPP_OPTIONS (pfile)->dump_macros == dump_names)
- pass_thru_directive (sym, len, pfile, keyword);
- }
+ if (CPP_OPTIONS (pfile)->debug_output
+ || CPP_OPTIONS (pfile)->dump_macros == dump_definitions)
+ dump_definition (pfile, sym, len, def);
+ else if (CPP_OPTIONS (pfile)->dump_macros == dump_names)
+ pass_thru_directive (sym, len, pfile, keyword);
return 0;
}
@@ -876,7 +873,9 @@ cpp_expand_to_buffer (pfile, buf, length)
/* Scan the input, create the output. */
save_no_output = CPP_OPTIONS (pfile)->no_output;
CPP_OPTIONS (pfile)->no_output = 0;
+ CPP_OPTIONS (pfile)->no_line_commands++;
cpp_scan_buffer (pfile);
+ CPP_OPTIONS (pfile)->no_line_commands--;
CPP_OPTIONS (pfile)->no_output = save_no_output;
CPP_NUL_TERMINATE (pfile);
@@ -926,16 +925,14 @@ output_line_command (pfile, file_change)
enum file_change_code file_change;
{
long line;
- cpp_buffer *ip = CPP_BUFFER (pfile);
-
- if (ip->fname == NULL)
- return;
+ cpp_buffer *ip;
if (CPP_OPTIONS (pfile)->no_line_commands
|| CPP_OPTIONS (pfile)->no_output)
return;
- cpp_buf_line_and_col (CPP_BUFFER (pfile), &line, NULL);
+ ip = cpp_file_buffer (pfile);
+ cpp_buf_line_and_col (ip, &line, NULL);
/* 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