+2002-04-26 Tom Tromey <tromey@redhat.com>
+
+ * 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 <tromey@redhat.com>
* gnu/gcj/natCore.cc (create): Use __builtin_alloca, and compute
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
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)\""
// 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.
op_invokespecial = 0xb7,
op_invokestatic = 0xb8,
op_invokeinterface = 0xb9,
- op_xxxunusedxxx1 = 0xba,
+
+ // 0xba is unused.
+
op_new = 0xbb,
op_newarray = 0xbc,
op_anewarray = 0xbd,
INSN_LABEL(invokespecial),
INSN_LABEL(invokestatic),
INSN_LABEL(invokeinterface),
- 0, /* op_xxxunusedxxx1, */
+ 0, /* Unused. */
INSN_LABEL(new),
INSN_LABEL(newarray),
INSN_LABEL(anewarray),
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");
}
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);
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",