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/tree.c | |
parent | 8af9d17f0208b6d654176bf2606df39bed4e25f9 (diff) | |
download | gcc-22dfb60e841d85c66ebc7a3de8e62de6baaa0ebb.zip gcc-22dfb60e841d85c66ebc7a3de8e62de6baaa0ebb.tar.gz gcc-22dfb60e841d85c66ebc7a3de8e62de6baaa0ebb.tar.bz2 |
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/tree.c')
-rw-r--r-- | gcc/tree.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -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)) { |