This consolidates build_common_tree_nodes and build_common_tree_nodes_2
at a single place in c_common_nodes_and_builtins for C family languages.
It is a preparation for merging those two functions and moving them
to be called from toplev.c as they are middle-end inits.

Bootstrapped and tested on x86_64-unknown-linux-gnu for all C
family languages and Java.

Ok for trunk?

Thanks,
Richard.

2011-07-05  Richard Guenther  <rguent...@suse.de>

        c-family/
        * c-common.c (c_common_nodes_and_builtins): Build all common
        tree nodes first.

        * c-decl.c (c_init_decl_processing): Defer building common
        tree nodes to c_common_nodes_and_builtins.

        cp/
        * decl.c (cxx_init_decl_processing): Defer building common
        tree nodes to c_common_nodes_and_builtins.

Index: gcc/c-family/c-common.c
===================================================================
--- gcc/c-family/c-common.c     (revision 175840)
+++ gcc/c-family/c-common.c     (working copy)
@@ -4576,6 +4576,9 @@ c_common_nodes_and_builtins (void)
   tree va_list_ref_type_node;
   tree va_list_arg_type_node;
 
+  build_common_tree_nodes (flag_signed_char);
+  build_common_tree_nodes_2 (flag_short_double);
+
   /* Define `int' and `char' first so that dbx will output them first.  */
   record_builtin_type (RID_INT, NULL, integer_type_node);
   record_builtin_type (RID_CHAR, "char", char_type_node);
@@ -4675,8 +4678,6 @@ c_common_nodes_and_builtins (void)
   pid_type_node =
     TREE_TYPE (identifier_global_value (get_identifier (PID_TYPE)));
 
-  build_common_tree_nodes_2 (flag_short_double);
-
   record_builtin_type (RID_FLOAT, NULL, float_type_node);
   record_builtin_type (RID_DOUBLE, NULL, double_type_node);
   record_builtin_type (RID_MAX, "long double", long_double_type_node);
Index: gcc/c-decl.c
===================================================================
--- gcc/c-decl.c        (revision 175840)
+++ gcc/c-decl.c        (working copy)
@@ -3478,8 +3478,6 @@ c_init_decl_processing (void)
      using preprocessed headers.  */
   input_location = BUILTINS_LOCATION;
 
-  build_common_tree_nodes (flag_signed_char);
-
   c_common_nodes_and_builtins ();
 
   /* In C, comparisons and TRUTH_* expressions have type int.  */
Index: gcc/cp/decl.c
===================================================================
--- gcc/cp/decl.c       (revision 175840)
+++ gcc/cp/decl.c       (working copy)
@@ -3518,8 +3518,6 @@ cxx_init_decl_processing (void)
   tree void_ftype;
   tree void_ftype_ptr;
 
-  build_common_tree_nodes (flag_signed_char);
-
   /* Create all the identifiers we need.  */
   initialize_predefined_identifiers ();
 
@@ -3536,8 +3534,6 @@ cxx_init_decl_processing (void)
   TREE_PUBLIC (global_namespace) = 1;
   begin_scope (sk_namespace, global_namespace);
 
-  current_lang_name = NULL_TREE;
-
   if (flag_visibility_ms_compat)
     default_visibility = VISIBILITY_HIDDEN;
 

Reply via email to