aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2004-09-28 17:40:56 +0000
committerAndrew Haley <aph@gcc.gnu.org>2004-09-28 17:40:56 +0000
commit1679340f35849566c6a0437fbbfd37fbd0c6b6c2 (patch)
treed4a6be607900d43739a5e693d31177ebd42ada44 /gcc/java
parentcc15e98f650fb1d16c8853ddf0ce586661974604 (diff)
downloadgcc-1679340f35849566c6a0437fbbfd37fbd0c6b6c2.zip
gcc-1679340f35849566c6a0437fbbfd37fbd0c6b6c2.tar.gz
gcc-1679340f35849566c6a0437fbbfd37fbd0c6b6c2.tar.bz2
re PR java/17586 (kawa build fails with ICE)
2004-09-28 Andrew Haley <aph@redhat.com> PR java/17586 * jcf-parse.c (load_class): Don't try to read a class that we've already read. From-SVN: r88239
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/jcf-parse.c13
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index a9438f5..eaf591e 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,5 +1,11 @@
2004-09-28 Andrew Haley <aph@redhat.com>
+ PR java/17586
+ * jcf-parse.c (load_class): Don't try to read a class that we've
+ already read.
+
+2004-09-28 Andrew Haley <aph@redhat.com>
+
* jcf-parse.c (load_class): Back out previous broken patch.
2004-09-28 Andrew Haley <aph@redhat.com>
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index bc733e8..e1a4bab 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -567,6 +567,7 @@ load_class (tree class_or_name, int verbose)
{
tree name, saved;
int class_loaded;
+ tree class_decl;
/* class_or_name can be the name of the class we want to load */
if (TREE_CODE (class_or_name) == IDENTIFIER_NODE)
@@ -577,12 +578,12 @@ load_class (tree class_or_name, int verbose)
name = TYPE_NAME (TREE_PURPOSE (class_or_name));
/* Or it's a type in the making */
else
- {
- /* If the class is from source code, then it must already be loaded. */
- if (CLASS_FROM_SOURCE_P (class_or_name))
- return;
- name = DECL_NAME (TYPE_NAME (class_or_name));
- }
+ name = DECL_NAME (TYPE_NAME (class_or_name));
+
+ /* If the class is from source code, then it must already be loaded. */
+ class_decl = IDENTIFIER_CLASS_VALUE (name);
+ if (class_decl && CLASS_FROM_SOURCE_P (TREE_TYPE (class_decl)))
+ return;
saved = name;
while (1)