expr.c (pop_type_0): New function.
authorPer Bothner <bothner@gcc.gnu.org>
Tue, 6 Apr 1999 14:28:37 +0000 (07:28 -0700)
committerPer Bothner <bothner@gcc.gnu.org>
Tue, 6 Apr 1999 14:28:37 +0000 (07:28 -0700)

* expr.c (pop_type_0):  New function.
(pop_type):  Use pop_type_0.
* java-tree.h (pop_type_0):  New declaration.
* verify.c (verify_jvm_instructions):  Check return instructions.

From-SVN: r26217

gcc/java/expr.c
gcc/java/java-tree.h

index 268861d..8a7d086 100644 (file)
@@ -273,8 +273,12 @@ push_value (value)
     }
 }
 
+/* Pop a type from the type stack.
+   TYPE is the expected type.   Return the actual type, which must be
+   convertible to TYPE, otherwise NULL_TREE is returned. */
+
 tree
-pop_type (type)
+pop_type_0 (type)
      tree type;
 {
   int n_words;
@@ -310,8 +314,22 @@ pop_type (type)
               && t == object_ptr_type_node)
        return t;
     }
+  return NULL_TREE;
+}
+
+/* Pop a type from the type stack.
+   TYPE is the expected type.  Return the actual type, which must be
+   convertible to TYPE, otherwise call error. */
+
+tree
+pop_type (type)
+     tree type;
+{
+  tree t = pop_type_0 (type);
+  if (t != NULL_TREE)
+    return t;
   error ("unexpected type on stack");
-  return t;
+  return type;
 }
 
 /* Return 1f if SOURCE_TYPE can be safely widened to TARGET_TYPE.
index 9a1e964..3158621 100644 (file)
@@ -518,6 +518,7 @@ extern tree build_java_array_type PROTO ((tree, HOST_WIDE_INT));
 extern int is_compiled_class PROTO ((tree));
 extern tree mangled_classname PROTO ((const char*, tree));
 extern tree lookup_label PROTO ((int));
+extern tree pop_type_0 PROTO ((tree));
 extern tree pop_type PROTO ((tree));
 extern void pop_argument_types PROTO ((tree));
 extern tree decode_newarray_type PROTO ((int));