/home/neil/diffs/include.log
From-SVN: r64373
This commit is contained in:
parent
98d2dec7e3
commit
23345bbbcc
@ -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>
|
Thu Mar 13 18:39:42 CET 2003 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
* cselib.c (clear_table): Do not take argument; always clear just
|
* cselib.c (clear_table): Do not take argument; always clear just
|
||||||
|
@ -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-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_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 \
|
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) \
|
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 \
|
$(TREE_H) $(C_COMMON_H) c-pragma.h flags.h toplev.h langhooks.h \
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Definitions for c-common.c.
|
/* Definitions for c-common.c.
|
||||||
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
|
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.
|
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 *,
|
extern void builtin_define_with_value PARAMS ((const char *,
|
||||||
const char *, int));
|
const char *, int));
|
||||||
extern void c_stddef_cpp_builtins PARAMS ((void));
|
extern void c_stddef_cpp_builtins PARAMS ((void));
|
||||||
|
extern void fe_file_change PARAMS ((const struct line_map *));
|
||||||
|
|
||||||
/* In c-ppoutput.c */
|
/* In c-ppoutput.c */
|
||||||
extern void init_pp_output PARAMS ((FILE *));
|
extern void init_pp_output PARAMS ((FILE *));
|
||||||
extern void preprocess_file PARAMS ((cpp_reader *));
|
extern void preprocess_file PARAMS ((cpp_reader *));
|
||||||
|
extern void pp_file_change PARAMS ((const struct line_map *));
|
||||||
|
|
||||||
#endif /* ! GCC_C_COMMON_H */
|
#endif /* ! GCC_C_COMMON_H */
|
||||||
|
31
gcc/c-lex.c
31
gcc/c-lex.c
@ -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_line_change PARAMS ((cpp_reader *, const cpp_token *, int));
|
||||||
static void cb_ident PARAMS ((cpp_reader *, unsigned int,
|
static void cb_ident PARAMS ((cpp_reader *, unsigned int,
|
||||||
const cpp_string *));
|
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_def_pragma PARAMS ((cpp_reader *, unsigned int));
|
||||||
static void cb_define PARAMS ((cpp_reader *, unsigned int,
|
static void cb_define PARAMS ((cpp_reader *, unsigned int,
|
||||||
cpp_hashnode *));
|
cpp_hashnode *));
|
||||||
@ -116,7 +115,6 @@ init_c_lex ()
|
|||||||
cb->register_builtins = cb_register_builtins;
|
cb->register_builtins = cb_register_builtins;
|
||||||
cb->line_change = cb_line_change;
|
cb->line_change = cb_line_change;
|
||||||
cb->ident = cb_ident;
|
cb->ident = cb_ident;
|
||||||
cb->file_change = cb_file_change;
|
|
||||||
cb->def_pragma = cb_def_pragma;
|
cb->def_pragma = cb_def_pragma;
|
||||||
cb->valid_pch = c_common_valid_pch;
|
cb->valid_pch = c_common_valid_pch;
|
||||||
cb->read_pch = c_common_read_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 *
|
struct c_fileinfo *
|
||||||
get_fileinfo (name)
|
get_fileinfo (name)
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -245,9 +219,8 @@ cb_line_change (pfile, token, parsing_args)
|
|||||||
src_lineno = SOURCE_LINE (map, token->line);
|
src_lineno = SOURCE_LINE (map, token->line);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
cb_file_change (pfile, new_map)
|
fe_file_change (new_map)
|
||||||
cpp_reader *pfile ATTRIBUTE_UNUSED;
|
|
||||||
const struct line_map *new_map;
|
const struct line_map *new_map;
|
||||||
{
|
{
|
||||||
unsigned int to_line = SOURCE_LINE (new_map, new_map->to_line);
|
unsigned int to_line = SOURCE_LINE (new_map, new_map->to_line);
|
||||||
|
90
gcc/c-opts.c
90
gcc/c-opts.c
@ -34,6 +34,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||||||
#include "intl.h"
|
#include "intl.h"
|
||||||
#include "cppdefault.h"
|
#include "cppdefault.h"
|
||||||
#include "c-incpath.h"
|
#include "c-incpath.h"
|
||||||
|
#include "debug.h" /* For debug_hooks. */
|
||||||
|
|
||||||
#ifndef TARGET_SYSTEM_ROOT
|
#ifndef TARGET_SYSTEM_ROOT
|
||||||
# define TARGET_SYSTEM_ROOT NULL
|
# define TARGET_SYSTEM_ROOT NULL
|
||||||
@ -78,9 +79,15 @@ static bool std_cxx_inc = true;
|
|||||||
/* If the quote chain has been split by -I-. */
|
/* If the quote chain has been split by -I-. */
|
||||||
static bool quote_chain_split;
|
static bool quote_chain_split;
|
||||||
|
|
||||||
|
/* If -Wunused-macros. */
|
||||||
|
static bool warn_unused_macros;
|
||||||
|
|
||||||
/* Number of deferred options, deferred options array size. */
|
/* Number of deferred options, deferred options array size. */
|
||||||
static size_t deferred_count, deferred_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 void missing_arg PARAMS ((size_t));
|
||||||
static size_t find_opt PARAMS ((const char *, int));
|
static size_t find_opt PARAMS ((const char *, int));
|
||||||
static void set_Wimplicit PARAMS ((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 handle_deferred_opts PARAMS ((void));
|
||||||
static void sanitize_cpp_opts PARAMS ((void));
|
static void sanitize_cpp_opts PARAMS ((void));
|
||||||
static void add_prefixed_path PARAMS ((const char *, size_t));
|
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
|
#ifndef STDC_0_IN_SYSTEM_HEADERS
|
||||||
#define STDC_0_IN_SYSTEM_HEADERS 0
|
#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("fxref", CL_CXX, OPT_fxref) \
|
||||||
OPT("gen-decls", CL_OBJC, OPT_gen_decls) \
|
OPT("gen-decls", CL_OBJC, OPT_gen_decls) \
|
||||||
OPT("idirafter", CL_ALL | CL_ARG, OPT_idirafter) \
|
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("iprefix", CL_ALL | CL_ARG, OPT_iprefix) \
|
||||||
OPT("isysroot", CL_ALL | CL_ARG, OPT_isysroot) \
|
OPT("isysroot", CL_ALL | CL_ARG, OPT_isysroot) \
|
||||||
OPT("isystem", CL_ALL | CL_ARG, OPT_isystem) \
|
OPT("isystem", CL_ALL | CL_ARG, OPT_isystem) \
|
||||||
@ -1040,7 +1050,7 @@ c_common_decode_option (argc, argv)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_Wunused_macros:
|
case OPT_Wunused_macros:
|
||||||
cpp_opts->warn_unused_macros = on;
|
warn_unused_macros = on;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OPT_Wwrite_strings:
|
case OPT_Wwrite_strings:
|
||||||
@ -1323,6 +1333,10 @@ c_common_decode_option (argc, argv)
|
|||||||
add_path (xstrdup (arg), AFTER, 0);
|
add_path (xstrdup (arg), AFTER, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_include:
|
||||||
|
defer_opt (code, arg);
|
||||||
|
break;
|
||||||
|
|
||||||
case OPT_iprefix:
|
case OPT_iprefix:
|
||||||
iprefix = arg;
|
iprefix = arg;
|
||||||
break;
|
break;
|
||||||
@ -1521,6 +1535,8 @@ c_common_post_options (pfilename)
|
|||||||
lineno = 0;
|
lineno = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cpp_get_callbacks (parse_in)->file_change = cb_file_change;
|
||||||
|
|
||||||
/* NOTE: we use in_fname here, not the one supplied. */
|
/* NOTE: we use in_fname here, not the one supplied. */
|
||||||
*pfilename = cpp_read_main_file (parse_in, in_fname, ident_hash);
|
*pfilename = cpp_read_main_file (parse_in, in_fname, ident_hash);
|
||||||
|
|
||||||
@ -1550,8 +1566,9 @@ c_common_init ()
|
|||||||
|
|
||||||
if (flag_preprocess_only)
|
if (flag_preprocess_only)
|
||||||
{
|
{
|
||||||
if (main_input_filename)
|
cpp_finish_options (parse_in);
|
||||||
preprocess_file (parse_in);
|
push_command_line_include ();
|
||||||
|
preprocess_file (parse_in);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1561,6 +1578,28 @@ c_common_init ()
|
|||||||
return true;
|
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. */
|
/* Common finish hook for the C, ObjC and C++ front ends. */
|
||||||
void
|
void
|
||||||
c_common_finish ()
|
c_common_finish ()
|
||||||
@ -1654,12 +1693,13 @@ handle_deferred_opts ()
|
|||||||
cpp_add_dependency_target (parse_in, opt->arg, opt->code == OPT_MQ);
|
cpp_add_dependency_target (parse_in, opt->arg, opt->code == OPT_MQ);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPT_include:
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
abort ();
|
abort ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free (deferred_opts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* These settings are appropriate for GCC, but not necessarily so for
|
/* 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);
|
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
|
/* Set the C 89 standard (with 1994 amendments if C94, without GNU
|
||||||
extensions if ISO). There is no concept of gnu94. */
|
extensions if ISO). There is no concept of gnu94. */
|
||||||
static void
|
static void
|
||||||
|
@ -58,7 +58,6 @@ static void cb_include PARAMS ((cpp_reader *, unsigned int,
|
|||||||
const unsigned char *, const cpp_token *));
|
const unsigned char *, const cpp_token *));
|
||||||
static void cb_ident PARAMS ((cpp_reader *, unsigned int,
|
static void cb_ident PARAMS ((cpp_reader *, unsigned int,
|
||||||
const cpp_string *));
|
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_def_pragma PARAMS ((cpp_reader *, unsigned int));
|
||||||
|
|
||||||
/* Preprocess and output. */
|
/* Preprocess and output. */
|
||||||
@ -66,8 +65,6 @@ void
|
|||||||
preprocess_file (pfile)
|
preprocess_file (pfile)
|
||||||
cpp_reader *pfile;
|
cpp_reader *pfile;
|
||||||
{
|
{
|
||||||
cpp_finish_options (pfile);
|
|
||||||
|
|
||||||
/* A successful cpp_read_main_file guarantees that we can call
|
/* A successful cpp_read_main_file guarantees that we can call
|
||||||
cpp_scan_nooutput or cpp_get_token next. */
|
cpp_scan_nooutput or cpp_get_token next. */
|
||||||
if (flag_no_output)
|
if (flag_no_output)
|
||||||
@ -110,8 +107,6 @@ init_pp_output (out_stream)
|
|||||||
cb->ident = cb_ident;
|
cb->ident = cb_ident;
|
||||||
cb->def_pragma = cb_def_pragma;
|
cb->def_pragma = cb_def_pragma;
|
||||||
}
|
}
|
||||||
if (!flag_no_line_commands)
|
|
||||||
cb->file_change = cb_file_change;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag_dump_includes)
|
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
|
described in MAP. From this point on, the old print.map might be
|
||||||
pointing to freed memory, and so must not be dereferenced. */
|
pointing to freed memory, and so must not be dereferenced. */
|
||||||
|
|
||||||
static void
|
void
|
||||||
cb_file_change (pfile, map)
|
pp_file_change (map)
|
||||||
cpp_reader *pfile;
|
|
||||||
const struct line_map *map;
|
const struct line_map *map;
|
||||||
{
|
{
|
||||||
const char *flags = "";
|
const char *flags = "";
|
||||||
|
|
||||||
|
if (flag_no_line_commands || flag_no_output)
|
||||||
|
return;
|
||||||
|
|
||||||
/* First time? */
|
/* First time? */
|
||||||
if (print.map == NULL)
|
if (print.map == NULL)
|
||||||
{
|
{
|
||||||
/* Avoid printing foo.i when the main file is foo.c. */
|
/* 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);
|
print_line (map, map->from_line, flags);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -332,11 +332,6 @@ struct cpp_reader
|
|||||||
/* If in_directive, the directive if known. */
|
/* If in_directive, the directive if known. */
|
||||||
const struct directive *directive;
|
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. */
|
/* Search paths for include files. */
|
||||||
struct cpp_path *quote_include; /* "" */
|
struct cpp_path *quote_include; /* "" */
|
||||||
struct cpp_path *bracket_include; /* <> */
|
struct cpp_path *bracket_include; /* <> */
|
||||||
@ -368,9 +363,6 @@ struct cpp_reader
|
|||||||
for include files. (Altered as we get more of them.) */
|
for include files. (Altered as we get more of them.) */
|
||||||
unsigned int max_include_len;
|
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. */
|
/* Date and time text. Calculated together if either is requested. */
|
||||||
const uchar *date;
|
const uchar *date;
|
||||||
const uchar *time;
|
const uchar *time;
|
||||||
|
@ -48,7 +48,6 @@ struct cpp_pending
|
|||||||
{
|
{
|
||||||
struct pending_option *directive_head, *directive_tail;
|
struct pending_option *directive_head, *directive_tail;
|
||||||
struct pending_option *imacros_head, *imacros_tail;
|
struct pending_option *imacros_head, *imacros_tail;
|
||||||
struct pending_option *include_head, *include_tail;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
@ -278,7 +277,6 @@ cpp_destroy (pfile)
|
|||||||
cpp_context *context, *contextn;
|
cpp_context *context, *contextn;
|
||||||
tokenrun *run, *runn;
|
tokenrun *run, *runn;
|
||||||
|
|
||||||
free_chain (CPP_OPTION (pfile, pending)->include_head);
|
|
||||||
free (CPP_OPTION (pfile, pending));
|
free (CPP_OPTION (pfile, pending));
|
||||||
free (pfile->op_stack);
|
free (pfile->op_stack);
|
||||||
|
|
||||||
@ -603,8 +601,6 @@ cpp_finish_options (pfile)
|
|||||||
{
|
{
|
||||||
struct pending_option *p;
|
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);
|
_cpp_do_file_change (pfile, LC_RENAME, _("<built-in>"), 1, 0);
|
||||||
init_builtins (pfile);
|
init_builtins (pfile);
|
||||||
_cpp_do_file_change (pfile, LC_RENAME, _("<command line>"), 1, 0);
|
_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)
|
for (p = CPP_OPTION (pfile, pending)->imacros_head; p; p = p->next)
|
||||||
if (cpp_push_include (pfile, p->arg))
|
if (cpp_push_include (pfile, p->arg))
|
||||||
cpp_scan_nooutput (pfile);
|
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)->imacros_head);
|
||||||
free_chain (CPP_OPTION (pfile, pending)->directive_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
|
/* This is called at the end of preprocessing. It pops the last
|
||||||
buffer and writes dependency output, and returns the number of
|
buffer and writes dependency output, and returns the number of
|
||||||
errors.
|
errors.
|
||||||
@ -723,7 +689,7 @@ new_pending_directive (pend, text, handler)
|
|||||||
DEF_OPT("D", no_mac, OPT_D) \
|
DEF_OPT("D", no_mac, OPT_D) \
|
||||||
DEF_OPT("U", no_mac, OPT_U) \
|
DEF_OPT("U", no_mac, OPT_U) \
|
||||||
DEF_OPT("imacros", no_fil, OPT_imacros) \
|
DEF_OPT("imacros", no_fil, OPT_imacros) \
|
||||||
DEF_OPT("include", no_fil, OPT_include)
|
|
||||||
|
|
||||||
#define DEF_OPT(text, msg, code) code,
|
#define DEF_OPT(text, msg, code) code,
|
||||||
enum opt_code
|
enum opt_code
|
||||||
@ -887,7 +853,6 @@ cpp_handle_option (pfile, argc, argv)
|
|||||||
case OPT_U:
|
case OPT_U:
|
||||||
new_pending_directive (pend, arg, cpp_undef);
|
new_pending_directive (pend, arg, cpp_undef);
|
||||||
break;
|
break;
|
||||||
case OPT_include:
|
|
||||||
case OPT_imacros:
|
case OPT_imacros:
|
||||||
{
|
{
|
||||||
struct pending_option *o = (struct pending_option *)
|
struct pending_option *o = (struct pending_option *)
|
||||||
@ -895,10 +860,7 @@ cpp_handle_option (pfile, argc, argv)
|
|||||||
o->arg = arg;
|
o->arg = arg;
|
||||||
o->next = NULL;
|
o->next = NULL;
|
||||||
|
|
||||||
if (opt_code == OPT_include)
|
APPEND (pend, imacros, o);
|
||||||
APPEND (pend, include, o);
|
|
||||||
else
|
|
||||||
APPEND (pend, imacros, o);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
11
gcc/cpplib.c
11
gcc/cpplib.c
@ -1,6 +1,6 @@
|
|||||||
/* CPP Library. (Directive handling.)
|
/* CPP Library. (Directive handling.)
|
||||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
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.
|
Contributed by Per Bothner, 1994-95.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
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. */
|
/* Don't generate a callback for popping the main file. */
|
||||||
if (pfile->buffer)
|
if (pfile->buffer)
|
||||||
{
|
_cpp_do_file_change (pfile, LC_LEAVE, 0, 0, 0);
|
||||||
_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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Part of CPP library. (Macro and #define handling.)
|
/* Part of CPP library. (Macro and #define handling.)
|
||||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
|
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.
|
Written by Per Bothner, 1994.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
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;
|
cpp_macro *macro = node->value.macro;
|
||||||
|
|
||||||
if (!macro->used
|
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)))
|
&& MAIN_FILE_P (lookup_line (&pfile->line_maps, macro->line)))
|
||||||
cpp_error_with_line (pfile, DL_WARNING, macro->line, 0,
|
cpp_error_with_line (pfile, DL_WARNING, macro->line, 0,
|
||||||
"macro \"%s\" is not used", NODE_NAME (node));
|
"macro \"%s\" is not used", NODE_NAME (node));
|
||||||
@ -1568,7 +1566,7 @@ _cpp_create_definition (pfile, node)
|
|||||||
macro->params = 0;
|
macro->params = 0;
|
||||||
macro->paramc = 0;
|
macro->paramc = 0;
|
||||||
macro->variadic = 0;
|
macro->variadic = 0;
|
||||||
macro->used = 0;
|
macro->used = !CPP_OPTION (pfile, warn_unused_macros);
|
||||||
macro->count = 0;
|
macro->count = 0;
|
||||||
macro->fun_like = 0;
|
macro->fun_like = 0;
|
||||||
/* To suppress some diagnostics. */
|
/* To suppress some diagnostics. */
|
||||||
|
Loading…
Reference in New Issue
Block a user