summaryrefslogtreecommitdiffstats
path: root/gcc/java/expr.c
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-09 16:04:11 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-09 16:04:11 +0000
commita0eba912f6b10d611b27cf6a9e488a1e406f6d67 (patch)
tree6fd2fb5055153c98b6d6dc6750a93ed970f7081a /gcc/java/expr.c
parente44ff172548f82dd75838e07272406d60f19678c (diff)
downloadppe42-gcc-a0eba912f6b10d611b27cf6a9e488a1e406f6d67.tar.gz
ppe42-gcc-a0eba912f6b10d611b27cf6a9e488a1e406f6d67.zip
2005-09-09 Andrew Haley <aph@redhat.com>
PR libgcj/23182 * expr.c (pop_type_0): If the expected type is object or ptr (i.e. void*), return the type of the object we just popped from the stack. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104098 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java/expr.c')
-rw-r--r--gcc/java/expr.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index d65a6ff563c..8aa49ada40f 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -350,6 +350,11 @@ pop_type_0 (tree type, char **messagep)
return t;
if (TREE_CODE (type) == POINTER_TYPE && TREE_CODE (t) == POINTER_TYPE)
{
+ /* If the expected type we've been passed is object or ptr
+ (i.e. void*), the caller needs to know the real type. */
+ if (type == ptr_type_node || type == object_ptr_type_node)
+ return t;
+
/* Since the verifier has already run, we know that any
types we see will be compatible. In BC mode, this fact
may be checked at runtime, but if that is so then we can
OpenPOWER on IntegriCloud