diff options
author | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-28 17:40:56 +0000 |
---|---|---|
committer | aph <aph@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-28 17:40:56 +0000 |
commit | ddfa1692af4c9c754a9b68edd4113cc0d3a5d689 (patch) | |
tree | d4a6be607900d43739a5e693d31177ebd42ada44 /gcc | |
parent | 43b3dabf44ee42b616059be92c4bddd136af6701 (diff) | |
download | gcc-ddfa1692af4c9c754a9b68edd4113cc0d3a5d689.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88239 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/java/jcf-parse.c | 13 |
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index a9438f5ae2c..eaf591e58b6 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 bc733e84f53..e1a4bab88c9 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) |