diff options
author | Richard Guenther <rguenther@suse.de> | 2009-10-25 12:03:07 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-10-25 12:03:07 +0000 |
commit | 22dfb60e841d85c66ebc7a3de8e62de6baaa0ebb (patch) | |
tree | b6edc79d01d6e34b0673173ec222516e70f7abc4 /gcc | |
parent | 8af9d17f0208b6d654176bf2606df39bed4e25f9 (diff) | |
download | gcc-22dfb60e841d85c66ebc7a3de8e62de6baaa0ebb.tar.gz |
re PR middle-end/41814 (ICE in jc1 during bootstrap of gcj)
2009-10-25 Richard Guenther <rguenther@suse.de>
PR middle-end/41814
* tree.c (find_decls_types_r): Deal with Java overloading
BINFO_VIRTUALS for its own purpose.
From-SVN: r153539
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree.c | 14 |
2 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bda1da3d09b..82e7b7c1850 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-10-25 Richard Guenther <rguenther@suse.de> + + PR middle-end/41814 + * tree.c (find_decls_types_r): Deal with Java overloading + BINFO_VIRTUALS for its own purpose. + 2009-10-24 Adam Nemet <anemet@caviumnetworks.com> * config/mips/predicates.md (hilo_operand): New predicate. diff --git a/gcc/tree.c b/gcc/tree.c index 5da346c52f8..264e3cef04a 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4648,11 +4648,15 @@ find_decls_types_r (tree *tp, int *ws, void *data) i, tem); ++i) fld_worklist_push (TREE_TYPE (tem), fld); tem = BINFO_VIRTUALS (TYPE_BINFO (t)); - while (tem) - { - fld_worklist_push (TREE_VALUE (tem), fld); - tem = TREE_CHAIN (tem); - } + if (tem + /* The Java FE overloads BINFO_VIRTUALS for its own purpose. */ + && TREE_CODE (tem) == TREE_LIST) + do + { + fld_worklist_push (TREE_VALUE (tem), fld); + tem = TREE_CHAIN (tem); + } + while (tem); } if (RECORD_OR_UNION_TYPE_P (t)) { |