aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/verify.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>2000-09-12 22:31:00 +0000
committerTom Tromey <tromey@gcc.gnu.org>2000-09-12 22:31:00 +0000
commit86e4b1e4fad12aa60440cca590a75829ed3bb0d4 (patch)
tree0ccf531ed65f15f9d846b6711665f7675fd947d2 /gcc/java/verify.c
parentd19cbcb5e3dd83e2628d25d2cd23892a4cac83b0 (diff)
downloadgcc-86e4b1e4fad12aa60440cca590a75829ed3bb0d4.zip
gcc-86e4b1e4fad12aa60440cca590a75829ed3bb0d4.tar.gz
gcc-86e4b1e4fad12aa60440cca590a75829ed3bb0d4.tar.bz2
expr.c (pop_type_0): Return `Object' if trying to merge two interface types.
* expr.c (pop_type_0): Return `Object' if trying to merge two interface types. * verify.c (merge_types): Don't return `TYPE_UNKNOWN' for interface types; `Object' is always a valid supertype. From-SVN: r36378
Diffstat (limited to 'gcc/java/verify.c')
-rw-r--r--gcc/java/verify.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/java/verify.c b/gcc/java/verify.c
index fcaf7f3..5bc82cf 100644
--- a/gcc/java/verify.c
+++ b/gcc/java/verify.c
@@ -173,6 +173,8 @@ merge_types (type1, type2)
if (CLASS_INTERFACE (TYPE_NAME (tt1)))
{
+ /* FIXME: should see if two interfaces have a common
+ superinterface. */
if (CLASS_INTERFACE (TYPE_NAME (tt2)))
{
/* This is a kludge, but matches what Sun's verifier does.
@@ -185,7 +187,7 @@ merge_types (type1, type2)
if (can_widen_reference_to (tt2, tt1))
return type1;
else
- return TYPE_UNKNOWN;
+ return object_ptr_type_node;
}
}
else if (CLASS_INTERFACE (TYPE_NAME (tt2)))
@@ -193,7 +195,7 @@ merge_types (type1, type2)
if (can_widen_reference_to (tt1, tt2))
return type2;
else
- return TYPE_UNKNOWN;
+ return object_ptr_type_node;
}
type1 = tt1;