This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[BC] Patch: FYI: fix up types in array accesses
- From: Tom Tromey <tromey at redhat dot com>
- To: Gcc Patch List <gcc-patches at gcc dot gnu dot org>
- Cc: Java Patch List <java-patches at gcc dot gnu dot org>
- Date: 03 Nov 2004 13:41:35 -0700
- Subject: [BC] Patch: FYI: fix up types in array accesses
- Reply-to: tromey at redhat dot com
I'm checking this in on the BC branch.
Andrew pointed out that a jar file from jonas caused a compiler crash
in aastore handling. We weren't properly updating all the
type-related variables.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* expr.c (expand_java_arrayload): Set lhs_type_node.
(expand_java_arraystore): Set rhs_type_node.
Index: expr.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/expr.c,v
retrieving revision 1.185.2.18
diff -u -r1.185.2.18 expr.c
--- expr.c 2 Nov 2004 23:52:35 -0000 1.185.2.18
+++ expr.c 3 Nov 2004 20:32:46 -0000
@@ -1220,7 +1220,10 @@
/* If we're processing an `aaload' we might as well just pick
`Object'. */
if (TREE_CODE (rhs_type_node) == POINTER_TYPE)
- array_type = build_java_array_type (object_ptr_type_node, -1);
+ {
+ array_type = build_java_array_type (object_ptr_type_node, -1);
+ rhs_type_node = object_ptr_type_node;
+ }
else
array_type = build_java_array_type (rhs_type_node, -1);
}
@@ -1267,7 +1270,10 @@
/* If we're processing an `aaload' we might as well just pick
`Object'. */
if (TREE_CODE (lhs_type_node) == POINTER_TYPE)
- array_type = build_java_array_type (object_ptr_type_node, -1);
+ {
+ array_type = build_java_array_type (object_ptr_type_node, -1);
+ lhs_type_node = object_ptr_type_node;
+ }
else
array_type = build_java_array_type (lhs_type_node, -1);
}
@@ -1282,7 +1288,7 @@
if (TREE_TYPE (array_node) == ptr_type_node)
/* The only way we could get a node of type ptr_type_node at this
- point is `aconst_null; arraylength' or something equivalent, so
+ point is `aconst_null; arraylength' or something equivalent, so
unconditionally throw NullPointerException. */
load_node = build3 (CALL_EXPR, lhs_type_node,
build_address_of (soft_nullpointer_node),