From b446a5f1693fa10ea19c1731ae30e3f8619d2208 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 26 Apr 2002 22:39:29 +0000 Subject: [PATCH] verify.cc (construct_primitive_array_type): New case. * verify.cc (construct_primitive_array_type) [void_type]: New case. (branch_prepass): Added dummy entries for unused instruction values. (verify_instructions_0): Likewise. * interpret.cc (continue1): Comment fix. * include/java-insns.h (op_xxxunusedxxx1): Removed. * Makefile.in: Rebuilt. * Makefile.am: Added -Wswitch-enum. From-SVN: r52814 --- libjava/ChangeLog | 12 +++++++ libjava/Makefile.am | 2 ++ libjava/Makefile.in | 1 + libjava/include/java-insns.h | 6 ++-- libjava/interpret.cc | 2 +- libjava/verify.cc | 61 ++++++++++++++++++++++++++++++++++++ 6 files changed, 81 insertions(+), 3 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index a7d34198068..293358ac36d 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,15 @@ +2002-04-26 Tom Tromey + + * verify.cc (construct_primitive_array_type) [void_type]: New + case. + (branch_prepass): Added dummy entries for unused instruction + values. + (verify_instructions_0): Likewise. + * interpret.cc (continue1): Comment fix. + * include/java-insns.h (op_xxxunusedxxx1): Removed. + * Makefile.in: Rebuilt. + * Makefile.am: Added -Wswitch-enum. + 2002-04-24 Tom Tromey * gnu/gcj/natCore.cc (create): Use __builtin_alloca, and compute diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 3caec30f672..92432eff22a 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -91,6 +91,8 @@ WARNINGS = -W -Wall AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions \ ## Some systems don't allow `$' in identifiers by default, so we force it. -fdollars-in-identifiers \ +## Detect bugs in the verifier implementation, and maybe other places. + -Wswitch-enum \ @LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE \ -DPREFIX="\"$(prefix)\"" if USING_GCC diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 15c7677d26c..0b288e56a64 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -181,6 +181,7 @@ GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ WARNINGS = -W -Wall AM_CXXFLAGS = -fno-rtti -fnon-call-exceptions \ -fdollars-in-identifiers \ + -Wswitch-enum \ @LIBGCJ_CXXFLAGS@ @X_CFLAGS@ $(WARNINGS) -D_GNU_SOURCE \ -DPREFIX="\"$(prefix)\"" diff --git a/libjava/include/java-insns.h b/libjava/include/java-insns.h index 327fcd373b0..a065987fc51 100644 --- a/libjava/include/java-insns.h +++ b/libjava/include/java-insns.h @@ -1,6 +1,6 @@ // java-insns.h - Instruction encodings. This is -*- c++ -*- -/* Copyright (C) 1999, 2001 Free Software Foundation +/* Copyright (C) 1999, 2001, 2002 Free Software Foundation This file is part of libgcj. @@ -199,7 +199,9 @@ enum java_opcode op_invokespecial = 0xb7, op_invokestatic = 0xb8, op_invokeinterface = 0xb9, - op_xxxunusedxxx1 = 0xba, + + // 0xba is unused. + op_new = 0xbb, op_newarray = 0xbc, op_anewarray = 0xbd, diff --git a/libjava/interpret.cc b/libjava/interpret.cc index 198ec45eb16..4db9dca08ec 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -628,7 +628,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv) INSN_LABEL(invokespecial), INSN_LABEL(invokestatic), INSN_LABEL(invokeinterface), - 0, /* op_xxxunusedxxx1, */ + 0, /* Unused. */ INSN_LABEL(new), INSN_LABEL(newarray), INSN_LABEL(anewarray), diff --git a/libjava/verify.cc b/libjava/verify.cc index 2fcfb607cc9..405481977d7 100644 --- a/libjava/verify.cc +++ b/libjava/verify.cc @@ -1525,6 +1525,19 @@ private: case long_type: k = JvPrimClass (long); break; + + // These aren't used here but we call them out to avoid + // warnings. + case void_type: + case unsuitable_type: + case return_address_type: + case continuation_type: + case unused_by_subroutine_type: + case reference_type: + case null_type: + case unresolved_reference_type: + case uninitialized_reference_type: + case uninitialized_unresolved_reference_type: default: verify_fail ("unknown type in construct_primitive_array_type"); } @@ -1828,6 +1841,30 @@ private: note_branch_target (compute_jump (get_int ()), last_was_jsr); break; + // These are unused here, but we call them out explicitly + // so that -Wswitch-enum doesn't complain. + case op_putfield_1: + case op_putfield_2: + case op_putfield_4: + case op_putfield_8: + case op_putfield_a: + case op_putstatic_1: + case op_putstatic_2: + case op_putstatic_4: + case op_putstatic_8: + case op_putstatic_a: + case op_getfield_1: + case op_getfield_2s: + case op_getfield_2u: + case op_getfield_4: + case op_getfield_8: + case op_getfield_a: + case op_getstatic_1: + case op_getstatic_2s: + case op_getstatic_2u: + case op_getstatic_4: + case op_getstatic_8: + case op_getstatic_a: default: verify_fail ("unrecognized instruction in branch_prepass", start_PC); @@ -2974,6 +3011,30 @@ private: handle_jsr_insn (get_int ()); break; + // These are unused here, but we call them out explicitly + // so that -Wswitch-enum doesn't complain. + case op_putfield_1: + case op_putfield_2: + case op_putfield_4: + case op_putfield_8: + case op_putfield_a: + case op_putstatic_1: + case op_putstatic_2: + case op_putstatic_4: + case op_putstatic_8: + case op_putstatic_a: + case op_getfield_1: + case op_getfield_2s: + case op_getfield_2u: + case op_getfield_4: + case op_getfield_8: + case op_getfield_a: + case op_getstatic_1: + case op_getstatic_2s: + case op_getstatic_2u: + case op_getstatic_4: + case op_getstatic_8: + case op_getstatic_a: default: // Unrecognized opcode. verify_fail ("unrecognized instruction in verify_instructions_0", -- 2.30.2