This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Patch: make `minus_one_node' globally available
- To: rth at redhat dot com
- Subject: Re: Patch: make `minus_one_node' globally available
- From: "Kaveh R. Ghazi" <ghazi at caip dot rutgers dot edu>
- Date: Sun, 28 Jan 2001 21:49:39 -0500 (EST)
- Cc: gcc-patches at gcc dot gnu dot org
> From: Richard Henderson <rth@redhat.com>
>
> On Sat, Jan 27, 2001 at 08:13:32PM -0500, Kaveh R. Ghazi wrote:
> > #define integer_zero_node global_trees[TI_INTEGER_ZERO]
> > #define integer_one_node global_trees[TI_INTEGER_ONE]
> > +#define minus_one_node global_trees[TI_MINUS_ONE]
>
> One of these is not like the other. I'd prefer this be
> renamed integer_minus_one_node.
>
> Otherwise ok.
> r~
Ok.
That name was already used in the CHILL dir (luckily for the same
purpose.) So I had to remove the init bits there and rename the
existing uses in the cp dir. Here's the modified patch that I
installed. Retested on solaris2.7.
2001-01-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* stmt.c (estimate_case_costs): Use integer_minus_one_node.
* tree.c (build_common_tree_nodes_2): Set integer_minus_one_node.
* tree.h (tree_index): Add new element TI_INTEGER_MINUS_ONE.
(integer_minus_one_node): Define.
ch:
* ch-tree.h (integer_minus_one_node): Moved to top level gcc
directory.
* decl.c (integer_minus_one_node): Likewise.
(init_decl_processing): Don't set integer_minus_one_node.
cp:
* cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
(minus_one_node): Moved to top level gcc directory. Renamed
to integer_minus_one_node.
* init.c (init_init_processing): Don't set minus_one_node.
(build_vec_init): Use integer_minus_one_node.
* rtti.c (get_tinfo_decl_dynamic): Likewise.
diff -rup orig/egcs-CVS20010127/gcc/ch/ch-tree.h egcs-CVS20010127/gcc/ch/ch-tree.h
--- orig/egcs-CVS20010127/gcc/ch/ch-tree.h Tue May 9 17:13:12 2000
+++ egcs-CVS20010127/gcc/ch/ch-tree.h Sun Jan 28 09:10:20 2001
@@ -906,7 +906,6 @@ extern void write_spec_module
/* in ch/lang.c */
extern tree string_index_type_dummy;
-extern tree integer_minus_one_node;
extern int flag_old_strings;
extern void GNU_xref_begin PARAMS ((void));
extern void GNU_xref_end PARAMS ((void));
diff -rup orig/egcs-CVS20010127/gcc/ch/decl.c egcs-CVS20010127/gcc/ch/decl.c
--- orig/egcs-CVS20010127/gcc/ch/decl.c Sat Jan 27 20:41:56 2001
+++ egcs-CVS20010127/gcc/ch/decl.c Sun Jan 28 09:11:01 2001
@@ -299,9 +299,6 @@ tree default_function_type;
const char **boolean_code_name;
-/* A node for the integer constant -1. */
-tree integer_minus_one_node;
-
/* Nodes for boolean constants TRUE and FALSE. */
tree boolean_true_node, boolean_false_node;
@@ -3387,9 +3384,6 @@ init_decl_processing ()
float_type_node));
pushdecl (build_decl (TYPE_DECL, ridpointers[(int) RID_DOUBLE],
double_type_node));
-
- integer_minus_one_node = build_int_2 (-1, -1);
- TREE_TYPE (integer_minus_one_node) = integer_type_node;
build_common_tree_nodes_2 (flag_short_double);
diff -rup orig/egcs-CVS20010127/gcc/cp/cp-tree.h egcs-CVS20010127/gcc/cp/cp-tree.h
--- orig/egcs-CVS20010127/gcc/cp/cp-tree.h Mon Jan 22 16:23:44 2001
+++ egcs-CVS20010127/gcc/cp/cp-tree.h Sun Jan 28 09:06:28 2001
@@ -635,7 +635,6 @@ enum cp_tree_index
CPTI_EMPTY_EXCEPT_SPEC,
CPTI_NULL,
CPTI_JCLASS,
- CPTI_MINUS_ONE,
CPTI_TERMINATE,
CPTI_ATEXIT,
CPTI_DSO_HANDLE,
@@ -767,9 +766,6 @@ extern tree cp_global_trees[CPTI_MAX];
/* If non-NULL, a POINTER_TYPE equivalent to (java::lang::Class*). */
#define jclass_node cp_global_trees[CPTI_JCLASS]
-
-/* A node for `(int) -1'. */
-#define minus_one_node cp_global_trees[CPTI_MINUS_ONE]
/* The declaration for `std::terminate'. */
#define terminate_node cp_global_trees[CPTI_TERMINATE]
diff -rup orig/egcs-CVS20010127/gcc/cp/init.c egcs-CVS20010127/gcc/cp/init.c
--- orig/egcs-CVS20010127/gcc/cp/init.c Fri Jan 19 16:24:29 2001
+++ egcs-CVS20010127/gcc/cp/init.c Sun Jan 28 09:09:03 2001
@@ -65,8 +65,6 @@ void init_init_processing ()
{
tree fields[1];
- minus_one_node = build_int_2 (-1, -1);
-
/* Define the structure that holds header information for
arrays allocated via operator new. */
BI_header_type = make_aggr_type (RECORD_TYPE);
@@ -2989,7 +2987,7 @@ build_vec_init (base, init, from_array)
if_stmt = begin_if_stmt ();
finish_if_stmt_cond (build (NE_EXPR, boolean_type_node,
- iterator, minus_one_node),
+ iterator, integer_minus_one_node),
if_stmt);
/* Otherwise, loop through the elements. */
@@ -3063,7 +3061,7 @@ build_vec_init (base, init, from_array)
finish_do_body (do_stmt);
finish_do_stmt (build (NE_EXPR, boolean_type_node,
build_unary_op (PREDECREMENT_EXPR, iterator, 0),
- minus_one_node),
+ integer_minus_one_node),
do_stmt);
finish_then_clause (if_stmt);
diff -rup orig/egcs-CVS20010127/gcc/cp/rtti.c egcs-CVS20010127/gcc/cp/rtti.c
--- orig/egcs-CVS20010127/gcc/cp/rtti.c Sat Jan 27 20:42:04 2001
+++ egcs-CVS20010127/gcc/cp/rtti.c Sun Jan 28 09:09:12 2001
@@ -265,7 +265,7 @@ get_tinfo_decl_dynamic (exp)
/* The RTTI information is always in the vtable, but it's at
different indices depending on the ABI. */
if (new_abi_rtti_p ())
- index = minus_one_node;
+ index = integer_minus_one_node;
else if (flag_vtable_thunks)
index = integer_one_node;
else
diff -rup orig/egcs-CVS20010127/gcc/stmt.c egcs-CVS20010127/gcc/stmt.c
--- orig/egcs-CVS20010127/gcc/stmt.c Fri Jan 26 21:15:40 2001
+++ egcs-CVS20010127/gcc/stmt.c Sun Jan 28 09:07:35 2001
@@ -5764,7 +5764,7 @@ static int
estimate_case_costs (node)
case_node_ptr node;
{
- tree min_ascii = build_int_2 (-1, -1);
+ tree min_ascii = integer_minus_one_node;
tree max_ascii = convert (TREE_TYPE (node->high), build_int_2 (127, 0));
case_node_ptr n;
int i;
diff -rup orig/egcs-CVS20010127/gcc/tree.c egcs-CVS20010127/gcc/tree.c
--- orig/egcs-CVS20010127/gcc/tree.c Sat Jan 27 20:42:18 2001
+++ egcs-CVS20010127/gcc/tree.c Sun Jan 28 09:07:52 2001
@@ -4786,6 +4786,7 @@ build_common_tree_nodes_2 (short_double)
/* Define these next since types below may used them. */
integer_zero_node = build_int_2 (0, 0);
integer_one_node = build_int_2 (1, 0);
+ integer_minus_one_node = build_int_2 (-1, -1);
size_zero_node = size_int (0);
size_one_node = size_int (1);
diff -rup orig/egcs-CVS20010127/gcc/tree.h egcs-CVS20010127/gcc/tree.h
--- orig/egcs-CVS20010127/gcc/tree.h Wed Jan 10 22:17:43 2001
+++ egcs-CVS20010127/gcc/tree.h Sun Jan 28 09:08:18 2001
@@ -1715,6 +1715,7 @@ enum tree_index
TI_INTEGER_ZERO,
TI_INTEGER_ONE,
+ TI_INTEGER_MINUS_ONE,
TI_NULL_POINTER,
TI_SIZE_ZERO,
@@ -1770,6 +1771,7 @@ extern tree global_trees[TI_MAX];
#define integer_zero_node global_trees[TI_INTEGER_ZERO]
#define integer_one_node global_trees[TI_INTEGER_ONE]
+#define integer_minus_one_node global_trees[TI_INTEGER_MINUS_ONE]
#define size_zero_node global_trees[TI_SIZE_ZERO]
#define size_one_node global_trees[TI_SIZE_ONE]
#define bitsize_zero_node global_trees[TI_BITSIZE_ZERO]