]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/java/verify.c
verify.c (verify_jvm_instructions): Better error messages.
[gcc.git] / gcc / java / verify.c
index 4b34c4717d30951b030d5e1c42014333f391cfaa..8779bd026747f0b01c7b51f74aa4446e4d905e64 100644 (file)
@@ -750,8 +750,12 @@ verify_jvm_instructions (jcf, byte_ops, length)
              pop_type (field_type);
            if (! is_static)
              {
+               int clindex = COMPONENT_REF_CLASS_INDEX (&current_jcf->cpool,
+                                                       index);
+               tree self_type = get_class_constant (current_jcf, clindex);
                /* Defer actual checking until next pass. */
-               pop_type (ptr_type_node);
+               if (pop_type_0 (self_type) == NULL_TREE)
+                 VERIFICATION_ERROR ("incorrect type for field reference");
              }
            if (! is_putting)
              push_type (field_type);
@@ -1283,6 +1287,7 @@ verify_jvm_instructions (jcf, byte_ops, length)
   message = "program counter out of range";
   goto verify_error;
  verify_error:
-  error ("verification error at PC=%d: %s", oldpc, message);
+  error ("verification error at PC=%d: %s", oldpc);
+  error (message);
   return 0;
 }
This page took 0.030884 seconds and 5 git commands to generate.