This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Merge build_common_tree_nodes and build_common_tree_nodes_2


This merges the two common tree node creation functions now that all
callers are sufficiently close to make frontend pieces obvious.

Pending bootstrap and regtest on x86_64-unknown-linux-gnu, I will commit
this tomorrow unless somebody objects by then.

Richard.

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

	* tree.c (build_common_tree_nodes_2): Merge with
	build_common_tree_nodes.
	* tree.h (build_common_tree_nodes): Adjust prototype.
	(build_common_tree_nodes_2): Remove.
	* doc/tm.texi (lang_hooks.builtin_function): Adjust.

	c-family/
	* c-common.c (c_common_nodes_and_builtins):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

	fortran/
	* f95-lang.c (gfc_init_decl_processing):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

	go/
	* go-lang.c (go_langhook_init):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

	java/
	* decl.c (java_init_decl_processing):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

	lto/
	* lto-lang.c (lto_init):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

	ada/
	* gcc-interface/misc.c (gnat_init):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

Index: gcc/tree.c
===================================================================
--- gcc/tree.c	(revision 175855)
+++ gcc/tree.c	(working copy)
@@ -9167,10 +9167,12 @@ make_or_reuse_accum_type (unsigned size,
 }
 
 /* Create nodes for all integer types (and error_mark_node) using the sizes
-   of C datatypes.  */
+   of C datatypes.  SIGNED_CHAR specifies whether char is signed,
+   SHORT_DOUBLE specifies whether double should be of the same precision
+   as float.  */
 
 void
