/home/neil/diffs/include.log

From-SVN: r64373
This commit is contained in:
Neil Booth 2003-03-14 21:47:50 +00:00 committed by Neil Booth
parent 98d2dec7e3
commit 23345bbbcc
10 changed files with 137 additions and 107 deletions

View File

@ -1,3 +1,36 @@
2003-03-14 Neil Booth <neil@daikokuya.co.uk>
* Makefile.in: Update.
* c-common.h (fe_file_change, pp_file_change): New.
* c-lex.c (init_c_lex): Don't set cb_file_change.
(c_common_parse_file): Move to c-opts.c.
(cb_file_change): Rename fe_file_change.
* c-opts.c: Include debug.h.
(warn_unused_macros, include_cursor): New.
(push_command_line_include, cb_file_change): New.
(COMMAND_LINE_OPTIONS): Handle -include.
(c_common_decode_option): Use local warn_unused_macros.
Handle OPT_include.
(c_common_post_options): Set file change callback.
(handle_deferred_opts): Skip -include. Don't free the array.
(c_common_init): Call cpp_finish_options here, and push an
initial -include file.
* c-ppoutput.c (cb_file_change): Rename pp_file_change.
(preprocess_file): Don't call cpp_finish_options.
(init_pp_output): Don't set the file change callback.
(pp_file_change): Return if no line commands or no output.
* cpphash.h (next_include_file, first_unused_line): Remove.
* cppinit.c (include_head, include_tail): Remove.
(cpp_destroy): Don't free -include chain.
(cpp_finish_options): Don't handle -include, or worry about
-Wunused-macros.
(_cpp_maybe_push_include_file): Remove.
(COMMAND_LINE_OPTIONS, cpp_handle_option): Don't handle -include.
* cpplib.c (_cpp_pop_buffer): Don't handle -include.
* cppmacro.c (_cpp_warn_if_unused_macro, _cpp_create_definition):
Used flag is set based upon the state of the warn_unused_macros
flag, and so use of first_unused_line is unnecessary.
Thu Mar 13 18:39:42 CET 2003 Jan Hubicka <jh@suse.cz>
* cselib.c (clear_table): Do not take argument; always clear just

View File

@ -1308,9 +1308,9 @@ c-common.o : c-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
c-pretty-print.o : c-pretty-print.c c-pretty-print.h pretty-print.h \
$(C_COMMON_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) real.h
c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_COMMON_H) \
c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
c-pragma.h flags.h toplev.h langhooks.h tree-inline.h diagnostic.h \
intl.h
intl.h debug.h $(C_COMMON_H)
c-cppbuiltin.o : c-cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(C_COMMON_H) c-pragma.h flags.h toplev.h langhooks.h \

View File

@ -1,6 +1,6 @@
/* Definitions for c-common.c.
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of GCC.
@ -1295,9 +1295,11 @@ extern void c_common_write_pch PARAMS ((void));
extern void builtin_define_with_value PARAMS ((const char *,
const char *, int));
extern void c_stddef_cpp_builtins PARAMS ((void));
extern void fe_file_change PARAMS ((const struct line_map *));
/* In c-ppoutput.c */
extern void init_pp_output PARAMS ((FILE *));
extern void preprocess_file PARAMS ((cpp_reader *));
extern void pp_file_change PARAMS ((const struct line_map *));
#endif /* ! GCC_C_COMMON_H */

View File

