Commit 63973df3 by Neil Booth Committed by Neil Booth

Makefile.in: Update.

	* Makefile.in: Update.
	* c-common.c (flag_no_line_commands, flag_no_output,
	flag_dump_macros, flag_dump_includes): New.
	* c-common.h (flag_no_line_commands, flag_no_output,
	flag_dump_macros, flag_dump_includes, preprocess_file): New.
	(init_c_lex): Update prototype.
	* c-lex.c (init_c_lex): Update prototype; move some code to
	c_common_init.
	* c-opts.c (preprocess_file): Subsume into c_common_init.
	(c_common_decode_option): Update flags.
	(c_common_init): Move code from preprocess_file and init_c_lex.
	(sanitize_cpp_opts): Update.
	* c-ppoutput.c: New, cppmain.c almost verbatim.
	* cpphash.h (struct printer): Remove.
	(struct cpp_reader): Remove print.
	* cpplib.h (dump_none, dump_only, dump_names, dump_definitions,
	cpp_preprocess_file): Remove.
	(struct cpp_options): Remove no_output, no_line_commands, dump_macros
	and dump_includes.
	* cppmain.c: Remove.
	* doc/passes.texi: Update.

From-SVN: r63773
parent 95f3f59e
2003-03-04 Neil Booth <neil@daikokuya.co.uk>
* Makefile.in: Update.
* c-common.c (flag_no_line_commands, flag_no_output,
flag_dump_macros, flag_dump_includes): New.
* c-common.h (flag_no_line_commands, flag_no_output,
flag_dump_macros, flag_dump_includes, preprocess_file): New.
(init_c_lex): Update prototype.
* c-lex.c (init_c_lex): Update prototype; move some code to
c_common_init.
* c-opts.c (preprocess_file): Subsume into c_common_init.
(c_common_decode_option): Update flags.
(c_common_init): Move code from preprocess_file and init_c_lex.
(sanitize_cpp_opts): Update.
* c-ppoutput.c: New, cppmain.c almost verbatim.
* cpphash.h (struct printer): Remove.
(struct cpp_reader): Remove print.
* cpplib.h (dump_none, dump_only, dump_names, dump_definitions,
cpp_preprocess_file): Remove.
(struct cpp_options): Remove no_output, no_line_commands, dump_macros
and dump_includes.
* cppmain.c: Remove.
* doc/passes.texi: Update.
2003-03-04 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> 2003-03-04 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* function.c (STACK_ALIGNMENT_NEEDED): New macro. Default to 1. * function.c (STACK_ALIGNMENT_NEEDED): New macro. Default to 1.
......
...@@ -759,7 +759,7 @@ CXX_TARGET_OBJS=@cxx_target_objs@ ...@@ -759,7 +759,7 @@ CXX_TARGET_OBJS=@cxx_target_objs@
# Language-specific object files for C and Objective C. # Language-specific object files for C and Objective C.
C_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \ C_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o \
c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o \ c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o \
c-incpath.o cppdefault.o \ c-incpath.o cppdefault.o c-ppoutput.o \
c-objc-common.o c-dump.o c-pch.o libcpp.a $(C_TARGET_OBJS) c-objc-common.o c-dump.o c-pch.o libcpp.a $(C_TARGET_OBJS)
# Language-specific object files for C. # Language-specific object files for C.
...@@ -1234,6 +1234,8 @@ c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ ...@@ -1234,6 +1234,8 @@ c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) debug.h $(C_TREE_H) c-common.h real.h c-incpath.h cppdefault.h \ $(RTL_H) debug.h $(C_TREE_H) c-common.h real.h c-incpath.h cppdefault.h \
c-pragma.h input.h intl.h flags.h toplev.h output.h \ c-pragma.h input.h intl.h flags.h toplev.h output.h \
mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H) mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H)
c-ppoutput.o : c-ppoutput.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
c-common.h $(TREE_H) $(CPPLIB_H) cpphash.h $(TM_P_H)
c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(C_TREE_H) $(RTL_H) insn-config.h integrate.h $(EXPR_H) $(C_TREE_H) \ $(C_TREE_H) $(RTL_H) insn-config.h integrate.h $(EXPR_H) $(C_TREE_H) \
flags.h toplev.h tree-inline.h diagnostic.h integrate.h $(VARRAY_H) \ flags.h toplev.h tree-inline.h diagnostic.h integrate.h $(VARRAY_H) \
...@@ -2275,7 +2277,7 @@ PREPROCESSOR_DEFINES = \ ...@@ -2275,7 +2277,7 @@ PREPROCESSOR_DEFINES = \
@TARGET_SYSTEM_ROOT_DEFINE@ @TARGET_SYSTEM_ROOT_DEFINE@
LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \ LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \
cpphash.o cpperror.o cppinit.o cppmain.o \ cpphash.o cpperror.o cppinit.o \
hashtable.o line-map.o mkdeps.o prefix.o mbchar.o cpppch.o hashtable.o line-map.o mkdeps.o prefix.o mbchar.o cpppch.o
LIBCPP_DEPS = $(CPPLIB_H) cpphash.h line-map.h hashtable.h intl.h \ LIBCPP_DEPS = $(CPPLIB_H) cpphash.h line-map.h hashtable.h intl.h \
...@@ -2288,8 +2290,6 @@ libcpp.a: $(LIBCPP_OBJS) ...@@ -2288,8 +2290,6 @@ libcpp.a: $(LIBCPP_OBJS)
$(AR) $(AR_FLAGS) libcpp.a $(LIBCPP_OBJS) $(AR) $(AR_FLAGS) libcpp.a $(LIBCPP_OBJS)
-$(RANLIB) libcpp.a -$(RANLIB) libcpp.a
cppmain.o: cppmain.c $(LIBCPP_DEPS)
cpperror.o: cpperror.c $(LIBCPP_DEPS) cpperror.o: cpperror.c $(LIBCPP_DEPS)
cppexp.o: cppexp.c $(LIBCPP_DEPS) cppexp.o: cppexp.c $(LIBCPP_DEPS)
cpplex.o: cpplex.c $(LIBCPP_DEPS) mbchar.h cpplex.o: cpplex.c $(LIBCPP_DEPS) mbchar.h
......
...@@ -198,8 +198,26 @@ int allow_pch = 1; ...@@ -198,8 +198,26 @@ int allow_pch = 1;
/* Switches common to the C front ends. */ /* Switches common to the C front ends. */
/* Nonzero if prepreprocessing only. */ /* Nonzero if prepreprocessing only. */
int flag_preprocess_only; int flag_preprocess_only;
/* Nonzero means don't output line number information. */
char flag_no_line_commands;
/* Nonzero causes -E output not to be done, but directives such as
#define that have side effects are still obeyed. */
char flag_no_output;
/* Nonzero means dump macros in some fashion. */
char flag_dump_macros;
/* Nonzero means pass #include lines through to the output. */
char flag_dump_includes;
/* The file name to which we should write a precompiled header, or /* The file name to which we should write a precompiled header, or
NULL if no header will be written in this compile. */ NULL if no header will be written in this compile. */
......
...@@ -370,6 +370,24 @@ extern int allow_pch; ...@@ -370,6 +370,24 @@ extern int allow_pch;
extern int flag_preprocess_only; extern int flag_preprocess_only;
/* Nonzero means don't output line number information. */
extern char flag_no_line_commands;
/* Nonzero causes -E output not to be done, but directives such as
#define that have side effects are still obeyed. */
extern char flag_no_output;
/* Nonzero means dump macros in some fashion; contains the 'D', 'M' or
'N' of the command line switch. */
extern char flag_dump_macros;
/* Nonzero means pass #include lines through to the output. */
extern char flag_dump_includes;
/* The file name to which we should write a precompiled header, or /* The file name to which we should write a precompiled header, or
NULL if no header will be written in this compile. */ NULL if no header will be written in this compile. */
...@@ -1243,7 +1261,7 @@ extern int c_staticp PARAMS ((tree)); ...@@ -1243,7 +1261,7 @@ extern int c_staticp PARAMS ((tree));
extern int c_common_unsafe_for_reeval PARAMS ((tree)); extern int c_common_unsafe_for_reeval PARAMS ((tree));
extern const char *init_c_lex PARAMS ((const char *)); extern void init_c_lex PARAMS ((void));
extern void cb_register_builtins PARAMS ((cpp_reader *)); extern void cb_register_builtins PARAMS ((cpp_reader *));
...@@ -1274,5 +1292,8 @@ extern void c_common_read_pch PARAMS ((cpp_reader *pfile, ...@@ -1274,5 +1292,8 @@ extern void c_common_read_pch PARAMS ((cpp_reader *pfile,
int fd, int fd,
const char *orig)); const char *orig));
extern void c_common_write_pch PARAMS ((void)); extern void c_common_write_pch PARAMS ((void));
extern void preprocess_file PARAMS ((cpp_reader *,
const char *,
FILE *));
#endif /* ! GCC_C_COMMON_H */ #endif /* ! GCC_C_COMMON_H */
...@@ -93,9 +93,8 @@ static void cb_define PARAMS ((cpp_reader *, unsigned int, ...@@ -93,9 +93,8 @@ static void cb_define PARAMS ((cpp_reader *, unsigned int,
static void cb_undef PARAMS ((cpp_reader *, unsigned int, static void cb_undef PARAMS ((cpp_reader *, unsigned int,
cpp_hashnode *)); cpp_hashnode *));
const char * void
init_c_lex (filename) init_c_lex ()
const char *filename;
{ {
struct cpp_callbacks *cb; struct cpp_callbacks *cb;
struct c_fileinfo *toplevel; struct c_fileinfo *toplevel;
...@@ -135,11 +134,6 @@ init_c_lex (filename) ...@@ -135,11 +134,6 @@ init_c_lex (filename)
cb->define = cb_define; cb->define = cb_define;
cb->undef = cb_undef; cb->undef = cb_undef;
} }
/* Start it at 0. */
lineno = 0;
return cpp_read_main_file (parse_in, filename, ident_hash);
} }
/* A thin wrapper around the real parser that initializes the /* A thin wrapper around the real parser that initializes the
......
...@@ -90,7 +90,6 @@ static void set_std_cxx98 PARAMS ((int)); ...@@ -90,7 +90,6 @@ static void set_std_cxx98 PARAMS ((int));
static void set_std_c89 PARAMS ((int, int)); static void set_std_c89 PARAMS ((int, int));
static void set_std_c99 PARAMS ((int)); static void set_std_c99 PARAMS ((int));
static void check_deps_environment_vars PARAMS ((void)); static void check_deps_environment_vars PARAMS ((void));
static void preprocess_file 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));
...@@ -715,7 +714,7 @@ c_common_decode_option (argc, argv) ...@@ -715,7 +714,7 @@ c_common_decode_option (argc, argv)
depends on this. Preprocessed output does occur if -MD, -MMD depends on this. Preprocessed output does occur if -MD, -MMD
or environment var dependency generation is used. */ or environment var dependency generation is used. */
cpp_opts->deps.style = (code == OPT_M ? DEPS_SYSTEM: DEPS_USER); cpp_opts->deps.style = (code == OPT_M ? DEPS_SYSTEM: DEPS_USER);
cpp_opts->no_output = 1; flag_no_output = 1;
cpp_opts->inhibit_warnings = 1; cpp_opts->inhibit_warnings = 1;
break; break;
...@@ -747,7 +746,7 @@ c_common_decode_option (argc, argv) ...@@ -747,7 +746,7 @@ c_common_decode_option (argc, argv)
break; break;
case OPT_P: case OPT_P:
cpp_opts->no_line_commands = 1; flag_no_line_commands = 1;
break; break;
case OPT_Wabi: case OPT_Wabi:
...@@ -1500,24 +1499,6 @@ c_common_post_options () ...@@ -1500,24 +1499,6 @@ c_common_post_options ()
return flag_preprocess_only; return flag_preprocess_only;
} }
/* Preprocess the input file to out_stream. */
static void
preprocess_file ()
{
/* Open the output now. We must do so even if no_output is on,
because there may be other output than from the actual
preprocessing (e.g. from -dM). */
if (out_fname[0] == '\0')
out_stream = stdout;
else
out_stream = fopen (out_fname, "w");
if (out_stream == NULL)
fatal_io_error ("opening output file %s", out_fname);
else
cpp_preprocess_file (parse_in, in_fname, out_stream);
}
/* Front end initialization common to C, ObjC and C++. */ /* Front end initialization common to C, ObjC and C++. */
const char * const char *
c_common_init (filename) c_common_init (filename)
...@@ -1535,18 +1516,35 @@ c_common_init (filename) ...@@ -1535,18 +1516,35 @@ c_common_init (filename)
cpp_main_file. */ cpp_main_file. */
cpp_get_callbacks (parse_in)->register_builtins = cb_register_builtins; cpp_get_callbacks (parse_in)->register_builtins = cb_register_builtins;
/* NULL is passed up to toplev.c and we exit quickly. */
if (flag_preprocess_only) if (flag_preprocess_only)
{ {
preprocess_file (); /* Open the output now. We must do so even if flag_no_output is
on, because there may be other output than from the actual
preprocessing (e.g. from -dM). */
if (out_fname[0] == '\0')
out_stream = stdout;
else
out_stream = fopen (out_fname, "w");
if (out_stream == NULL)
fatal_io_error ("opening output file %s", out_fname);
else
/* Preprocess the input file to out_stream. */
preprocess_file (parse_in, in_fname, out_stream);
/* Exit quickly in toplev.c. */
return NULL; return NULL;
} }
/* Do this before initializing pragmas, as then cpplib's hash table init_c_lex ();
has been set up. NOTE: we are using our own file name here, not
the one supplied. */ /* Start it at 0. */
filename = init_c_lex (in_fname); lineno = 0;
/* NOTE: we use in_fname here, not the one supplied. */
filename = cpp_read_main_file (parse_in, in_fname, ident_hash);
/* Has to wait until now so that cpplib has its hash table. */
init_pragma (); init_pragma ();
return filename; return filename;
...@@ -1665,16 +1663,16 @@ sanitize_cpp_opts () ...@@ -1665,16 +1663,16 @@ sanitize_cpp_opts ()
/* -dM and dependencies suppress normal output; do it here so that /* -dM and dependencies suppress normal output; do it here so that
the last -d[MDN] switch overrides earlier ones. */ the last -d[MDN] switch overrides earlier ones. */
if (cpp_opts->dump_macros == dump_only) if (flag_dump_macros == 'M')
cpp_opts->no_output = 1; flag_no_output = 1;
/* Disable -dD, -dN and -dI if normal output is suppressed. Allow /* Disable -dD, -dN and -dI if normal output is suppressed. Allow
-dM since at least glibc relies on -M -dM to work. */ -dM since at least glibc relies on -M -dM to work. */
if (cpp_opts->no_output) if (flag_no_output)
{ {
if (cpp_opts->dump_macros != dump_only) if (flag_dump_macros != 'M')
cpp_opts->dump_macros = dump_none; flag_dump_macros = 0;
cpp_opts->dump_includes = 0; flag_dump_includes = 0;
} }
cpp_opts->unsigned_char = !flag_signed_char; cpp_opts->unsigned_char = !flag_signed_char;
...@@ -1769,20 +1767,14 @@ handle_OPT_d (arg) ...@@ -1769,20 +1767,14 @@ handle_OPT_d (arg)
while ((c = *arg++) != '\0') while ((c = *arg++) != '\0')
switch (c) switch (c)
{ {
case 'M': case 'M': /* Dump macros only. */
cpp_opts->dump_macros = dump_only; case 'N': /* Dump names. */
break; case 'D': /* Dump definitions. */
flag_dump_macros = c;
case 'N':
cpp_opts->dump_macros = dump_names;
break;
case 'D':
cpp_opts->dump_macros = dump_definitions;
break; break;
case 'I': case 'I':
cpp_opts->dump_includes = 1; flag_dump_includes = 1;
break; break;
} }
} }
......
...@@ -240,18 +240,6 @@ struct spec_nodes ...@@ -240,18 +240,6 @@ struct spec_nodes
cpp_hashnode *n__VA_ARGS__; /* C99 vararg macros */ cpp_hashnode *n__VA_ARGS__; /* C99 vararg macros */
}; };
/* Encapsulates state used to convert a stream of tokens into a text
file. */
struct printer
{
FILE *outf; /* Stream to write to. */
const struct line_map *map; /* Logical to physical line mappings. */
const cpp_token *prev; /* Previous token. */
const cpp_token *source; /* Source token for spacing. */
unsigned int line; /* Line currently being written. */
unsigned char printed; /* Nonzero if something output at line. */
};
/* Represents the contents of a file cpplib has read in. */ /* Represents the contents of a file cpplib has read in. */
struct cpp_buffer struct cpp_buffer
{ {
...@@ -422,9 +410,6 @@ struct cpp_reader ...@@ -422,9 +410,6 @@ struct cpp_reader
preprocessor. */ preprocessor. */
struct spec_nodes spec_nodes; struct spec_nodes spec_nodes;
/* Used when doing preprocessed output. */
struct printer print;
/* Nonzero means don't look for #include "foo" the source-file /* Nonzero means don't look for #include "foo" the source-file
directory. */ directory. */
unsigned char quote_ignores_source_dir; unsigned char quote_ignores_source_dir;
......
...@@ -206,15 +206,6 @@ struct cpp_token ...@@ -206,15 +206,6 @@ struct cpp_token
typedef unsigned CPPCHAR_SIGNED_T cppchar_t; typedef unsigned CPPCHAR_SIGNED_T cppchar_t;
typedef CPPCHAR_SIGNED_T cppchar_signed_t; typedef CPPCHAR_SIGNED_T cppchar_signed_t;
/* Values for opts.dump_macros.
dump_only means inhibit output of the preprocessed text
and instead output the definitions of all user-defined
macros in a form suitable for use as input to cpp.
dump_names means pass #define and the macro name through to output.
dump_definitions means pass the whole definition (plus #define) through
*/
enum { dump_none = 0, dump_only, dump_names, dump_definitions };
/* This structure is nested inside struct cpp_reader, and /* This structure is nested inside struct cpp_reader, and
carries all the options visible to the command line. */ carries all the options visible to the command line. */
struct cpp_options struct cpp_options
...@@ -306,17 +297,10 @@ struct cpp_options ...@@ -306,17 +297,10 @@ struct cpp_options
/* Nonzero means turn warnings into errors. */ /* Nonzero means turn warnings into errors. */
unsigned char warnings_are_errors; unsigned char warnings_are_errors;
/* Nonzero causes output not to be done, but directives such as
#define that have side effects are still obeyed. */
unsigned char no_output;
/* Nonzero means we should look for header.gcc files that remap file /* Nonzero means we should look for header.gcc files that remap file
names. */ names. */
unsigned char remap; unsigned char remap;
/* Nonzero means don't output line number information. */
unsigned char no_line_commands;
/* Zero means dollar signs are punctuation. */ /* Zero means dollar signs are punctuation. */
unsigned char dollars_in_ident; unsigned char dollars_in_ident;
...@@ -339,12 +323,6 @@ struct cpp_options ...@@ -339,12 +323,6 @@ struct cpp_options
bother trying to do macro expansion and whatnot. */ bother trying to do macro expansion and whatnot. */
unsigned char preprocessed; unsigned char preprocessed;
/* Nonzero means dump macros in some fashion - see above. */
unsigned char dump_macros;
/* Nonzero means pass #include lines through to the output. */
unsigned char dump_includes;
/* Print column number in error messages. */ /* Print column number in error messages. */
unsigned char show_column; unsigned char show_column;
...@@ -753,9 +731,6 @@ extern void cpp_prepare_state PARAMS ((cpp_reader *, ...@@ -753,9 +731,6 @@ extern void cpp_prepare_state PARAMS ((cpp_reader *,
extern int cpp_read_state PARAMS ((cpp_reader *, const char *, FILE *, extern int cpp_read_state PARAMS ((cpp_reader *, const char *, FILE *,
struct save_macro_data *)); struct save_macro_data *));
/* In cppmain.c */
extern void cpp_preprocess_file PARAMS ((cpp_reader *, const char *, FILE *));
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
...@@ -82,7 +82,8 @@ the other C-like languages: @file{c-common.c}, ...@@ -82,7 +82,8 @@ the other C-like languages: @file{c-common.c},
@file{c-pragma.c}, @file{c-pragma.c},
@file{c-semantics.c}, @file{c-semantics.c},
@file{c-lex.c}, @file{c-lex.c},
@file{c-incpath.c} @file{c-incpath.c},
@file{c-ppoutput.c},
@file{c-common.h}, @file{c-common.h},
@file{c-dump.h}, @file{c-dump.h},
@file{c-incpath.h} @file{c-incpath.h}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment