Commit 460bd0e3 by Neil Booth Committed by Neil Booth

c-common.c (STDC_0_IN_SYSTEM_HEADERS, [...]): Move to c-copts.c.

	* c-common.c (STDC_0_IN_SYSTEM_HEADERS, c_common_init): Move
	to c-copts.c.
	(warn_multichar): Die.
	(cb_register_builtins): Export.
	* c-common.h (warn_multichar, preprocess_file): Remove.
	(cb_register_builtins): New.
	* c-lang.c (c_init): Remove.
	(LANG_HOOKS_INIT): Use c_objc_common_init.
	* c-lex.c (init_c_lex): Don't canonicalize filename.
	* c-opts.c (in_fname, STDC_0_IN_SYSTEM_HEADERS): New.
	(preprocess_file): Make static.  Update for cpplib.
	(c_common_decode_option): Remove warn_multichar.  Use in_fname.
	(c_common_post_options): Set some cpp options here.
	(c_common_init): Move from c-common.c.
	* cppinit.c (cpp_post_options): Don't canonicalize in_fname.
	* cpplib.h (struct cpp_options): Remove in_fname.
	(cpp_preprocess_file): Update.
	* cppmain.c (cpp_preprocess_file): Update for new prototypes.

From-SVN: r56223
parent f3f268dd
2002-08-12 Neil Booth <neil@daikokuya.co.uk>
* c-common.c (STDC_0_IN_SYSTEM_HEADERS, c_common_init): Move
to c-copts.c.
(warn_multichar): Die.
(cb_register_builtins): Export.
* c-common.h (warn_multichar, preprocess_file): Remove.
(cb_register_builtins): New.
* c-lang.c (c_init): Remove.
(LANG_HOOKS_INIT): Use c_objc_common_init.
* c-lex.c (init_c_lex): Don't canonicalize filename.
* c-opts.c (in_fname, STDC_0_IN_SYSTEM_HEADERS): New.
(preprocess_file): Make static. Update for cpplib.
(c_common_decode_option): Remove warn_multichar. Use in_fname.
(c_common_post_options): Set some cpp options here.
(c_common_init): Move from c-common.c.
* cppinit.c (cpp_post_options): Don't canonicalize in_fname.
* cpplib.h (struct cpp_options): Remove in_fname.
(cpp_preprocess_file): Update.
* cppmain.c (cpp_preprocess_file): Update for new prototypes.
2002-08-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2002-08-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* config.gcc (mips*-*-netbsd*): Include ${tm_file}. * config.gcc (mips*-*-netbsd*): Include ${tm_file}.
......
...@@ -83,10 +83,6 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */ ...@@ -83,10 +83,6 @@ cpp_reader *parse_in; /* Declared in c-pragma.h. */
: "long long unsigned int")) : "long long unsigned int"))
#endif #endif
#ifndef STDC_0_IN_SYSTEM_HEADERS
#define STDC_0_IN_SYSTEM_HEADERS 0
#endif
#ifndef REGISTER_PREFIX #ifndef REGISTER_PREFIX
#define REGISTER_PREFIX "" #define REGISTER_PREFIX ""
#endif #endif
...@@ -310,10 +306,6 @@ int warn_conversion; ...@@ -310,10 +306,6 @@ int warn_conversion;
int warn_unknown_pragmas; /* Tri state variable. */ int warn_unknown_pragmas; /* Tri state variable. */
/* Nonzero means warn about use of multicharacter literals. */
int warn_multichar = 1;
/* Warn about format/argument anomalies in calls to formatted I/O functions /* Warn about format/argument anomalies in calls to formatted I/O functions
(*printf, *scanf, strftime, strfmon, etc.). */ (*printf, *scanf, strftime, strfmon, etc.). */
...@@ -692,8 +684,6 @@ static int if_stack_space = 0; ...@@ -692,8 +684,6 @@ static int if_stack_space = 0;
/* Stack pointer. */ /* Stack pointer. */
static int if_stack_pointer = 0; static int if_stack_pointer = 0;
static void cb_register_builtins PARAMS ((cpp_reader *));
static tree handle_packed_attribute PARAMS ((tree *, tree, tree, int, static tree handle_packed_attribute PARAMS ((tree *, tree, tree, int,
bool *)); bool *));
static tree handle_nocommon_attribute PARAMS ((tree *, tree, tree, int, static tree handle_nocommon_attribute PARAMS ((tree *, tree, tree, int,
...@@ -4672,7 +4662,7 @@ boolean_increment (code, arg) ...@@ -4672,7 +4662,7 @@ boolean_increment (code, arg)
} }
/* Hook that registers front end and target-specific built-ins. */ /* Hook that registers front end and target-specific built-ins. */
static void void
cb_register_builtins (pfile) cb_register_builtins (pfile)
cpp_reader *pfile; cpp_reader *pfile;
{ {
...@@ -4884,52 +4874,6 @@ builtin_define_type_max (macro, type, is_long) ...@@ -4884,52 +4874,6 @@ builtin_define_type_max (macro, type, is_long)
cpp_define (parse_in, buf); cpp_define (parse_in, buf);
} }
/* Front end initialization common to C, ObjC and C++. */
const char *
c_common_init (filename)
const char *filename;
{
cpp_options *options = cpp_get_options (parse_in);
/* Set up preprocessor arithmetic. Must be done after call to
c_common_nodes_and_builtins for wchar_type_node to be good. */
options->precision = TYPE_PRECISION (intmax_type_node);
options->char_precision = TYPE_PRECISION (char_type_node);
options->int_precision = TYPE_PRECISION (integer_type_node);
options->wchar_precision = TYPE_PRECISION (wchar_type_node);
options->unsigned_wchar = TREE_UNSIGNED (wchar_type_node);
options->unsigned_char = !flag_signed_char;
options->warn_multichar = warn_multichar;
options->stdc_0_in_system_headers = STDC_0_IN_SYSTEM_HEADERS;
/* We want -Wno-long-long to override -pedantic -std=non-c99
and/or -Wtraditional, whatever the ordering. */
options->warn_long_long
= warn_long_long && ((!flag_isoc99 && pedantic) || warn_traditional);
/* Register preprocessor built-ins before calls to
cpp_main_file. */
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)
{
preprocess_file ();
return NULL;
}
/* Do this before initializing pragmas, as then cpplib's hash table
has been set up. */
filename = init_c_lex (filename);
init_pragma ();
if (!c_attrs_initialized)
c_init_attributes ();
return filename;
}
static void static void
c_init_attributes () c_init_attributes ()
{ {
......
...@@ -481,10 +481,6 @@ extern int warn_conversion; ...@@ -481,10 +481,6 @@ extern int warn_conversion;
extern int warn_unknown_pragmas; /* Tri state variable. */ extern int warn_unknown_pragmas; /* Tri state variable. */
/* Nonzero means warn about use of multicharacter literals. */
extern int warn_multichar;
/* Warn about format/argument anomalies in calls to formatted I/O functions /* Warn about format/argument anomalies in calls to formatted I/O functions
(*printf, *scanf, strftime, strfmon, etc.). */ (*printf, *scanf, strftime, strfmon, etc.). */
...@@ -1209,7 +1205,7 @@ extern int c_common_unsafe_for_reeval PARAMS ((tree)); ...@@ -1209,7 +1205,7 @@ extern int c_common_unsafe_for_reeval PARAMS ((tree));
extern const char *init_c_lex PARAMS ((const char *)); extern const char *init_c_lex PARAMS ((const char *));
extern void preprocess_file PARAMS ((void)); extern void cb_register_builtins PARAMS ((cpp_reader *));
/* Information recorded about each file examined during compilation. */ /* Information recorded about each file examined during compilation. */
......
...@@ -29,7 +29,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -29,7 +29,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "langhooks.h" #include "langhooks.h"
#include "langhooks-def.h" #include "langhooks-def.h"
static const char *c_init PARAMS ((const char *));
static void c_init_options PARAMS ((void)); static void c_init_options PARAMS ((void));
/* ### When changing hooks, consider if ObjC needs changing too!! ### */ /* ### When changing hooks, consider if ObjC needs changing too!! ### */
...@@ -37,7 +36,7 @@ static void c_init_options PARAMS ((void)); ...@@ -37,7 +36,7 @@ static void c_init_options PARAMS ((void));
#undef LANG_HOOKS_NAME #undef LANG_HOOKS_NAME
#define LANG_HOOKS_NAME "GNU C" #define LANG_HOOKS_NAME "GNU C"
#undef LANG_HOOKS_INIT #undef LANG_HOOKS_INIT
#define LANG_HOOKS_INIT c_init #define LANG_HOOKS_INIT c_objc_common_init
#undef LANG_HOOKS_FINISH #undef LANG_HOOKS_FINISH
#define LANG_HOOKS_FINISH c_common_finish #define LANG_HOOKS_FINISH c_common_finish
#undef LANG_HOOKS_INIT_OPTIONS #undef LANG_HOOKS_INIT_OPTIONS
...@@ -159,13 +158,6 @@ c_init_options () ...@@ -159,13 +158,6 @@ c_init_options ()
c_common_init_options (clk_c); c_common_init_options (clk_c);
} }
static const char *
c_init (filename)
const char *filename;
{
return c_objc_common_init (filename);
}
/* Used by c-lex.c, but only for objc. */ /* Used by c-lex.c, but only for objc. */
tree tree
......
...@@ -135,9 +135,6 @@ init_c_lex (filename) ...@@ -135,9 +135,6 @@ init_c_lex (filename)
/* Start it at 0. */ /* Start it at 0. */
lineno = 0; lineno = 0;
if (filename == NULL || !strcmp (filename, "-"))
filename = "";
return cpp_read_main_file (parse_in, filename, ident_hash); return cpp_read_main_file (parse_in, filename, ident_hash);
} }
......
...@@ -33,6 +33,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -33,6 +33,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
static cpp_options *cpp_opts; static cpp_options *cpp_opts;
/* Input filename. */
static const char *in_fname;
/* Filename and stream for preprocessed output. */ /* Filename and stream for preprocessed output. */
static const char *out_fname; static const char *out_fname;
static FILE *out_stream; static FILE *out_stream;
...@@ -51,6 +54,11 @@ static void set_std_cxx98 PARAMS ((int)); ...@@ -51,6 +54,11 @@ 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));
#ifndef STDC_0_IN_SYSTEM_HEADERS
#define STDC_0_IN_SYSTEM_HEADERS 0
#endif
#define CL_C_ONLY (1 << 0) /* Only C. */ #define CL_C_ONLY (1 << 0) /* Only C. */
#define CL_OBJC_ONLY (1 << 1) /* Only ObjC. */ #define CL_OBJC_ONLY (1 << 1) /* Only ObjC. */
...@@ -462,8 +470,8 @@ c_common_decode_option (argc, argv) ...@@ -462,8 +470,8 @@ c_common_decode_option (argc, argv)
/* Interpret "-" or a non-switch as a file name. */ /* Interpret "-" or a non-switch as a file name. */
if (opt[0] != '-' || opt[1] == '\0') if (opt[0] != '-' || opt[1] == '\0')
{ {
if (!cpp_opts->in_fname) if (!in_fname)
cpp_opts->in_fname = opt; in_fname = opt;
else if (!out_fname) else if (!out_fname)
out_fname = opt; out_fname = opt;
else else
...@@ -565,7 +573,6 @@ c_common_decode_option (argc, argv) ...@@ -565,7 +573,6 @@ c_common_decode_option (argc, argv)
set_Wimplicit (on); set_Wimplicit (on);
warn_char_subscripts = on; warn_char_subscripts = on;
warn_missing_braces = on; warn_missing_braces = on;
warn_multichar = on; /* Was C++ only. */
warn_parentheses = on; warn_parentheses = on;
warn_return_type = on; warn_return_type = on;
warn_sequence_point = on; /* Was C only. */ warn_sequence_point = on; /* Was C only. */
...@@ -598,6 +605,7 @@ c_common_decode_option (argc, argv) ...@@ -598,6 +605,7 @@ c_common_decode_option (argc, argv)
cpp_opts->warn_trigraphs = on; cpp_opts->warn_trigraphs = on;
cpp_opts->warn_comments = on; cpp_opts->warn_comments = on;
cpp_opts->warn_num_sign_change = on; cpp_opts->warn_num_sign_change = on;
cpp_opts->warn_multichar = on; /* Was C++ only. */
break; break;
case OPT_Wbad_function_cast: case OPT_Wbad_function_cast:
...@@ -728,7 +736,7 @@ c_common_decode_option (argc, argv) ...@@ -728,7 +736,7 @@ c_common_decode_option (argc, argv)
break; break;
case OPT_Wmultichar: case OPT_Wmultichar:
warn_multichar = on; cpp_opts->warn_multichar = on;
break; break;
case OPT_Wnested_externs: case OPT_Wnested_externs:
...@@ -1204,7 +1212,10 @@ c_common_decode_option (argc, argv) ...@@ -1204,7 +1212,10 @@ c_common_decode_option (argc, argv)
bool bool
c_common_post_options () c_common_post_options ()
{ {
/* Canonicalize the output filename. */ /* Canonicalize the input and output filenames. */
if (in_fname == NULL || !strcmp (in_fname, "-"))
in_fname = "";
if (out_fname == NULL || !strcmp (out_fname, "-")) if (out_fname == NULL || !strcmp (out_fname, "-"))
out_fname = ""; out_fname = "";
...@@ -1221,6 +1232,14 @@ c_common_post_options () ...@@ -1221,6 +1232,14 @@ c_common_post_options ()
cpp_post_options (parse_in); cpp_post_options (parse_in);
cpp_opts->unsigned_char = !flag_signed_char;
cpp_opts->stdc_0_in_system_headers = STDC_0_IN_SYSTEM_HEADERS;
/* We want -Wno-long-long to override -pedantic -std=non-c99
and/or -Wtraditional, whatever the ordering. */
cpp_opts->warn_long_long
= warn_long_long && ((!flag_isoc99 && pedantic) || warn_traditional);
flag_inline_trees = 1; flag_inline_trees = 1;
/* Use tree inlining if possible. Function instrumentation is only /* Use tree inlining if possible. Function instrumentation is only
...@@ -1263,7 +1282,7 @@ c_common_post_options () ...@@ -1263,7 +1282,7 @@ c_common_post_options ()
} }
/* Preprocess the input file to out_stream. */ /* Preprocess the input file to out_stream. */
void static void
preprocess_file () preprocess_file ()
{ {
/* Open the output now. We must do so even if no_output is on, /* Open the output now. We must do so even if no_output is on,
...@@ -1277,7 +1296,41 @@ preprocess_file () ...@@ -1277,7 +1296,41 @@ preprocess_file ()
if (out_stream == NULL) if (out_stream == NULL)
fatal_io_error ("opening output file %s", out_fname); fatal_io_error ("opening output file %s", out_fname);
else else
cpp_preprocess_file (parse_in, out_stream); cpp_preprocess_file (parse_in, in_fname, out_stream);
}
/* Front end initialization common to C, ObjC and C++. */
const char *
c_common_init (filename)
const char *filename;
{
/* Set up preprocessor arithmetic. Must be done after call to
c_common_nodes_and_builtins for type nodes to be good. */
cpp_opts->precision = TYPE_PRECISION (intmax_type_node);
cpp_opts->char_precision = TYPE_PRECISION (char_type_node);
cpp_opts->int_precision = TYPE_PRECISION (integer_type_node);
cpp_opts->wchar_precision = TYPE_PRECISION (wchar_type_node);
cpp_opts->unsigned_wchar = TREE_UNSIGNED (wchar_type_node);
/* Register preprocessor built-ins before calls to
cpp_main_file. */
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)
{
preprocess_file ();
return NULL;
}
/* Do this before initializing pragmas, as then cpplib's hash table
has been set up. NOTE: we are using our own file name here, not
the one supplied. */
filename = init_c_lex (in_fname);
init_pragma ();
return filename;
} }
/* Common finish hook for the C, ObjC and C++ front ends. */ /* Common finish hook for the C, ObjC and C++ front ends. */
......
...@@ -1452,12 +1452,6 @@ void ...@@ -1452,12 +1452,6 @@ void
cpp_post_options (pfile) cpp_post_options (pfile)
cpp_reader *pfile; cpp_reader *pfile;
{ {
/* Canonicalize in_fname and out_fname. We guarantee they are not
NULL, and that the empty string represents stdin / stdout. */
if (CPP_OPTION (pfile, in_fname) == NULL
|| !strcmp (CPP_OPTION (pfile, in_fname), "-"))
CPP_OPTION (pfile, in_fname) = "";
/* -Wtraditional is not useful in C++ mode. */ /* -Wtraditional is not useful in C++ mode. */
if (CPP_OPTION (pfile, cplusplus)) if (CPP_OPTION (pfile, cplusplus))
CPP_OPTION (pfile, warn_traditional) = 0; CPP_OPTION (pfile, warn_traditional) = 0;
......
...@@ -221,9 +221,6 @@ enum { dump_none = 0, dump_only, dump_names, dump_definitions }; ...@@ -221,9 +221,6 @@ enum { dump_none = 0, dump_only, dump_names, dump_definitions };
carries all the options visible to the command line. */ carries all the options visible to the command line. */
struct cpp_options struct cpp_options
{ {
/* Name of input and output files. */
const char *in_fname;
/* Characters between tab stops. */ /* Characters between tab stops. */
unsigned int tabstop; unsigned int tabstop;
...@@ -726,7 +723,7 @@ extern int cpp_included PARAMS ((cpp_reader *, const char *)); ...@@ -726,7 +723,7 @@ extern int cpp_included PARAMS ((cpp_reader *, const char *));
extern void cpp_make_system_header PARAMS ((cpp_reader *, int, int)); extern void cpp_make_system_header PARAMS ((cpp_reader *, int, int));
/* In cppmain.c */ /* In cppmain.c */
extern void cpp_preprocess_file PARAMS ((cpp_reader *, FILE *)); extern void cpp_preprocess_file PARAMS ((cpp_reader *, const char *, FILE *));
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -67,8 +67,9 @@ static struct printer print; ...@@ -67,8 +67,9 @@ static struct printer print;
/* Preprocess and output. */ /* Preprocess and output. */
void void
cpp_preprocess_file (pfile, out_stream) cpp_preprocess_file (pfile, in_fname, out_stream)
cpp_reader *pfile; cpp_reader *pfile;
const char *in_fname;
FILE *out_stream; FILE *out_stream;
{ {
options = cpp_get_options (pfile); options = cpp_get_options (pfile);
...@@ -84,7 +85,7 @@ cpp_preprocess_file (pfile, out_stream) ...@@ -84,7 +85,7 @@ cpp_preprocess_file (pfile, out_stream)
setup_callbacks (pfile); setup_callbacks (pfile);
if (cpp_read_main_file (pfile, options->in_fname, NULL)) if (cpp_read_main_file (pfile, in_fname, NULL))
{ {
cpp_finish_options (pfile); cpp_finish_options (pfile);
......
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