@ -86,7 +86,6 @@ static int dump_one_header PARAMS ((splay_tree_node, void *));
static void cb_line_change PARAMS ((cpp_reader *, const cpp_token *, int));
static void cb_ident PARAMS ((cpp_reader *, unsigned int,
const cpp_string *));
static void cb_file_change PARAMS ((cpp_reader *, const struct line_map *));
static void cb_def_pragma PARAMS ((cpp_reader *, unsigned int));
static void cb_define PARAMS ((cpp_reader *, unsigned int,
cpp_hashnode *));
@ -116,7 +115,6 @@ init_c_lex ()
cb->register_builtins = cb_register_builtins;
cb->line_change = cb_line_change;
cb->ident = cb_ident;
cb->file_change = cb_file_change;
cb->def_pragma = cb_def_pragma;
cb->valid_pch = c_common_valid_pch;
cb->read_pch = c_common_read_pch;
@ -131,30 +129,6 @@ init_c_lex ()
}
}
/* A thin wrapper around the real parser that initializes the
integrated preprocessor after debug output has been initialized.
Also, make sure the start_source_file debug hook gets called for
the primary source file. */
void
c_common_parse_file (set_yydebug)
int set_yydebug ATTRIBUTE_UNUSED;
{
#if YYDEBUG != 0
yydebug = set_yydebug;
#else
warning ("YYDEBUG not defined");
#endif
(*debug_hooks->start_source_file) (lineno, input_filename);
cpp_finish_options (parse_in);
pch_init();
yyparse ();
free_parser_stacks ();
}
struct c_fileinfo *
get_fileinfo (name)
const char *name;
@ -245,9 +219,8 @@ cb_line_change (pfile, token, parsing_args)
src_lineno = SOURCE_LINE (map, token->line);
}
static void
cb_file_change (pfile, new_map)
cpp_reader *pfile ATTRIBUTE_UNUSED;
void
fe_file_change (new_map)
const struct line_map *new_map;
{
unsigned int to_line = SOURCE_LINE (new_map, new_map->to_line);

View File

@ -34,6 +34,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "intl.h"
#include "cppdefault.h"
#include "c-incpath.h"
#include "debug.h" /* For debug_hooks. */
#ifndef TARGET_SYSTEM_ROOT
# define TARGET_SYSTEM_ROOT NULL
@ -78,9 +79,15 @@ static bool std_cxx_inc = true;
/* If the quote chain has been split by -I-. */
static bool quote_chain_split;
/* If -Wunused-macros. */
static bool warn_unused_macros;
/* Number of deferred options, deferred options array size. */
static size_t deferred_count, deferred_size;
/* Number of deferred options scanned for -include. */
static size_t include_cursor;
static void missing_arg PARAMS ((size_t));
static size_t find_opt PARAMS ((const char *, int));
static void set_Wimplicit PARAMS ((int));
@ -95,6 +102,8 @@ static void check_deps_environment_vars PARAMS ((void));
static void handle_deferred_opts PARAMS ((void));
static void sanitize_cpp_opts PARAMS ((void));
static void add_prefixed_path PARAMS ((const char *, size_t));
static void push_command_line_include PARAMS ((void));
static void cb_file_change PARAMS ((cpp_reader *, const struct line_map *));
#ifndef STDC_0_IN_SYSTEM_HEADERS
#define STDC_0_IN_SYSTEM_HEADERS 0
@ -288,6 +297,7 @@ static void add_prefixed_path PARAMS ((const char *, size_t));
OPT("fxref", CL_CXX, OPT_fxref) \
OPT("gen-decls", CL_OBJC, OPT_gen_decls) \
OPT("idirafter", CL_ALL | CL_ARG, OPT_idirafter) \
OPT("include", CL_ALL | CL_ARG, OPT_include) \
OPT("iprefix", CL_ALL | CL_ARG, OPT_iprefix) \
OPT("isysroot", CL_ALL | CL_ARG, OPT_isysroot) \
OPT("isystem", CL_ALL | CL_ARG, OPT_isystem) \
@ -1040,7 +1050,7 @@ c_common_decode_option (argc, argv)
break;
case OPT_Wunused_macros:
cpp_opts->warn_unused_macros = on;
warn_unused_macros = on;
break;
case OPT_Wwrite_strings:
@ -1323,6 +1333,10 @@ c_common_decode_option (argc, argv)
add_path (xstrdup (arg), AFTER, 0);
break;
case OPT_include:
defer_opt (code, arg);
break;
case OPT_iprefix:
iprefix = arg;
break;
@ -1521,6 +1535,8 @@ c_common_post_options (pfilename)
lineno = 0;
}
cpp_get_callbacks (parse_in)->file_change = cb_file_change;
/* NOTE: we use in_fname here, not the one supplied. */
*pfilename = cpp_read_main_file (parse_in, in_fname, ident_hash);
@ -1550,8 +1566,9 @@ c_common_init ()
if (flag_preprocess_only)
{
if (main_input_filename)
preprocess_file (parse_in);
cpp_finish_options (parse_in);
push_command_line_include ();
preprocess_file (parse_in);
return false;
}
@ -1561,6 +1578,28 @@ c_common_init ()
return true;
}
/* A thin wrapper around the real parser that initializes the
integrated preprocessor after debug output has been initialized.
Also, make sure the start_source_file debug hook gets called for
the primary source file. */
void
c_common_parse_file (set_yydebug)
int set_yydebug ATTRIBUTE_UNUSED;
{
#if YYDEBUG != 0
yydebug = set_yydebug;
#else
warning ("YYDEBUG not defined");
#endif
(*debug_hooks->start_source_file) (lineno, input_filename);
cpp_finish_options (parse_in);
push_command_line_include ();
pch_init();
yyparse ();
free_parser_stacks ();
}
/* Common finish hook for the C, ObjC and C++ front ends. */
void
c_common_finish ()
@ -1654,12 +1693,13 @@ handle_deferred_opts ()
cpp_add_dependency_target (parse_in, opt->arg, opt->code == OPT_MQ);
break;
case OPT_include:
break;
default:
abort ();
}
}
free (deferred_opts);
}
/* These settings are appropriate for GCC, but not necessarily so for
@ -1717,6 +1757,46 @@ add_prefixed_path (suffix, chain)
add_path (path, chain, 0);
}
/* Give CPP the next file given by -include, if any. */
static void
push_command_line_include ()
{
if (cpp_opts->preprocessed)
return;
while (include_cursor < deferred_count)
{
struct deferred_opt *opt = &deferred_opts[include_cursor++];
if (opt->code == OPT_include && cpp_push_include (parse_in, opt->arg))
return;
}
if (include_cursor == deferred_count)
{
/* Restore the line map from <command line>. */
cpp_rename_file (parse_in, main_input_filename);
/* -Wunused-macros should only warn about macros defined hereafter. */
cpp_opts->warn_unused_macros = warn_unused_macros;
include_cursor++;
}
}
/* File change callback. Has to handle -include files. */
static void
cb_file_change (pfile, new_map)
cpp_reader *pfile ATTRIBUTE_UNUSED;
const struct line_map *new_map;
{
if (flag_preprocess_only)
pp_file_change (new_map);
else
fe_file_change (new_map);
if (new_map->reason == LC_LEAVE && MAIN_FILE_P (new_map))
push_command_line_include ();
}
/* Set the C 89 standard (with 1994 amendments if C94, without GNU
extensions if ISO). There is no concept of gnu94. */
static void