-build_common_tree_nodes (bool signed_char)
+build_common_tree_nodes (bool signed_char, bool short_double)
 {
   error_mark_node = make_node (ERROR_MARK);
   TREE_TYPE (error_mark_node) = error_mark_node;
@@ -9247,14 +9249,7 @@ build_common_tree_nodes (bool signed_cha
   access_public_node = get_identifier ("public");
   access_protected_node = get_identifier ("protected");
   access_private_node = get_identifier ("private");
-}
-
-/* Call this function after calling build_common_tree_nodes.
-   It will create several other common tree nodes.  */
 
-void
-build_common_tree_nodes_2 (int short_double)
-{
   /* Define these next since types below may used them.  */
   integer_zero_node = build_int_cst (integer_type_node, 0);
   integer_one_node = build_int_cst (integer_type_node, 1);
Index: gcc/tree.h
===================================================================
--- gcc/tree.h	(revision 175855)
+++ gcc/tree.h	(working copy)
@@ -5396,8 +5396,7 @@ extern int real_onep (const_tree);
 extern int real_twop (const_tree);
 extern int real_minus_onep (const_tree);
 extern void init_ttree (void);
-extern void build_common_tree_nodes (bool);
-extern void build_common_tree_nodes_2 (int);
+extern void build_common_tree_nodes (bool, bool);
 extern void build_common_builtin_nodes (void);
 extern tree build_nonstandard_integer_type (unsigned HOST_WIDE_INT, int);
 extern tree build_range_type (tree, tree, tree);
Index: gcc/c-family/c-common.c
===================================================================
--- gcc/c-family/c-common.c	(revision 175856)
+++ gcc/c-family/c-common.c	(working copy)
@@ -4576,8 +4576,7 @@ 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);
+  build_common_tree_nodes (flag_signed_char, flag_short_double);
 
   /* Define `int' and `char' first so that dbx will output them first.  */
   record_builtin_type (RID_INT, NULL, integer_type_node);
Index: gcc/fortran/f95-lang.c
===================================================================
--- gcc/fortran/f95-lang.c	(revision 175855)
+++ gcc/fortran/f95-lang.c	(working copy)
@@ -588,9 +588,8 @@ gfc_init_decl_processing (void)
   /* Build common tree nodes. char_type_node is unsigned because we
      only use it for actual characters, not for INTEGER(1). Also, we
      want double_type_node to actually have double precision.  */
-  build_common_tree_nodes (false);
+  build_common_tree_nodes (false, false);
 
-  build_common_tree_nodes_2 (0);
   void_list_node = build_tree_list (NULL_TREE, void_type_node);
 
   /* Set up F95 type nodes.  */
Index: gcc/go/go-lang.c
===================================================================
--- gcc/go/go-lang.c	(revision 175855)
+++ gcc/go/go-lang.c	(working copy)
@@ -86,9 +86,7 @@ struct GTY(()) language_function
 static bool
 go_langhook_init (void)
 {
-  build_common_tree_nodes (false);
-
-  build_common_tree_nodes_2 (0);
+  build_common_tree_nodes (false, false);
 
   /* We must create the gogo IR after calling build_common_tree_nodes
      (because Gogo::define_builtin_function_trees refers indirectly
Index: gcc/java/decl.c
===================================================================
--- gcc/java/decl.c	(revision 175855)
+++ gcc/java/decl.c	(working copy)
@@ -567,10 +567,7 @@ java_init_decl_processing (void)
   global_binding_level = current_binding_level;
 
   /* Build common tree nodes, Java has an unsigned char.  */
-  build_common_tree_nodes (false);
-
-  /* Build the rest of the common tree nodes.  */
-  build_common_tree_nodes_2 (0);
+  build_common_tree_nodes (false, false);
 
   /* ???  Now we continue and override some of the built types again
      with Java specific types.  As the above generated types are
Index: gcc/lto/lto-lang.c
===================================================================
--- gcc/lto/lto-lang.c	(revision 175855)
+++ gcc/lto/lto-lang.c	(working copy)
@@ -1085,7 +1085,7 @@ lto_init (void)
   linemap_add (line_table, LC_RENAME, 0, NULL, 0);
 
   /* Create the basic integer types.  */
-  build_common_tree_nodes (flag_signed_char);
+  build_common_tree_nodes (flag_signed_char, /*short_double=*/false);
 
   /* The global tree for the main identifier is filled in by
      language-specific front-end initialization that is not run in the
@@ -1102,8 +1102,6 @@ lto_init (void)
 
   ptrdiff_type_node = integer_type_node;
 
-  /* Create other basic types.  */
-  build_common_tree_nodes_2 (/*short_double=*/false);
   lto_build_c_type_nodes ();
   gcc_assert (va_list_type_node);
 
Index: gcc/ada/gcc-interface/misc.c
===================================================================
--- gcc/ada/gcc-interface/misc.c	(revision 175855)
+++ gcc/ada/gcc-interface/misc.c	(working copy)
@@ -307,7 +307,7 @@ gnat_init (void)
   /* Do little here, most of the standard declarations are set up after the
      front-end has been run.  Use the same `char' as C, this doesn't really
      matter since we'll use the explicit `unsigned char' for Character.  */
-  build_common_tree_nodes (flag_signed_char);
+  build_common_tree_nodes (flag_signed_char, false);
 
   /* In Ada, we use an unsigned 8-bit type for the default boolean type.  */
   boolean_type_node = make_unsigned_type (8);
@@ -316,7 +316,6 @@ gnat_init (void)
 			 build_int_cst (boolean_type_node, 1));
   SET_TYPE_RM_SIZE (boolean_type_node, bitsize_int (1));
 
-  build_common_tree_nodes_2 (0);
   sbitsize_one_node = sbitsize_int (1);
   sbitsize_unit_node = sbitsize_int (BITS_PER_UNIT);
   boolean_true_node = TYPE_MAX_VALUE (boolean_type_node);
Index: gcc/doc/tm.texi
===================================================================
--- gcc/doc/tm.texi	(revision 175855)
+++ gcc/doc/tm.texi	(working copy)
@@ -10876,7 +10876,7 @@ instructions or prefetch instructions).
 To create a built-in function, call the function
 @code{lang_hooks.builtin_function}
 which is defined by the language front end.  You can use any type nodes set
-up by @code{build_common_tree_nodes} and @code{build_common_tree_nodes_2};
+up by @code{build_common_tree_nodes};
 only language front ends that use those two functions will call
 @samp{TARGET_INIT_BUILTINS}.
 @end deftypefn


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]