aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppinit.c
diff options
context:
space:
mode:
authorNeil Booth <neilb@earthling.net>2000-08-17 17:52:48 +0000
committerNeil Booth <neil@gcc.gnu.org>2000-08-17 17:52:48 +0000
commitc154ba66ef8560de3bee1ec17242cdaa5fe9e53c (patch)
tree145baebe1eb6775512b8143d7c1d5adf52be0c8a /gcc/cppinit.c
parent9c82ac6bea8fe68b1ab367d6bcb99040c795227f (diff)
downloadgcc-c154ba66ef8560de3bee1ec17242cdaa5fe9e53c.zip
gcc-c154ba66ef8560de3bee1ec17242cdaa5fe9e53c.tar.gz
gcc-c154ba66ef8560de3bee1ec17242cdaa5fe9e53c.tar.bz2
cppinit.c (sort_options): Remove, put functionality in cpp_init.
* 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. From-SVN: r35763
Diffstat (limited to 'gcc/cppinit.c')
-rw-r--r--gcc/cppinit.c39
1 files changed, 14 insertions, 25 deletions
diff --git a/gcc/cppinit.c b/gcc/cppinit.c
index c845028..bb37890 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