View File

@ -58,7 +58,6 @@ static void cb_include PARAMS ((cpp_reader *, unsigned int,
const unsigned char *, const cpp_token *));
static void cb_ident PARAMS ((cpp_reader *, unsigned int,
const cpp_string *));
static void cb_file_change PARAMS ((cpp_reader *, const struct line_map *));
static void cb_def_pragma PARAMS ((cpp_reader *, unsigned int));
/* Preprocess and output. */
@ -66,8 +65,6 @@ void
preprocess_file (pfile)
cpp_reader *pfile;
{
cpp_finish_options (pfile);
/* A successful cpp_read_main_file guarantees that we can call
cpp_scan_nooutput or cpp_get_token next. */
if (flag_no_output)
@ -110,8 +107,6 @@ init_pp_output (out_stream)
cb->ident = cb_ident;
cb->def_pragma = cb_def_pragma;
}
if (!flag_no_line_commands)
cb->file_change = cb_file_change;
}
if (flag_dump_includes)
@ -368,18 +363,20 @@ cb_include (pfile, line, dir, header)
described in MAP. From this point on, the old print.map might be
pointing to freed memory, and so must not be dereferenced. */
static void
cb_file_change (pfile, map)
cpp_reader *pfile;
void
pp_file_change (map)
const struct line_map *map;
{
const char *flags = "";
if (flag_no_line_commands || flag_no_output)
return;
/* First time? */
if (print.map == NULL)
{
/* Avoid printing foo.i when the main file is foo.c. */
if (!CPP_OPTION (pfile, preprocessed))
if (!cpp_get_options (parse_in)->preprocessed)
print_line (map, map->from_line, flags);
}
else

View File

@ -332,11 +332,6 @@ struct cpp_reader
/* If in_directive, the directive if known. */
const struct directive *directive;
/* The next -include-d file; NULL if they all are done. If it
points to NULL, the last one is in progress, and
_cpp_maybe_push_include_file has yet to restore the line map. */
struct pending_option **next_include_file;
/* Search paths for include files. */
struct cpp_path *quote_include; /* "" */
struct cpp_path *bracket_include; /* <> */
@ -368,9 +363,6 @@ struct cpp_reader
for include files. (Altered as we get more of them.) */
unsigned int max_include_len;
/* Macros on or after this line are warned about if unused. */
unsigned int first_unused_line;
/* Date and time text. Calculated together if either is requested. */
const uchar *date;
const uchar *time;

View File

@ -48,7 +48,6 @@ struct cpp_pending
{
struct pending_option *directive_head, *directive_tail;
struct pending_option *imacros_head, *imacros_tail;
struct pending_option *include_head, *include_tail;
};
#ifdef __STDC__
@ -278,7 +277,6 @@ cpp_destroy (pfile)
cpp_context *context, *contextn;
tokenrun *run, *runn;
free_chain (CPP_OPTION (pfile, pending)->include_head);
free (CPP_OPTION (pfile, pending));
free (pfile->op_stack);
@ -603,8 +601,6 @@ cpp_finish_options (pfile)
{
struct pending_option *p;
/* Prevent -Wunused-macros with command-line redefinitions. */
pfile->first_unused_line = (unsigned int) -1;
_cpp_do_file_change (pfile, LC_RENAME, _("<built-in>"), 1, 0);
init_builtins (pfile);
_cpp_do_file_change (pfile, LC_RENAME, _("<command line>"), 1, 0);
@ -617,42 +613,12 @@ cpp_finish_options (pfile)
for (p = CPP_OPTION (pfile, pending)->imacros_head; p; p = p->next)
if (cpp_push_include (pfile, p->arg))
cpp_scan_nooutput (pfile);
pfile->next_include_file = &CPP_OPTION (pfile, pending)->include_head;
_cpp_maybe_push_include_file (pfile);
}
pfile->first_unused_line = pfile->line;
free_chain (CPP_OPTION (pfile, pending)->imacros_head);
free_chain (CPP_OPTION (pfile, pending)->directive_head);
}
/* Push the next buffer on the stack given by -include, if any. */
void
_cpp_maybe_push_include_file (pfile)
cpp_reader *pfile;
{
if (pfile->next_include_file)
{
struct pending_option *head = *pfile->next_include_file;
while (head && !cpp_push_include (pfile, head->arg))
head = head->next;
if (head)
pfile->next_include_file = &head->next;
else
{
/* All done; restore the line map from <command line>. */
_cpp_do_file_change (pfile, LC_RENAME,
pfile->line_maps.maps[0].to_file, 1, 0);
/* Don't come back here again. */
pfile->next_include_file = NULL;
}
}
}
/* This is called at the end of preprocessing. It pops the last
buffer and writes dependency output, and returns the number of
errors.
@ -723,7 +689,7 @@ new_pending_directive (pend, text, handler)
DEF_OPT("D", no_mac, OPT_D) \
DEF_OPT("U", no_mac, OPT_U) \
DEF_OPT("imacros", no_fil, OPT_imacros) \
DEF_OPT("include", no_fil, OPT_include)
#define DEF_OPT(text, msg, code) code,
enum opt_code
@ -887,7 +853,6 @@ cpp_handle_option (pfile, argc, argv)
case OPT_U:
new_pending_directive (pend, arg, cpp_undef);
break;
case OPT_include:
case OPT_imacros:
{
struct pending_option *o = (struct pending_option *)
@ -895,10 +860,7 @@ cpp_handle_option (pfile, argc, argv)
o->arg = arg;
o->next = NULL;
if (opt_code == OPT_include)
APPEND (pend, include, o);
else
APPEND (pend, imacros, o);
APPEND (pend, imacros, o);
}
break;
}

View File

@ -1,6 +1,6 @@
/* CPP Library. (Directive handling.)
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Per Bothner, 1994-95.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@ -2072,14 +2072,7 @@ _cpp_pop_buffer (pfile)
/* Don't generate a callback for popping the main file. */
if (pfile->buffer)
{
_cpp_do_file_change (pfile, LC_LEAVE, 0, 0, 0);
/* If this is the main file, there may be some -include
files left to push. */
if (!pfile->buffer->prev)
_cpp_maybe_push_include_file (pfile);
}
_cpp_do_file_change (pfile, LC_LEAVE, 0, 0, 0);
}
}

View File

@ -1,6 +1,6 @@
/* Part of CPP library. (Macro and #define handling.)
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Written by Per Bothner, 1994.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
@ -89,8 +89,6 @@ _cpp_warn_if_unused_macro (pfile, node, v)
cpp_macro *macro = node->value.macro;
if (!macro->used
/* Skip front-end built-ins and command line macros. */
&& macro->line >= pfile->first_unused_line
&& MAIN_FILE_P (lookup_line (&pfile->line_maps, macro->line)))
cpp_error_with_line (pfile, DL_WARNING, macro->line, 0,
"macro \"%s\" is not used", NODE_NAME (node));
@ -1568,7 +1566,7 @@ _cpp_create_definition (pfile, node)
macro->params = 0;
macro->paramc = 0;
macro->variadic = 0;
macro->used = 0;
macro->used = !CPP_OPTION (pfile, warn_unused_macros);
macro->count = 0;
macro->fun_like = 0;
/* To suppress some diagnostics. */