summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-12 22:31:00 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-12 22:31:00 +0000
commitf53d085790ec7ea6c1a80bc24e9790833cd509ed (patch)
tree0ccf531ed65f15f9d846b6711665f7675fd947d2
parentf1afe16096674811b2dd3a962b0e26cc7137433e (diff)
downloadppe42-gcc-f53d085790ec7ea6c1a80bc24e9790833cd509ed.tar.gz
ppe42-gcc-f53d085790ec7ea6c1a80bc24e9790833cd509ed.zip
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36378 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/java/ChangeLog7
-rw-r--r--gcc/java/expr.c5
-rw-r--r--gcc/java/verify.c6
3 files changed, 13 insertions, 5 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 7b13f9a0485..68a1a131f3d 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,5 +1,12 @@
2000-09-12 Tom Tromey <tromey@cygnus.com>
+ * 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.
+
+2000-09-12 Tom Tromey <tromey@cygnus.com>
+
Fix for PR gcj/33:
* jv-scan.c (help): Document --encoding.
(options): Added `encoding' entry.
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index ebba1aca7fa..fbc08c69fa2 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -320,9 +320,8 @@ pop_type_0 (type)
/* This is a kludge, but matches what Sun's verifier does.
It can be tricked, but is safe as long as type errors
(i.e. interface method calls) are caught at run-time. */
- else if (CLASS_INTERFACE (TYPE_NAME (TREE_TYPE (type)))
- && t == object_ptr_type_node)
- return t;
+ /* FIXME: this is worse than a kludge, probably. */
+ return object_ptr_type_node;
}
return NULL_TREE;
}
diff --git a/gcc/java/verify.c b/gcc/java/verify.c
index fcaf7f37af5..5bc82cfe381 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;
OpenPOWER on IntegriCloud