summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-17 17:52:48 +0000
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>2000-08-17 17:52:48 +0000
commita622c29df0824130bebc9874e650d81bef0d083d (patch)
tree145baebe1eb6775512b8143d7c1d5adf52be0c8a /gcc
parentcac0c8c9c7a91ddb3fbcf27aed4ba83f687279c1 (diff)
downloadgcc-a622c29df0824130bebc9874e650d81bef0d083d.tar.gz
* cppinit.c (sort_options): Remove, put functionality in
cpp_init. (cpp_init): New. (initialize_builtins): Free memory. (cpp_start_read): Move init_IStable to cpp_init. * cpplib.h (cpp_init): New prototype. * cppmain.c (main): Call cpp_init. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35763 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/cppinit.c39
-rw-r--r--gcc/cpplib.h1
-rw-r--r--gcc/cppmain.c1
4 files changed, 27 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ed0c3c0e81f..df0759cd028 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2000-08-17 Neil Booth <NeilB@earthling.net>
+
+ * cppinit.c (sort_options): Remove, put functionality in
+ cpp_init.
+ (cpp_init): New.
+ (initialize_builtins): Free memory.
+ (cpp_start_read): Move init_IStable to cpp_init.
+
+ * cpplib.h (cpp_init): New prototype.
+ * cppmain.c (main): Call cpp_init.
+
Thu Aug 17 13:20:32 EDT 2000 John Wehle (john@feith.com)
* rtlanal.c (rtx_unstable_p): Use CONSTANT_P.
diff --git a/gcc/cppinit.c b/gcc/cppinit.c
index c845028d357..bb378907e3c 100644
--- a/gcc/cppinit.c
+++ b/gcc/cppinit.c
@@ -111,7 +111,6 @@ static void new_pending_directive PARAMS ((struct cpp_pending *,
cl_directive_handler));
#ifdef HOST_EBCDIC
static int opt_comp PARAMS ((const void *, const void *));
-static void sort_options PARAMS ((void));
#endif
static int parse_option PARAMS ((const char *));
@@ -402,16 +401,24 @@ merge_include_chains (pfile)
CPP_OPTION (pfile, bracket_include) = brack;
}
+void
+cpp_init (void)
+{
+#ifdef HOST_EBCDIC
+ /* For non-ASCII hosts, the array needs to be sorted at runtime. */
+ qsort (cl_options, N_OPTS, sizeof (struct cl_option), opt_comp);
+#endif
+
+ /* Set up the IStable. This doesn't do anything if we were compiled
+ with a compiler that supports C99 designated initializers. */
+ init_IStable ();
+}
/* Initialize a cpp_reader structure. */
void
cpp_reader_init (pfile)
cpp_reader *pfile;
{
-#ifdef HOST_EBCDIC
- sort_options ();
-#endif
-
memset ((char *) pfile, 0, sizeof (cpp_reader));
CPP_OPTION (pfile, dollars_in_ident) = 1;
@@ -592,7 +599,9 @@ initialize_builtins (pfile)
str = xmalloc (b->len + strlen (val) + 2);
sprintf(str, "%s=%s", b->name, val);
}
+
cpp_define (pfile, str);
+ free (str);
}
else
{
@@ -806,10 +815,6 @@ cpp_start_read (pfile, print, fname)
|| CPP_OPTION (pfile, dump_macros) == dump_definitions
|| CPP_OPTION (pfile, dump_macros) == dump_only;
- /* Set up the IStable. This doesn't do anything if we were compiled
- with a compiler that supports C99 designated initializers. */
- init_IStable ();
-
/* Set up the tables used by read_and_prescan. */
_cpp_init_input_buffer (pfile);
@@ -1074,22 +1079,6 @@ static const struct cl_option cl_options[] =
#undef DEF_OPT
#undef COMMAND_LINE_OPTIONS
-#ifdef HOST_EBCDIC
-static void
-sort_options (void)
-{
- static int opts_sorted = 0;
-
- if (!opts_sorted)
- {
- opts_sorted = 1;
- /* For non-ASCII hosts, the array needs to be sorted at runtime */
- qsort (cl_options, N_OPTS, sizeof (struct cl_option), opt_comp);
- }
-}
-#endif
-
-
/* Perform a binary search to find which, if any, option the given
command-line matches. Returns its index in the option array,
negative on failure. Complications arise since some options can be
diff --git a/gcc/cpplib.h b/gcc/cpplib.h
index 0318f235797..1163c2e289c 100644
--- a/gcc/cpplib.h
+++ b/gcc/cpplib.h
@@ -637,6 +637,7 @@ struct cpp_hashnode
const unsigned char name[1]; /* name[length] */
};
+extern void cpp_init PARAMS ((void));
extern int cpp_handle_options PARAMS ((cpp_reader *, int, char **));
extern int cpp_handle_option PARAMS ((cpp_reader *, int, char **));
extern void cpp_reader_init PARAMS ((cpp_reader *));
diff --git a/gcc/cppmain.c b/gcc/cppmain.c
index 6196c46778a..9dc431e12d5 100644
--- a/gcc/cppmain.c
+++ b/gcc/cppmain.c
@@ -71,6 +71,7 @@ main (argc, argv)
(void) bindtextdomain (PACKAGE, localedir);
(void) textdomain (PACKAGE);
+ cpp_init ();
cpp_reader_init (pfile);
argi += cpp_handle_options (pfile, argc - argi , argv + argi);