OSDN Git Service

* cppinit.c (sort_options): Remove, put functionality in
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Aug 2000 17:52:48 +0000 (17:52 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Aug 2000 17:52:48 +0000 (17:52 +0000)
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

gcc/ChangeLog
gcc/cppinit.c
gcc/cpplib.h
gcc/cppmain.c

index ed0c3c0..df0759c 100644 (file)
@@ -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.
index c845028..bb37890 100644 (file)
@@ -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
index 0318f23..1163c2e 100644 (file)
@@ -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 *));
index 6196c46..9dc431e 100644 (file)
@@ -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);