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]

[PATCH] Java: fix for the Java PR #107


This fixes the Java PR #107:

  http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00171.html

I'm checking this in.

./A

1999-11-28 Anthony Green <green@cygnus.com>

	* decl.c (find_local_variable): Reuse single slot decls when
	appropriate.

Index: decl.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/java/decl.c,v
retrieving revision 1.53
diff -u -p -r1.53 decl.c
--- decl.c	2000/03/07 11:41:22	1.53
+++ decl.c	2000/03/08 02:38:40
@@ -136,9 +136,7 @@ push_jvm_slot (index, decl)
 
 /* Find a VAR_DECL (or PARM_DECL) at local index INDEX that has type TYPE,
    that is valid at PC (or -1 if any pc).
-   If there is no existing matching decl, allocate one.
-   If we find a decl with matching modes but different types,
-   we re-use the rtl, but create a new decl. */
+   If there is no existing matching decl, allocate one.  */
 
 tree
 find_local_variable (index, type, pc)
@@ -148,6 +146,7 @@ find_local_variable (index, type, pc)
 {
   tree decl = TREE_VEC_ELT (decl_map, index);
   tree best = NULL_TREE;
+
   while (decl != NULL_TREE)
     {
       int in_range;
@@ -156,6 +155,10 @@ find_local_variable (index, type, pc)
 	    && pc < DECL_LOCAL_END_PC (decl));
 
       if ((TREE_TYPE (decl) == type
+	   || (TREE_CODE (TREE_TYPE (decl)) == TREE_CODE (type)
+	       && TYPE_PRECISION (TREE_TYPE (decl)) <= 32
+	       && TYPE_PRECISION (type) <= 32
+	       && TREE_CODE (type) != POINTER_TYPE)
 	   || (TREE_CODE (TREE_TYPE (decl)) == POINTER_TYPE
 	       && type == ptr_type_node))
 	   && in_range)

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