summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-10-25 12:03:07 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-10-25 12:03:07 +0000
commit22dfb60e841d85c66ebc7a3de8e62de6baaa0ebb (patch)
treeb6edc79d01d6e34b0673173ec222516e70f7abc4 /gcc
parent8af9d17f0208b6d654176bf2606df39bed4e25f9 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/tree.c14
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))
{