diff options
-rw-r--r-- | gcc/c-common.c | 2 | ||||
-rw-r--r-- | gcc/cppfiles.c | 44 | ||||
-rw-r--r-- | gcc/cpphash.h | 1 | ||||
-rw-r--r-- | gcc/cpplib.c | 18 | ||||
-rw-r--r-- | gcc/fix-header.c | 13 |
5 files changed, 11 insertions, 67 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index cdbc8aa..b42f320 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA. */ #include "diagnostic.h" #include "obstack.h" #include "cpplib.h" -cpp_reader parse_in; +cpp_reader *parse_in; /* Declared in c-lex.h. */ #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node) diff --git a/gcc/cppfiles.c b/gcc/cppfiles.c index 0e924b3..8a943a1 100644 --- a/gcc/cppfiles.c +++ b/gcc/cppfiles.c @@ -474,50 +474,6 @@ find_include_file (pfile, fname, search_start) return 0; } -/* #line uses this to save artificial file names. We have to stat the - file because an all_include_files entry is always either + or -, - there's no 'I don't know' value. */ -const char * -_cpp_fake_include (pfile, fname) - cpp_reader *pfile; - const char *fname; -{ - splay_tree_node nd; - struct include_file *file; - char *name; - - file = find_include_file (pfile, fname, CPP_OPTION (pfile, quote_include)); - if (file) - { - if (file->fd > 0) - { - close (file->fd); - file->fd = -1; - } - return file->name; - } - - name = xstrdup (fname); - _cpp_simplify_pathname (name); - - /* We cannot just blindly insert a node, because there's still the - chance that the node already exists but isn't on the search path. */ - nd = splay_tree_lookup (pfile->all_include_files, (splay_tree_key) name); - if (nd) - { - free (name); - return (const char *) nd->key; - } - - file = xcnew (struct include_file); - file->name = name; - file->fd = -2; - splay_tree_insert (pfile->all_include_files, (splay_tree_key) name, - (splay_tree_value) file); - - return file->name; -} - /* Not everyone who wants to set system-header-ness on a buffer can see the details of struct include_file. This is an exported interface because fix-header needs it. */ diff --git a/gcc/cpphash.h b/gcc/cpphash.h index 2cab362..433b665 100644 --- a/gcc/cpphash.h +++ b/gcc/cpphash.h @@ -233,7 +233,6 @@ extern int _cpp_compare_file_date PARAMS ((cpp_reader *, extern void _cpp_report_missing_guards PARAMS ((cpp_reader *)); extern void _cpp_init_includes PARAMS ((cpp_reader *)); extern void _cpp_cleanup_includes PARAMS ((cpp_reader *)); -extern const char *_cpp_fake_include PARAMS ((cpp_reader *, const char *)); extern void _cpp_pop_file_buffer PARAMS ((cpp_reader *, cpp_buffer *)); /* In cppexp.c */ diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 26c2ece..537e477 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -721,7 +721,7 @@ do_line (pfile) cpp_buffer *buffer = pfile->buffer; const char *filename = buffer->nominal_fname; unsigned int lineno = buffer->lineno; - enum cpp_fc_reason reason = (enum cpp_fc_reason) -1; + enum cpp_fc_reason reason = FC_RENAME; unsigned long new_lineno; unsigned int cap; cpp_token token; @@ -749,19 +749,14 @@ do_line (pfile) unsigned int len; int action_number = 0; + /* FIXME: memory leak. */ len = token.val.str.len; - fname = alloca (len + 1); + fname = xmalloc (len + 1); memcpy (fname, token.val.str.text, len); fname[len] = '\0'; - if (strcmp (fname, buffer->nominal_fname)) - { - reason = FC_RENAME; - if (!strcmp (fname, buffer->inc->name)) - buffer->nominal_fname = buffer->inc->name; - else - buffer->nominal_fname = _cpp_fake_include (pfile, fname); - } + _cpp_simplify_pathname (fname); + buffer->nominal_fname = fname; if (read_line_number (pfile, &action_number) != 0) { @@ -803,8 +798,7 @@ do_line (pfile) /* Our line number is incremented after the directive is processed. */ buffer->lineno = new_lineno - 1; - if (reason != (enum cpp_fc_reason) -1) - _cpp_do_file_change (pfile, reason, filename, lineno); + _cpp_do_file_change (pfile, reason, filename, lineno); } /* Arrange the file_change callback. The assumption is that the diff --git a/gcc/fix-header.c b/gcc/fix-header.c index 8727512..281e4c4 100644 --- a/gcc/fix-header.c +++ b/gcc/fix-header.c @@ -649,26 +649,21 @@ read_scan_file (in_fname, argc, argv) { static const unsigned char getchar_call[] = "getchar();"; int seen_filbuf = 0; - cpp_buffer *buf = CPP_BUFFER (scan_in); - if (cpp_push_buffer (scan_in, getchar_call, - sizeof(getchar_call) - 1) == NULL) - return; /* Scan the macro expansion of "getchar();". */ + cpp_push_buffer (scan_in, getchar_call, sizeof(getchar_call) - 1); for (;;) { cpp_token t; cpp_get_token (scan_in, &t); if (t.type == CPP_EOF) - { - cpp_pop_buffer (scan_in); - if (CPP_BUFFER (scan_in) == buf) - break; - } + break; else if (cpp_ideq (&t, "_filbuf")) seen_filbuf++; } + cpp_pop_buffer (scan_in); + if (seen_filbuf) { int need_filbuf = !SEEN (fn) && !REQUIRED (fn); |