2015-06-23  Release Manager

	* GCC 4.8.5 released.

2015-06-23  Richard Biener  <rguenther@suse.de>

	* jcf-dump.c: Update displayed copyright years.

2014-12-19  Release Manager

	* GCC 4.8.4 released.

2014-05-22  Release Manager

	* GCC 4.8.3 released.

2013-10-16  Release Manager

	* GCC 4.8.2 released.

2013-05-31  Release Manager

	* GCC 4.8.1 released.

2013-05-06  Jakub Jelinek  <jakub@redhat.com>

	PR libgcj/57074
	* class.c (emit_symbol_table): Use array type of the
	right size for the_syms_decl and its DECL_INITIAL, instead
	of symbols_array_type.  Set TREE_TYPE (the_syms_decl) to it.
	(emit_assertion_table): Use array type of the right size
	for table_decl and its DECL_INITIAL.

2013-04-26  Gerald Pfeifer  <gerald@pfeifer.com>

	* gcj.texi (Configure-time Options): Refer to GCC, not gcc.
	(Resources): Adjust reference to Mauve.
	Remove link to java.sun.com.
	Refer to GCC, not gcc.

2013-03-22  Release Manager

	* GCC 4.8.0 released.

2013-01-03  Jakub Jelinek  <jakub@redhat.com>

	* jcf-dump.c (version): Update copyright notice dates.

2012-11-16  Diego Novillo  <dnovillo@google.com>

	Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)

	* boehm.c: Use new vec API in vec.h.
	* class.c: Likewise.
	* constants.c: Likewise.
	* decl.c: Likewise.
	* expr.c: Likewise.
	* java-tree.h: Likewise.
	* jcf-parse.c: Likewise.
	* resource.c: Likewise.
	* verify-glue.c: Likewise.

2012-11-15  Jan Hubicka  <jh@suse.cz>

	* builtins.c (define_builtin): Accept ECF flags and
	use set_call_expr_flags.
	(initialize_builtins): Update.

2012-10-01  Lawrence Crowl  <crowl@google.com>

	* Make-lang.in (JAVA_OBJS): Add dependence on hash-table.o.
	(JCFDUMP_OBJS): Add dependence on hash-table.o.
	(jcf-io.o): Add dependence on hash-table.h.
	* jcf-io.c (memoized_class_lookups): Change to use type-safe hash table.

2012-09-24  Lawrence Crowl  <crowl@google.com>

	* decl.c (java_init_decl_processing): Change to new double_int API.
	* jcf-parse.c (get_constant): Likewise.
	* boehm.c (mark_reference_fields): Likewise.
	(get_boehm_type_descriptor): Likewise.

2012-07-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* jcf.h (CPool): Use the "atomic" GTY option for the tags field.
	(bootstrap_method): Likewise for the bootstrap_arguments field.

2012-07-16  Steven Bosscher  <steven@gcc.gnu.org>

	* java-gimplify.c Include dumpfile.h instead of tree-dump.h
	* Make-lang.in: Fix dependencies.

2012-07-11  Steven Bosscher  <steven@gcc.gnu.org>

	* java-tree.h (force_evaluation_order): Remove prototype.
	* expr.c (force_evaluation_order): Remove unused function.

2012-07-11  Steven Bosscher  <steven@gcc.gnu.org>

	* decl.c: Do not include libfuncs.h.
	* class.c: Do not include defaults.h.
	* jvgenmain.c: Likewise.
	* magnle.c: Likewise.
	* Make-lang.in (decl.o): Fix dependencies.

2012-07-08  Steven Bosscher  <steven@gcc.gnu.org>

	* verify.h: Do not include system.h and coretypes.h here.
	* verify-impl.c: Include them here instead.

2012-07-05  Uros Bizjak  <ubizjak@gmail.com>

	* jcf-io.c (read_zip_member): Initialize d_stream.

2012-05-31  Steven Bosscher  <steven@gcc.gnu.org>

	* resource.c: Do not include output.h.

2012-05-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR java/52815
	* class.c (emit_register_classes_in_jcr_section): Revise placement
	of #ifdef JCR_SECTION_NAME.

2012-04-22  Jan Hubicka  <jh@suse.cz>

	* class.c (build_utf8_ref): Do not mark varpool node as needed.

2012-04-20  Jan Hubicka  <jh@suse.cz>

	* class.c (make_local_function_alias): Do not mark symbol referenced.

2012-04-11  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* jcf-dump.c (print_constant): Cast JPOOL_USHORT2, JPOOL_USHORT1
	results to long to match formats.

2012-04-11  Andrew Haley  <aph@redhat.com>

	* jcf-reader.c (jcf_parse_bootstrap_methods): Add
	ATTRIBUTE_UNUSED.

2012-04-11  Andrew Haley  <aph@redhat.com>

	* jcf.h (bootstrap_method): New.
	(BootstrapMethods): New.
	(JCF): Add BootstrapMethods.
	(enum cpool_tag): Add MethodHandle, MethodType, and InvokeDynamic.
	* jcf-reader.c (jcf_parse_bootstrap_methods): New.
	(jcf_parse_constant_pool): Handlers for MethodHandle, MethodType,
	and InvokeDynamic.
	(jcf_parse_bootstrap_methods): New.
	* javaop.def (invokedynamic): New opcode.
	* jcf-parse.c (get_constant): An unknown constant type should not
	be an internal error, but a fatal one.  Make it so.
	* jcf-dump.c (HANDLE_BOOTSTRAP_METHODS_ATTRIBUTE): New.
	(HANDLE_END_BOOTSTRAP_METHODS): New.
	(print_constant): Handlers for MethodHandle, MethodType, and
	InvokeDynamic.

2012-04-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* class.c (emit_register_classes_in_jcr_section): Set DECL_USER_ALIGN.
	Clear TREE_READONLY.

2012-03-29  Steven Bosscher  <steven@gcc.gnu.org>

	PR java/52730
	* class.c (emit_register_classes_in_jcr_section): New function.
	(emit_Jv_RegisterClass_calls): New function, split out from ...
	(emit_register_classes): ... here. Reorganize.  Do not call
	output_constant.

2012-01-23  Andreas Schwab  <schwab@linux-m68k.org>

	* lang.c (java_init_options_struct): Set
	frontend_set_flag_trapping_math.

2012-01-01  Jakub Jelinek  <jakub@redhat.com>

	* jcf-dump.c (version): Update copyright notice dates.

2011-12-03  Matthias Klose  <doko@ubuntu.com>

	* expr.c (SPECIAL_WIDE): Fix typo in message.

2011-11-23  Jeffrey A Law  (law@cygnus.com)

	* lang.c (java_init_options_struct): Disable optimizations
	which assume a NULL pointer dereference will cause a fault.

2011-11-07  Richard Henderson  <rth@redhat.com>

	* builtins.c (compareAndSwapInt_builtin): Use can_compare_and_swap_p.
	(compareAndSwapLong_builtin): Likewise.
	(compareAndSwapObject_builtin): Likewise.
	(VMSupportsCS8_builtin): Likewise.

2011-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Make-lang.in (jvspec.o): Pass SHLIB instead of SHLIB_LINK.

2011-10-15  Tom Tromey  <tromey@redhat.com>
	    Dodji Seketeli  <dodji@redhat.com>

	* jcf-parse.c (set_source_filename): Adjust to the new map API.

2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* class.c (build_static_field_ref): Delete old interface with two
	parallel arrays to hold standard builtin declarations, and replace
	it with a function based interface that can support creating
	builtins on the fly in the future.  Change all uses, and poison
	the old names.  Make sure 0 is not a legitimate builtin index.
	* decl.c (java_init_decl_processing): Ditto.
	* except.c (compareAndSwapLong_builtin): Ditto.
	(compareAndSwapObject_builtin): Ditto.
	(putVolatile_builtin): Ditto.
	(define_builtin): Ditto.
	(check_for_builtin): Ditto.
	* expr.c (rewrite_arglist_getcaller): Ditto.
	(expand_java_field_op): Ditto.

2011-08-24  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in (CFLAGS-java/jcf-io.o, CFLAGS-java/jcf-path.o):
	New.
	(java/jcf-io.o, java/jcf-path.o): Remove explicit compilation
	rules.

2011-08-18  Peter Collingbourne  <peter@pcc.me.uk>

	* expr.c (expand_invoke) Use the type of the method rewrite
	target.

2011-08-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* jcf-dump.c (print_constant): Cast first frexp arg.

2011-08-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Make-lang.in ($(XGCJ)$(exeext)): Add $(EXTRA_GCC_LIBS).

2011-07-19  Richard Guenther  <rguenther@suse.de>

	* builtins.c (static): Use fold_build_pointer_plus.
	* class.c (make_class_data): Likewise.
	(build_symbol_entry): Likewise.
	* except.c (build_exception_object_ref): Likewise.
	* expr.c (build_java_arrayaccess): Likewise.
	(build_field_ref): Likewise.
	(build_known_method_ref): Likewise.
	(build_invokevirtual): Likewise.

2011-07-06  Richard Guenther  <rguenther@suse.de>

	* decl.c (java_init_decl_processing):
	Merge calls to build_common_tree_nodes and build_common_tree_nodes_2.

2011-06-21  Andrew MacLeod  <amacleod@redhat.com>

	* builtins.c: Add sync_ or SYNC__ to builtin names.
	* expr.c: Add sync_ or SYNC__ to builtin names.

2011-06-07  Richard Guenther  <rguenther@suse.de>

	* decl.c (java_init_decl_processing): Call build_common_nodes,
	build_common_nodes_2 at the beginning.  Remove then duplicate
	initializations.

2011-06-07  Richard Guenther  <rguenther@suse.de>

	* decl.c (java_init_decl_processing): Properly initialize
	size_type_node.

2011-05-30  Joern Rennecke  <joern.rennecke@embecosm.com>

	PR middle-end/46500
	* expr.c: Include "tm.h" .

2011-05-26  Nathan Froyd  <froydnj@codesourcery.com>

	* decl.c (poplevel): Don't access TREE_TYPE of BLOCKs.
	* expr.c (build_jni_stub): Likewise.

2011-05-24  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in ($(XGCJ)$(exeext)): Use libcommon-target.a instead
	of prefix.o.

2011-05-20  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in ($(XGCJ)$(exeext)): Don't explicitly use intl.o and
	version.o.
	(JCFDUMP_OBJS): Remove errors.o, version.o and intl.o.
	(JVGENMAIN_OBJS): Remove errors.o and intl.o.
	(java/jcf-dump.o, java/jvgenmain.o): Depend in $(DIAGNOSTIC_H).
	* jcf-dump.c: Include diagnostic.h.
	(main): Initialize diagnostics.
	* jvgenmain.c: Include diagnostic.h.
	(main): Initialize diagnostics.

2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>

	* java-tree.h (TYPE_ARGUMENT_SIGNATURE): Use TYPE_MINVAL.

2011-05-07  Eric Botcazou  <ebotcazou@adacore.com>

	* java-tree.h (global_bindings_p): Adjust prototype.
	* decl.c (global_bindings_p): Return bool.

2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>

	* expr.c (expand_java_switch): Call build_case_label.
	(expand_java_add_case): Likewise.

2011-04-29  Richard Guenther  <rguenther@suse.de>

	PR middle-end/48819
	* constants.c (build_constants_constructor): Use ptr_type_node for
	temp.

2011-04-20  Jim Meyering  <meyering@redhat.com>

	* jcf-parse.c (java_parse_file): Remove useless if-before-free.

2011-04-18  Jim Meyering  <meyering@redhat.com>

	* jcf-parse.c: Fix typo in comment.

2011-04-14  Nathan Froyd  <froydnj@codesourcery.com>

	* decl.c (poplevel): Use BLOCK_CHAIN and block_chainon.

2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>

	* java-tree.h (union lang_tree_node): Check for TS_COMMON before
	calling TREE_CHAIN.

2011-04-11  Martin Jambor  <mjambor@suse.cz>

	* decl.c (java_mark_decl_local): Call cgraph_get_node instead of
	cgraph_node and handle returned NULL.

2011-03-25  Kai Tietz  <ktietz@redhat.com>

	* jcf-parse.c (java_read_sourcefilenames): Use filename_cmp
	instead of strcmp.
	(set_source_filename): Likewise.
	* win32-host.c (jcf_open_exact_case): Likewise.

2011-03-21  Kai Tietz  <ktietz@redhat.com>

	PR target/12171
	* lang.c (java_attribute_table): Adjust table.

2011-02-13  Joseph Myers  <joseph@codesourcery.com>

	* jvspec.c (jvgenmain_spec): Remove %{a*}.

2011-01-21  Kai Tietz  <kai.tietz@onevision.com>

	PR bootstrap/47215
	* decl.c (java_init_decl_processing): Remove
	va_list_type_node related type initializations.

2011-01-11  Kai Tietz  <kai.tietz@onevision.com>

	PR bootstrap/47215
	* decl.c (java_init_decl_processing): Initialize
	long_integer_type_node.

2011-01-07  Kai Tietz  <kai.tietz@onevision.com>

	PR bootstrap/47215
	* decl.c (java_init_decl_processing): Initialize unsigned_type_node.

2011-01-07  Kai Tietz  <kai.tietz@onevision.com>

	* decl.c (java_init_decl_processing): Setup va_list_type_node.

2011-01-03  Jakub Jelinek  <jakub@redhat.com>

	* jcf-dump.c (version): Update copyright notice dates.

2010-12-15  Dave Korn  <dave.korn.cygwin@gmail.com>

	* decl.c (java_init_decl_processing): Initialise integer_three_node.
	* lang.c (put_decl_node): Handle nested function decls.

2010-12-07  Joseph Myers  <joseph@codesourcery.com>

	* jcf-parse.c: Don't include assert.h.
	(java_parse_file): Use gcc_assert.

2010-12-03  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt (static-libgcj): New option.

2010-12-01  Joseph Myers  <joseph@codesourcery.com>

	* jcf-parse.c: Don't include toplev.h.
	* Make-lang.in (java/jcf-parse.o): Don't depend on toplev.h.

2010-11-30  Joseph Myers  <joseph@codesourcery.com>

	* boehm.c: Don't include toplev.h.
	* Make-lang.in (java/boehm.o): Don't depend on toplev.h.

2010-11-30  Joseph Myers  <joseph@codesourcery.com>

	* expr.c, lang.c, mangle.c, mangle_name.c, typeck.c,
	verify-glue.c: Don't include toplev.h.
	* Make-lang.in: Dependencies for above files changed to remove
	toplev.h.

2010-11-29  Joseph Myers  <joseph@codesourcery.com>

	* boehm.c: Include "config.h" instead of <config.h>.
	* builtins.c: Don't include <stdarg.h>.
	* class.c: Don't include "stdio.h".
	(O_BINARY): Don't define here.
	* jcf-depend.c: Don't include <assert.h>.
	(jcf_dependency_set_dep_file, jcf_dependency_init,
	jcf_dependency_write): Use gcc_assert.
	* jcf-io.c (O_BINARY): Don't define here.
	* jcf-path.c: Don't include "tm.h".
	(jcf_path_init): Use getenv instead of GET_ENVIRONMENT.
	* resource.c: Don't include "stdio.h".
	(O_BINARY): Don't define here.
	* verify-impl.c: Don't include <stdio.h>.

2010-11-17  Joseph Myers  <joseph@codesourcery.com>

	* jcf-parse.c (java_parse_file): Take no arguments.
	* java-tree.h (java_parse_file): Update prototype.

2010-11-09  Joern Rennecke  <amylaar@spamcop.net>
	    Andrew Haley  <aph@redhat.com>

	PR java/46386
	* config/pdp11/t-pdp11 (java/constants.o-warn): Remove.

2010-11-12  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in (jvspec.o, java/lang.o): Use $(OPTS_H).
	* lang.c (java_handle_option): Take location_t parameter.

2010-11-10  Joseph Myers  <joseph@codesourcery.com>

	* expr.c (expand_java_field_op): Use %' in diagnostic.
	* jcf-parse.c (java_parse_file): Use %' in diagnostics.
	* jvspec.c (lang_specific_driver): Use %' in diagnostic.
	* lang.c (java_post_options): Use %' in diagnostics.

2010-11-06  Joern Rennecke  <amylaar@spamcop.net>

	PR middle-end/46314
	* class.c: Include target.h.
	(make_local_function_alias):
	Use targetm.asm_out.generate_internal_label.
	* expr.c (lookup_label, generate_name): Likewise.

2010-11-03  Joern Rennecke  <joern.rennecke@embecosm.com>

	PR bootstrap/44335
	* jfc-parse.c (target.h): Include.
	(handle_constant): Use targetm.words_big_endian and
	targetm.float_words_big_endian.
	(get_constant): Use targetm.float_words_big_endian.

2010-10-13  Richard Henderson  <rth@redhat.com>

	* lang.c (java_eh_personality): Update call to
	build_personality_function.

2010-10-12  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of
	options.h.

2010-10-11  Nathan Froyd  <froydnj@codesourcery.com>

	* decl.c (java_init_decl_processing): Use build_function_type_list
	instead of build_function_type.
	* jcf-parse.c (java_emit_static_constructor): Likewise.
	* builtins.c (initialize_builtins): Likewise.

2010-10-08  Joseph Myers  <joseph@codesourcery.com>

	* lang.c (java_init_options_struct): New.  Split out from
	java_init_options.
	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.

2010-10-04  Andi Kleen <ak@linux.intel.com>

	* Make-lang.in (xgcj, jc1, jcf-dump, jvgenmain):
	Add + to build rule.

2010-09-29  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt: Don't use VarExists.

2010-09-29  Joseph Myers  <joseph@codesourcery.com>

	* java-tree.h (flag_filelist_file, flag_assert, flag_jni,
	flag_force_classes_archive_check, flag_redundant, flag_newer,
	flag_use_divide_subroutine, flag_use_atomic_builtins,
	flag_use_boehm_gc, flag_hash_synchronization,
	flag_check_references, flag_optimize_sci, flag_indirect_classes,
	flag_indirect_dispatch, flag_store_check,
	flag_reduced_reflection): Remove.
	* jcf-dump.c (flag_newer): Remove.
	* jcf.h (quiet_flag): Remove.
	* parse.h (quiet_flag): Remove.

2010-09-28  Richard Henderson  <rth@redhat.com>

	* lang.c: Include "target.h".
	(java_eh_personality): Use targetm.except_unwind_info.
	* Make-lang.in (lang.o): Update deps.

2010-09-27  Andrew Haley  <aph@redhat.com>

	PR java/45773
	* jvgenmain.c (main): Fix arg processing.

2010-09-22  Joseph Myers  <joseph@codesourcery.com>

	* jvspec.c (lang_specific_driver): Handle OPT__help instead of
	OPT_fhelp.
	* lang.opt (-CLASSPATH, -all-warnings, -bootclasspath, -classpath,
	-dependencies, -encoding, -extdirs, -include-directory,
	-include-directory=, -output-class-directory,
	-output-class-directory=, -resource, -resource=,
	-user-dependencies): New.

2010-09-16  Richard Guenther  <rguenther@suse.de>

	* jcf-parse.c (current_file_list): Remove.
	(java_parse_file): Use build_translation_unit_decl.  Adjust.

2010-09-03  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt (d): New.

2010-09-03  H.J. Lu  <hongjiu.lu@intel.com>

	PR java/45504
	* jvgenmain.c (main): Check "-D XXX=YYY".

2010-09-02  Joseph Myers  <joseph@codesourcery.com>

	* jvspec.c (jvgenmain_spec): Don't handle -fnew-verifier.

2010-09-02  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt (CLASSPATH, bootclasspath, classpath, encoding,
	fCLASSPATH=): Mark as Java options and as aliases.
	* jvspec.c (jvgenmain_spec): Don't handle -fCLASSPATH*.
	(lang_specific_driver): Don't handle options marked as aliases.
	* lang.c (java_handle_option): Don't handle OPT_fCLASSPATH_.

2010-08-22  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in (jvspec.o): Update dependencies.
	* jvspec.c: Include opts.h.
	(PARAM_ARG): Remove.
	(find_spec_file): Do not add leading -specs=.
	(lang_specific_driver): Use cl_decoded_option structures.
	* lang.opt (C, CLASSPATH, D, bootclasspath, classpath, encoding,
	extdirs, fmain=, s-bc-abi): New options.

2010-08-20  Nathan Froyd  <froydnj@codesourcery.com>

	* class.c: Use FOR_EACH_VEC_ELT.
	* expr.c: Likewise.
	* jcf-parse.c: Likewise.
	* resource.c: Likewise.

2010-08-16  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt (MD_, MMD_, version): Mark RejectDriver.

2010-08-05  David Daney  <ddaney@caviumnetworks.com>

	* class.c (build_utf8_ref): Fix code formatting from previous commit.

2010-08-05  David Daney  <ddaney@caviumnetworks.com>

	* class.c (build_utf8_ref): Make decl DECL_USER_ALIGN.

2010-07-27  Joseph Myers  <joseph@codesourcery.com>

	* lang.c (java_handle_option): Update prototype and return value
	type.

2010-07-27  Joseph Myers  <joseph@codesourcery.com>

	* lang.c (java_option_lang_mask): New.
	(java_init_options): Update prototype.
	(LANG_HOOKS_OPTION_LANG_MASK): Define.

2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>

	* java-tree.h: Carefully replace TREE_CHAIN with DECL_CHAIN.
	* boehm.c: Likewise.
	* class.c: Likewise.
	* decl.c: Likewise.
	* expr.c: Likewise.
	* jcf-parse.c: Likewise.
	* typeck.c: Likewise.
	* verify-glue.c: Likewise.

2010-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* boehm.c: Include diagnostic-core.h in every file that includes
	toplev.h.
	* class.c: Likewise.
	* constants.c: Likewise.
	* decl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* jcf-parse.c: Likewise.
	* mangle.c: Likewise.
	* mangle_name.c: Likewise.
	* resource.c: Likewise.
	* typeck.c: Likewise.
	* verify-glue.c: Likewise.

2010-07-05  Nathan Froyd  <froydnj@codesourcery.com>

	PR bootstrap/44825
	* class.c (make_class_data): Cast result of VEC_length calls to int.

2010-07-05  Nathan Froyd  <froydnj@codesourcery.com>

	* constants.c (build_constants_constructor): Use build_constructor
	instead of build_constructor_from_list.
	* class.c (make_method_value): Likewise.
	(get_dispatch_table): Likewise.
	(make_class_data): Likewise.
	(emit_indirect_register_classes): Likewise.
	(emit_symbol_table): Likewise.
	(add_assertion_table_entry): Likewise.
	(emit_assertion_table): Likewise.
	(make_field_value): Use build_constructor_single instead of
	build_constructor_from_list.

2010-06-28  Nathan Froyd  <froydnj@codesourcery.com>

	* java-tree.h (struct lang_type) [catch_classes]: Change type to a
	VEC.
	* except.c (prepare_eh_table_type): Call CONSTRUCTOR_APPEND_ELT
	instead of tree_cons.
	* class.c (make_class): Add dummy entry to TYPE_CATCH_CLASSES.
	(emit_catch_table): Adjust for new type of TYPE_CATCH_CLASSES.

2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>

	* lang.c: Do not include except.h
	* except.c: Likewise.
	(doing_eh): New, moved from except.c (in gcc/) but removed the
	do_warning flag.
	(maybe_start_try): Update doing_eh call.
	* Make-lang.in: Update dependencies.

2010-06-23  Anatoly Sokolov  <aesok@post.ru>

	* decl.c (java_init_decl_processing): Use double_int_to_tree instead
	of build_int_cst_wide.
	* boehm.c (set_bit): Remove.
	(mark_reference_fields): Use double_int type for 'mask' argument.
	Use double_int_setbit instead of set_bit.
	(get_boehm_type_descriptor): Use double_int_setbit instead of
	set_bit. Use double_int_to_tree instead of build_int_cst_wide.

2010-06-10  Gerald Pfeifer  <gerald@pfeifer.com>

	* gcj.texi: Move to GFDL version 1.3.  Fix copyright years.

2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* jcf-reader.c (jcf_parse_constant_pool): Use typed GC allocation.

	* jcf-parse.c (java_parse_file): Likewise.
	(process_zip_dir): Likewise.

	* java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Likewise.
	(MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise.

	* expr.c (add_type_assertion): Likewise.

	* decl.c (make_binding_level): Likewise.
	(java_dup_lang_specific_decl): Likewise.

	* constants.c (set_constant_entry): Likewise.
	(cpool_for_class): Likewise.

	* class.c (add_method_1): Likewise.
	(java_treetreehash_new): Likewise.

	* java-tree.h (struct lang_type): Add variable_size GTY option.
	(struct lang_decl): Likewise.

	* jch.h (struct cpool_entry): Likewise.

	* java-tree.h (java_treetreehash_create): Remove parameter ggc.

	* except.c (prepare_eh_table_type): Update
	java_treetreehash_create call.

	* class.c (add_method_1): Update java_treetreehash_create call.
	(java_treetreehash_create): Remove parameter gc.  Use
	htab_create_ggc.

2010-06-04  Joseph Myers  <joseph@codesourcery.com>

	* jvspec.c (lang_specific_driver): Use GCC-specific formats in
	diagnostics.

2010-05-30  Steven Bosscher  <steven@gcc.gnu.org>

	* except.c: Include tm.h.

2010-05-28  Joseph Myers  <joseph@codesourcery.com>

	* jvspec.c (lang_specific_driver): Use fatal_error instead of
	fatal.  Use warning instead of error for warnings.

2010-05-28  Nathan Froyd  <froydnj@codesourcery.com>

	* expr.c (get_symbol_table_index): Add spaces in expression.

2010-05-28  Nathan Froyd  <froydnj@codesourcery.com>

	* java-tree.h (method_entry): Declare.  Declare VECs containing it.
	(struct lang_type): Change type of otable_methods, atable_methods, and
	itable_methods to VECs.  Fix comment for atable_methods.
	(emit_symbol_table): Take a VEC instead of a tree.
	(get_symbol_table_index): Take a VEC * instead of a tree *.
	* class.c (add_table_and_syms): Take a VEC instead of a tree.
	(emit_symbol_table): Update for changed parameter type.
	* expr.c (get_symbol_table_index): Likewise.

2010-05-27  Steven Bosscher  <steven@gcc.gnu.org>

	* buildings.c: Pretend to be a backend file by undefining
	IN_GCC_FRONTEND (still need rtl.h here).

2010-05-26  Nathan Froyd  <froydnj@codesourcery.com>

	* java-tree.h (struct lang_decl_func): Change type of throws_list
	field to a VEC.
	* jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE): Adjust for changed type
	of DECL_FUNCTION_THROWS.
	* class.c (make_method_value): Likewise.

2010-05-26  Nathan Froyd  <froydnj@codesourcery.com>

	* class.c (utf8_decl_list): Delete.
	(build_utf8_ref): Remove references to it.
	* java-tree.h (all_class_list): Delete.
	(predef_filenames): Delete.
	(enum java_tree_index) [JTI ALL_CLASS_LIST,JTI_PREDEF_FILENAMES]:
	Delete.
	* jcf-parse.c (parse_roots): Decrease size to 2.
	(current_file_list): Convert to a VEC.
	(all_class_list): Declare.
	(jcf_parse): Adjust for new type of all_class_list.
	(java_layout_seen_class_methods): Likewise.
	(predefined_filenames): Declare.
	(add_predefined_file): Use it.
	(predefined_filename_p): Likewise.
	(java_parse_file): Adjust for new type of current_file_list.

2010-05-25  Jakub Jelinek  <jakub@redhat.com>

	* lang.c (java_classify_record): Return RECORD_IS_INTERFACE
	for interfaces.

	PR debug/43260
	* java-tree.h (pending_static_fields): New extern declaration.
	(java_write_globals): New prototype.
	* lang.c (LANG_HOOKS_WRITE_GLOBALS): Define.
	* decl.c (java_mark_class_local): When clearing DECL_EXTERNAL
	of a static field push it into pending_static_fields vector.
	* class.c (pending_static_fields): New variable.
	(add_field): If static field is not DECL_EXTERNAL, push it into
	pending_static_fields vector.
	(java_write_globals): New function.

2010-05-24  Nathan Froyd  <froydnj@codesourcery.com>

	* expr.c (quick_stack): Change type to a VEC.  Update comment.
	(tree_list_free_list): Delete.
	(flush_quick_stack): Update for quick_stack type change.
	(push_value): Likewise.
	(pop_value): Likewise.

2010-05-23  Steven Bosscher  <steven@gcc.gnu.org>

	* java-gimplify.c: Do not include tm.h, toplev.h.
	* typeck.c: Do not include tm.h.
	* mangle_name.c: Do not include tm.h.
	* jcf-dump.c: Do not include tm.h, ggc.h.
	* class.c: Do not include rtl.h, tm_p.h, target.h, except.h, cgraph.h.
	* decl.c: Do not include tm.h, rtl.h, function.h, expr.h, except.h,
	and timevar.h.
	* jcf-parse.c: Do not include tm.h and tm_p.h.
	* resource.c: Do not include tm.h, rtl.h, flags.h, obstack.h,
	target.h, and expr.h.
	* except.c: Do not include tm.h, rtl.h, function.h.
	* builtins.c: Do not include convert.h.  Explain why RTL headers
	have to be included here.
	* verify-glue.c: Do not include tm.h.
	* jcf-depend.c: Do not include tm.h.
	* jcf-reader.c: Include ggc.h.
	* jcf-io.c: Do not include tm.h, toplev.h.
	* expr.c: Do not include tm.h, rtl.h, expr.h, except.h, tm_p.h,
	gimple.h.
	* lang.c: Do not include rtl.h, expr.h.
	* Make-lang.in: Update dependencies.

2010-05-23  Steven Bosscher  <steven@gcc.gnu.org>

	* jcf-parse.c: Include bitmap.h.
	* Make-lang.in: Update dependencies.

2010-05-20  Jakub Jelinek  <jakub@redhat.com>

	PR debug/43521
	* decl.c (start_java_method): Set DECL_ARTIFICIAL on the 'this'
	PARM_DECL.

2010-05-19  Anatoly Sokolov  <aesok@post.ru>

	* jcf-parse.c (get_constant): Use double_int_to_tree instead of
	build_int_cst_wide_type.

2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>

	* expr.c (pop_arguments): Fix use of undeclared variable.

2010-05-18  Nathan Froyd  <froydnj@codesourcery.com>

	* expr.c (expand_java_multianewarray): Use build_call_vec instead of
	build_call_list.
	(pop_arguments): Return a VEC instead of a tree.  Take a method type
	rather than a list of argument types.
	(rewrite_rule): Change signature. of rewrite_arglist member.
	(rewrite_arglist_getcaller): Update signature.
	(rewrite_arglist_getclass): Likewise.
	(maybe_rewrite_invocation): Update for rewrite_arglist change.
	(build_known_method_ref): Take a VEC instead of a tree.
	(invoke_build_dtable): Likewise.
	(expand_invoke): Update calls to pop_arguments.  Use build_call_vec
	instead of build_call_list.
	(build_jni_stub): Use build_call_vec instead of build_call_list.
	* java-tree.h (maybe_rewrite_invocation): Update declaration.
	(build_known_method_ref): Likewise.
	(invoke_build_dtable): Likewise.

2010-05-14  Nathan Froyd  <froydnj@codesourcery.com>

	PR 44103
	* java-tree.h (START_RECORD_CONSTRUCTOR): Change first argument to a
	vector.  Move call to build_constructor...
	(FINISH_RECORD_CONSTRUCTOR): ...here.  Add necessary arguments.  Clear
	TREE_CONSTANT on the constructor.
	(PUSH_SUPER_VALUE): Change first argument to a vector.
	(PUSH_FIELD_VALUE): Likewise.
	* resource.c (compile_resource_data): Update calls to above macros.
	* constants.c (build_constants_constructor): Likewise.
	* class.c (build_utf8_ref): Likewise.
	(make_field_value): Likewise.
	(make_method_value): Likewise.
	(add_table_and_syms): New function.
	(make_class_data): Call it.  Update calls to above macros.
	(build_symbol_table_entry): New function.
	(build_symbol_entry): Call it.  Update calls to above macros.
	(emit_symbol_table): Likewise.
	(make_catch_class_record): Update calls to above macros.
	(build_assertion_table_entry): New function.
	(add_assertion_table_entry): Call it.
	(emit_assertion_table): Likewise.

2010-05-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR 40989
	* lang.c (java_handle_option): Add argument kind.

2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>

	* decl.c (java_init_decl_processing): Remove argument in call to
	initialize_sizetypes

2010-04-07  Jakub Jelinek  <jakub@redhat.com>

	* exception.cc (_Jv_Throw): Avoid set but not used warning.
	* include/java-assert.h (JvAssertMessage, JvAssert): Use argument in
	sizeof to avoid set but not used warnings.

2010-01-20  Joern Rennecke  <amylaar@spamcop.net>

	* lang.c (java_post_options): Constify variable "dot".

	* jcf-parse.c (set_source_filename): Constify variable "dot".
	(load_class): Constify variable "separator".
	Use get_identifier_with_length.

	* jvspec.c (lang_specific_driver): Constify two variables named "p".

2010-01-09  Jakub Jelinek  <jakub@redhat.com>

	* jcf-dump.c (version): Update copyright notice dates.

2009-11-28  Jakub Jelinek  <jakub@redhat.com>

	* jvspec.c (lang_specific_driver): Remove unused
	saw_verbose_flag variable.
	* jcf-dump.c (main): Remove unused general_purpose_bits
	variable.
	* builtins.c (initialize_builtins): Remove unused float_ftype_float
	variable.
	* expr.c (java_stack_pop): Remove unused val variable.
	(build_jni_stub): Remove unused res_type variable.
	* verify-impl.c (check_field_constant): Remove unused len variable.

2009-10-20  Joel Dice <dicej@mailsnare.net>

	PR java/28474
	* mangle_name.c (append_unicode_mangled_name): Fix mangling
	of names with multiple underscores and "U".
	(unicode_mangling_length): Likewise.

2009-10-03  Simon Baldwin  <simonb@google.com>

	* config-lang.in (lang_dirs): Remove zlib.

2009-09-28  Richard Henderson  <rth@redhat.com>

	* builtins.c (initialize_builtins): Update call to
	build_common_builtin_nodes.
	* lang.c (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.

2009-09-14  Richard Henderson  <rth@redhat.com>

	* builtins.c (initialize_builtins): Update call to
	build_common_builtin_nodes.
	* decl.c (java_init_decl_processing): Don't call
	default_init_unwind_resume_libfunc.
	* except.c: Include tree-iterator.h.
	(build_exception_object_var): New.
	(build_exception_object_ref): Use it.
	(expand_end_java_handler): Initialize it from __builtin_eh_pointer.
	Attach all CATCH_EXPRs to a single TRY_CATCH_EXPR.
	* java-tree.h (DECL_FUNCTION_EXC_OBJ): New.

2009-09-13  Richard Guenther  <rguenther@suse.de>
	Rafael Avila de Espindola  <espindola@google.com>

	* decl.c (do_nothing): Remove.
	(java_init_decl_processing): Do not set lang_eh_runtime_type.
	* Make-lang.in (lang.o): Add $(EXCEPT_H) dependency.
	* lang.c (java_eh_personality): New.
	(java_eh_personality_decl): Likewise.
	(LANG_HOOKS_EH_PERSONALITY): Define.

2009-09-03  Diego Novillo  <dnovillo@google.com>

	* lang.c (lang_hooks): Remove const qualifier.

2009-09-01  Jakub Jelinek  <jakub@redhat.com>

	* boehm.c (mark_reference_fields): Compute % in HOST_WIDE_INT
	type.

2009-09-01  Richard Guenther  <rguenther@suse.de>

	* lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
	* java-tree.h (java_mark_addressable): Likewise.
	* typeck.c (java_mark_addressable): Likewise.

2009-08-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Make-lang.in (java.install-pdf): Install gcj.pdf in
	$(pdfdir)/gcc, alongside the other manuals.

2009-08-12  Andrew Haley  <aph@redhat.com>

	* builtins.c (compareAndSwapInt_builtin): Use
	flag_use_atomic_builtins.
	(compareAndSwapLong_builtin): Likewise.
	(compareAndSwapObject_builtin): Likewise.
	* jvspec.c: Add flag_use_atomic_builtins.
	* gcj.texi: Likewise.
	* java-tree.h: Likewise.
	* lang.opt: Likewise.

2009-08-11  Dodji Seketeli  <dodji@redhat.com>

	PR debug/40990
	* lang.c (put_decl_node): Outputs different level of information
	depending on the verbosity level.

2009-07-31  Andrew Haley  <aph@redhat.com>

	PR java/40867
	* decl.c (java_replace_references): Set EXPR_LOCATION on all
	generated expressions.
	(binding_level.loc): new field.
	(clear_binding_level): Initialize loc.
	(set_input_location): New function.
	(pushlevel): Set new binding_level.loc.
	(poplevel): Set EXPR_LOCATION on the new BIND_EXPR_BODY.
	(start_java_method): Set DECL_SOURCE_LOCATION of this new method.
	(java_add_stmt): Set the EXPR_LOCATION on all subtrees of new_stmt.

2009-07-17  Richard Guenther  <rguenther@suse.de>

	PR c/40401
	* java-gimplify.c (java_genericize): Do not gimplify here.
	But replace all local references.
	(java_gimplify_expr): Do not replace local references here.
	(java_gimplify_modify_expr): Likewise.
	* jcf-parse.c (java_parse_file): Do not finalize the CU or
	optimize the cgraph here.
	* decl.c (java_replace_reference): Make static.
	(java_replace_references): New function.
	(end_java_method): Clear base_decl_map.
	* java-tree.h (java_replace_references): Declare.
	(java_replace_reference): Remove.

2009-07-14  Taras Glek  <tglek@mozilla.com>
	    Rafael Espindola  <espindola@google.com>

	* Make-lang.in (java.install-plugin): New target for
	installing plugin headers.

2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* class.c: Replace %J by an explicit location. Update all calls.

2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* jcf-parse.c: Replace %H by an explicit location. Update all calls.

2009-06-29  Andrew Haley  <aph@redhat.com>

	PR java/40590
	* java-tree.h (cxx_keyword_p): New declaration.
	* mangle_name.c (utf8_cmp): Move here from mangle.c.
	(cxx_keywords): Likewise.
	(cxx_keyword_p): Likewise.
	(MANGLE_CXX_KEYWORDS): New macro.
	(append_gpp_mangled_name): Use MANGLE_CXX_KEYWORDS.
	(append_gpp_mangled_name): Likewise.
	* mangle.c: Move code to mangle_name.c.
	(mangle_member_name): Don't call cxx_keyword_p.

2009-06-12  Aldy Hernandez  <aldyh@redhat.com>

	* java-gimplify.c (java_gimplify_block): New argument to
	build_empty_stmt.
	* expr.c (force_evaluation_order): Same.
	* typeck.c: Add location to build_decl or PUSH_FIELD calls.
	* class.c: Same.
	* decl.c: Same.
	* jcf-parse.c: Same.
	* constants.c: Same.
	* resource.c: Same.
	* except.c: Same.
	* builtins.c: Same.
	* expr.c: Same.
	* java-tree.h (PUSH_FIELD): Add location field.

2009-06-09  Ian Lance Taylor  <iant@google.com>

	* verify.h: Remove extern "C".

2009-06-07  Ian Lance Taylor  <iant@google.com>

	* jcf-parse.c (handle_constant): Change local variable 'kind' to
	unsigned int.

2009-06-01  Ian Lance Taylor  <iant@google.com>

	* jcf-io.c (find_class): Use CONST_CAST.

2009-05-27  Ian Lance Taylor  <iant@google.com>

	* Make-lang.in ($(XGCJ)$(exeext)): Change $(COMPILER) to
	$(LINKER).
	(jc1$(exeext), jcf-dump$(exeext), jvgenmain$(exeext)): Likewise.

2009-05-26  Ian Lance Taylor  <iant@google.com>

	* Make-lang.in (jvspec.o): Use $(COMPILER).
	($(XGCJ)$(exeext), jc1$(exeext), jcf-dump$(exeext)): Likewise.
	(jvgenmain$(exeext), java/jcf-io.o, java/jcf-path.o): Likewise.

2009-05-12  Alexandre Oliva  <aoliva@redhat.com>

	* Make-lang.in (GCJ): Renamed to...
	(XGCJ): ... this.

2009-04-27  Ian Lance Taylor  <iant@google.com>

	* builtins.c (java_builtins): Add casts to enum type.
	* verify-impl.c (check_class_constant): Add cast to enum type.
	(check_constant, check_wide_constant): Likewise.

2009-04-27  Richard Guenther  <rguenther@suse.de>

	PR java/38374
	* constants.c (build_constants_constructor): Retain the old
	pointer type as valid TYPE_POINTER_TO after patching the
	type of the constant pool decl.

2009-04-24  Ian Lance Taylor  <iant@google.com>

	* jcf-parse.c (handle_constant): Add cast to enum type.

2009-04-21  Taras Glek <tglek@mozilla.com>

	* builtins.c: Update GTY annotations to new syntax
	* decl.c: Likewise
	* java-tree.h: Likewise
	* jcf.h: Likewise
	* lang.c: Likewise

2009-04-21  Joseph Myers  <joseph@codesourcery.com>

	* ChangeLog, ChangeLog.ptr, ChangeLog.tree-ssa: Add copyright and
	license notices.

2009-04-18  Ian Lance Taylor  <iant@google.com>

	* verify-impl.c (verify_instructions_0): Add cast to enum type.

2009-04-09  Paolo Bonzini  <bonzini@gnu.org>

	* builtins.c (compareAndSwapLong_builtin,
	compareAndSwapInt_builtin, compareAndSwapObject_builtin,
	VMSupportsCS8_builtin): Do not look at sync_compare_and_swap_cc.

2009-03-31  Richard Guenther  <rguenther@suse.de>

	* java-gimplify.c (java_gimplify_expr): Do not manually gimplify
	the first operand of binary and comaprison expressions.

2009-03-30  Joseph Myers  <joseph@codesourcery.com>

	PR rtl-optimization/323
	* lang.c (java_post_options): Set flag_excess_precision_cmdline.
	Give an error for -fexcess-precision=standard for processors where
	the option is significant.

2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* lang.opt: Unify help text for -Wdeprecated.

2009-02-03  Jakub Jelinek  <jakub@redhat.com>

	* jcf-dump.c (version): Update copyright notice dates.

2009-01-16  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/38835
	PR middle-end/36227
	* builtins.c (build_addr_sum): Use POINTER_PLUS_EXPR.

2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>

	PR bootstrap/38262
	* Make-lang.in (jc1): Add BACKENDLIBS, remove GMPLIBS.

2008-11-04  Andrew Haley  <aph@redhat.com>

	PR java/37068
	* jcf-parse.c (java_emit_static_constructor): Don't call
	cgraph_build_static_cdtor.  Rewrite.

2008-10-24  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (check-java-subtargets): New target.

2008-10-16  David Edelsohn  <edelsohn@gnu.org>

	PR target/35483
	* Make-lang.in (class.o): Depend on $(TM_P_H).
	(expr.o): Same.
	* class.c: Include tm_p.h.
	* expr.c: Include tm_p.h.

2008-10-14  Andrew Haley  <aph@redhat.com>

	* constants.c (build_constant_data_ref): Make sure we only build
	one copy of the decl for the constant pool.

2008-09-22  Andrew Haley  <aph@redhat.com>

	* expr.c (rules): Add new rule for
	gnu.java.lang.VMCPStringBuilder.toString.
	(rewrite_rule.new_classname): New field.
	(maybe_rewrite_invocation): Use new_classname field instead of
	DECL_CONTEXT (*method_p).
	Allow rewrite_arglist to be NULL.

2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
	(java_get_callee_fndecl): Kill.

2008-09-17  Jan Hubicka  <jh@suse.cz>

	PR c++/18071
	* class.c (add_method_1): Do not initialize DECL_INLINE.
	(make_local_function_alias): Likewise.
	* expr.c (rewrite_arglist_getcaller): Set DECL_UNINLINABLE.
	* lang.c (java_decl_ok_for_sibcall): Use DECL_UNINLINABLE.

2008-09-09  Richard Guenther  <rguenther@suse.de>

	* decl.c (build_result_decl): Remove no longer applicable
	promotion.

2008-09-05  David Daney  <ddaney@avtrex.com>

	* gcj.texi (-freduced-reflection): Clarify option's restrictions.

2008-08-21  David Daney  <ddaney@avtrex.com>

	* class.c (make_class_data): Don't add field_index when
	flag_reduced_reflection set.

2008-08-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* typeck.c (convert): Do not check for TARGET_FLOAT_FORMAT.

2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR 28875
	* lang.c (java_handle_option): Replace set_Wunused with
	warn_unused.

2008-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gcj.texi: Update copyright years.  Do not list GPL as
	Invariant Section.

2008-07-29  Jakub Jelinek  <jakub@redhat.com>

	* class.c (build_utf8_ref): Set DECL_SIZE and DECL_SIZE_UNIT
	from ctype's sizes.

	* class.c (build_utf8_ref): Pad initializer string to utf8const_type's
	alignment.

2008-07-29  Jan Hubicka  <jh@suse.cz>

	* lang.c (java_post_options): Remove handling of flag_no_inline.

2008-07-28  Richard Guenther  <rguenther@suse.de>

	Merge from gimple-tuples-branch.

	2008-07-18  Richard Guenther  <rguenther@suse.de>

	* expr.c: Include tree-iterator.h.
	* Make-lang.in (expr.o): Add tree-iterator.h dependency.

	2008-07-18  Aldy Hernandez  <aldyh@redhat.com>

	* java-gimplify.c: Include gimple.h instead of tree-gimple.h.
	* expr.c: Same.

	2008-07-14  Aldy Hernandez  <aldyh@redhat.com>

	* java-gimplify.c (java_gimplify_expr): Same.
	(java_gimplify_modify_expr): Same.
	* java-tree.h: Rename GENERIC_NEXT to TREE_CHAIN.

	2008-05-02  Diego Novillo  <dnovillo@google.com>

	* expr.c (build_java_throw_out_of_bounds_exception): Fix
	mixed declarations and code.

	2008-05-02  Doug Kwan  <dougkwan@google.com>

	* expr.c (build_java_throw_out_of_bounds_exception ): Wrap call to
	_Jv_ThrowBadArrayIndex with a COMPOUND_EXPR to return 0.

	2008-02-19  Diego Novillo  <dnovillo@google.com>

	http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00804.html

	* java-gimplify.c (java_gimplify_self_mod_expr): Change
	gimple_seq arguments to gimple_seq *.  Update all users.

	2007-11-26  Aldy Hernandez  <aldyh@redhat.com>

	* java-gimplify.c (java_gimplify_expr): Make pre_p and post_p
	sequences.
	(java_gimplify_self_mod_expr): Same.
	* java-tree.h (java_gimplify_expr): Make pre_p and post_p
	sequences.

2008-07-24  Jan Hubicka  <jh@suse.cz>

	* java/decl.c: Include cgraph.h
	(end_java_method): Remove non-unit-at-a-time code.
	(java_mark_decl_local): Likewise; sanity check that we don't touch
	finalized nodes.

2008-07-15  Jan Hubicka  <jh@suse.cz>

	* lang.c (java_init_options): Enable unit-at-a-time by default.

2008-07-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Make-lang.in (jvspec.o): Fix dependencies.

2008-07-06  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java/parse.o-warn): Remove.
	(java/jcf-io.o-warn): Remove.

2008-07-05  Tom Tromey  <tromey@redhat.com>

	* jcf-io.c: Don't include fnmatch.h.  Don't use JCF_USE_SCANDIR.
	(compare_path): Remove.
	(java_or_class_file): Likewise.
	(memoized_dirlist_entry): Likewise.
	(memoized_dirlist_hash): Likewise.
	(memoized_dirlist_lookup_eq): Likewise.
	(memoized_dirlists): Likewise.
	(caching_stat): Likewise.
	(find_class): Use stat.
	* jcf.h (JCF_USE_SCANDIR): Remove.

2008-06-30  Joshua Sumali  <jsumali@redhat.com>

	* Make-lang.in (JAVA_MANFILES): Add doc/aot-compile.1 and
	doc/rebuild-gcj-db.1
	(java.uninstall): Likewise.
	(java.maintainer-clean): Likewise.
	(aot-compile.pod): New rule.
	(rebuild-gcj-db.pod): New rule.
	(java.install-man): Install doc/aot-compile.1 and doc/rebuild-gcj-db.1
	* gcj.texi: Add new sections for aot-compile and rebuild-gcj-db.

2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (java/jcf-io.o-warn): New.

2008-06-24  Tom Tromey  <tromey@redhat.com>

	* jcf-path.c (jcf_path_init): Don't name variable 'try'.
	* expr.c (add_type_assertion): Rename argument.
	(build_java_arrayaccess): Don't name variable 'throw'.
	(ARRAY_NEW_MULTI): Don't name variable 'class'.
	* jcf-io.c (find_class): Don't name variable 'class'.
	* mangle.c (compression_table_add): Don't name variable 'new'.
	* constants.c (cpool_for_class): Rename argument.
	(alloc_constant_fieldref): Likewise.
	* jcf-parse.c (handle_innerclass_attribute): Don't name variable
	'class'.
	(read_class): Likewise.
	(parse_zip_file_entries): Likewise.
	(process_zip_dir): Likewise.
	* decl.c (java_mark_class_local): Rename argument.
	* class.c (GEN_TABLE): Use type_name, not typename.
	(gen_indirect_dispatch_tables): Likewise.
	(add_field): Rename argument.
	(is_compiled_class): Likewise.
	(safe_layout_class): Likewise.
	(emit_assertion_table): Likewise.
	* typeck.c (has_method): Rename argument.

2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (ident_subst, mangled_classname, unmangle_classname,
	gen_indirect_dispatch_tables, add_method_1,
	build_fieldref_cache_entry, make_local_function_alias,
	layout_class, java_treetreehash_find, java_treetreehash_new,
	split_qualified_name): Fix for -Wc++-compat.
	* constants.c (set_constant_entry, cpool_for_class): Likewise.
	* decl.c (make_binding_level, java_dup_lang_specific_decl,
	start_java_method): Likewise.
	* except.c (prepare_eh_table_type): Likewise.
	* expr.c (type_assertion_hash, note_instructions): Likewise.
	* java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC,
	MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Likewise.
	* jcf-io.c (jcf_filbuf_from_stdio, opendir_in_zip, find_class):
	Likewise.
	* jcf-parse.c (reverse, java_read_sourcefilenames,
	annotation_grow, rewrite_reflection_indexes, java_parse_file,
	process_zip_dir): Likewise.
	* jcf-path.c (add_entry, add_path, jcf_path_init,
	jcf_path_extdirs_arg): Likewise.
	* jcf-reader.c (jcf_parse_constant_pool): Likewise.
	* jvgenmain.c (do_mangle_classname): Likewise.
	* lang.c (put_decl_string): Likewise.
	* verify-impl.c (make_state_copy, make_state, add_new_state):
	Likewise.

2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gcj.texi: Expand TABs, remove whitespace from blank lines.

2008-06-14  Tom Tromey  <tromey@redhat.com>

	PR java/36247:
	* class.c (build_class_ref): Initialize this_classdollar when
	needed.

2008-05-23  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (give_name_to_class): Call find_sourcefile to find full
	pathname of source file.

2008-05-12  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* jcf-dump.c (print_constant): Use
	HOST_LONG_LONG_FORMAT.

2008-05-07  Kenneth Zadeck <zadeck@naturalbridge.com>

	* decl.c (java_init_decl_processing): Change DECL_IS_PURE to
	DECL_PURE_P.

2008-04-23  Paolo Bonzini  <bonzini@gnu.org>

	* class.c (build_utf8_ref): Don't set TREE_INVARIANT.
	(build_classdollar_field): Don't set TREE_INVARIANT.
	(get_dispatch_table): Don't set TREE_INVARIANT.
	(make_class_data): Don't set TREE_INVARIANT.
	(build_symbol_entry): Don't set TREE_INVARIANT.
	(emit_symbol_table): Don't set TREE_INVARIANT.
	* constants.c (build_constant_data_ref): Don't set TREE_INVARIANT.
	(build_ref_from_constant_pool): Don't set TREE_INVARIANT.
	* resource.c (compile_resource_data): Don't set TREE_INVARIANT.
	* expr.c (cache_cpool_data_ref): Don't set TREE_INVARIANT.

2008-04-03  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java_OBJS): New variable.

2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

	* java-tree.h (insert_block): Kill.
	* decl.c (insert_block): Kill.

2008-04-01  Joseph Myers  <joseph@codesourcery.com>

	* gcj.texi: Include gpl_v3.texi instead of gpl.texi
	* Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of
	gpl.texi.

2008-03-27  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in: Revert automatic dependency patch.

2008-03-25  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in: Removed most explicit .o targets.
	(java/jvspec.o): Reduce to variable setting.  Moved to java/.
	($(GCJ)$(exeext)): Update.
	(JAVA_OBJS): New variable.
	(JCFDUMP_OBJS): Reformat.
	(java_OBJS): New variable.
	(java/jvspec.o-warn): Update.
	(java/parse.o-warn): Remove.
	(JAVA_TREE_H): Remove.
	(java/jcf-io.o): Reduce to variable setting.
	(ALL_CPPFLAGS): Likewise.

2008-03-12  Paolo Bonzini  <bonzini@gnu.org>

	* mangle.c (java_mangle_decl): Remove dead check.

2008-03-11  Paolo Bonzini  <bonzini@gnu.org>

	* jcf-parse.c (java_parse_file): Assert binding levels are
	left in order.
	* lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, java_clear_binding_stack):
	Delete.

2008-03-02  Jakub Jelinek  <jakub@redhat.com>

	* jcf-dump.c (version): Update copyright notice dates.

2008-02-29  Tom Tromey  <tromey@redhat.com>

	* expr.c (expand_byte_code): Set DECL_FUNCTION_LAST_LINE on
	method.
	* java-tree.h (struct lang_decl_func): Remove obsolete comment.

2008-02-26  Tom Tromey  <tromey@redhat.com>

	* lang.c (java_post_options): Remove conditional.
	* expr.c (expand_byte_code): Remove old location code.
	* jcf-parse.c (set_source_filename): Remove old location code.
	(give_name_to_class): Likewise.
	(jcf_parse): Likewise.
	(duplicate_class_warning): Likewise.
	(parse_class_file): Likewise.
	(java_parse_file): Likewise.
	* decl.c (finish_method): Remove old location code.
	* class.c (push_class): Remove old location code.

2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR other/35107
	* Make-lang.in (jc1): Add $(GMPLIBS).

2008-01-23  David Daney  <ddaney@avtrex.com>

	* class.c (hide)  Rename to...
	(java_hide_decl) ... this throughout, and make public.
	* resource.c (Jr_count): Remove.
	(compile_resource_data): Call java_mangle_resource_name to generate
	decl name.  Make resource decl public and hidden.
	* mangle.c (java_mangle_resource_name): New function.
	* java-tree.h (java_hide_decl, java_mangle_resource_name): Declare
	functions.

2008-01-04  Andrew Haley  <aph@redhat.com>

	PR java/17779
	* jcf-parse.c (parse_zip_file_entries): Move decl to compile on
	C90.

2008-01-03  Andrew Haley  <aph@redhat.com>

	PR java/17779
	* jcf-parse.c (parse_zip_file_entries): Unset TYPE_ALIAS_SET if
	we're about to re-layout the type.

2007-12-20  Alexandre Oliva  <aoliva@redhat.com>

	* lang.c (java_classify_record): Don't return
	RECORD_IS_INTERFACE for now.

2007-12-18  Andrew Haley  <aph@redhat.com>

	PR java/27643
	* jcf-parse.c (java_parse_file): Remove call to
	java_mark_class_local.
	(parse_class_file): Reinstate call to java_mark_class_local here.
	* decl.c (java_mark_cni_decl_local): If the ASSEMBLER_NAME is
	already set, call java_mangle_decl() and make_decl_rtl() to
	rewrite its name as a hidden alias.

2007-12-15  Alexandre Oliva  <aoliva@redhat.com>

	PR debug/7081
	* lang.c (java_classify_record): New.
	(LANG_HOOKS_CLASSIFY_RECORD): Override.

2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR 34081/C++
	* decl.c (finish_method): Pass 'false' for the new
	allocate_struct_function parameter.

2007-11-26  Alexandre Oliva  <aoliva@redhat.com>

	* expr.c (build_jni_stub): Use the computed jni func type for
	variable meth.

2007-11-26  Alexandre Oliva  <aoliva@redhat.com>

	* class.c (JAVA_TREEHASHHASH_H): Use TYPE_UID.

2007-11-26  Alexandre Oliva  <aoliva@redhat.com>

	* expr.c (type_assertion_hash): Hash type uids rather than
	tree pointers.

2007-11-17  David Daney  <ddaney@avtrex.com>
	    Andrew Haley  <aph@redhat.com>

	* constants.c (build_constants_constructor):  Use POINTER_SIZE
	insead of BITS_PER_WORD in big-endian work around.

2007-11-07  Tom Tromey  <tromey@redhat.com>

	PR java/34019:
	* gcj.texi (Input Options): Add missing noun.

2007-11-02  Tom Tromey  <tromey@redhat.com>

	PR java/33765:
	* jcf-parse.c (java_parse_file): Ignore ZIPEMPTYMAGIC files.
	* zipfile.h (ZIPEMPTYMAGIC): New define.

2007-11-01  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java/jcf-dump.o): Depend on zipfile.h.
	(java/jcf-parse.o): Depend on jcf-reader.c, zipfile.h, and jcf.h.
	(java/jcf-io.o): Depend on zipfile.h.

2007-10-17  Richard Guenther  <rguenther@suse.de>

	* Make-lang.in (java/builtins.o): Add $(OPTABS_H) and $(EXPR_H)
	dependencies.

2007-10-03  Andrew Haley  <aph@redhat.com>

	PR java/33639
	* class.c (mangled_classname): Detect and replace illegal
	characters in assembly language symbols.
	(gen_indirect_dispatch_tables): Call mangled_classname() on
	the type.

2007-09-27  Jakub Jelinek  <jakub@redhat.com>

	* lang.c (java_print_error_function): Add third argument.

2007-09-15  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (struct lang_decl_func) <function_decl_body>:
	Remove.
	<init_final>: Likewise.
	* lang.c (java_dump_tree): Update.
	* java-tree.h (DECL_FUNCTION_BODY): Remove.

2007-09-11  Jan Hubicka <jh@suse.cz>

	* decl.c (java_expand_body): Kill.
	(LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.

2007-09-06  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (parse_class_file): Re-enter the current file.

2007-09-07  Roman Zippel  <zippel@linux-m68k.org>

	* boehm.c (mark_reference_fields): Move misaligned pointer check
	after JREFERENCE_TYPE_P test

2007-09-06  Roman Zippel  <zippel@linux-m68k.org>

	* boehm.c (mark_reference_fields): Don't use bitmap as gc_descr
	if pointer is misaligned.

2007-09-06  Tom Tromey  <tromey@redhat.com>

	* lang.c (java_post_options): Update.
	* jcf-parse.c (set_source_filename): Update.
	(give_name_to_class): Update.
	(jcf_parse): Update.
	(duplicate_class_warning): Update.
	(parse_class_file): Update.
	(java_parse_file): Update.
	* expr.c (expand_byte_code): Update.

2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>

	* decl.c (finish_method): Use set_cfun.

2007-09-04  Andrew Haley  <aph@redhat.com>

	* decl.c (java_init_decl_processing): Call "__cxa_end_cleanup"
	when using the ARM EABI.

2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* Make-lang.in (jvspec.o): Remove SHLIB_MULTILIB.

2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-parse.c (read_class, java_parse_file): Supply a TYPE for
	CONST_CAST.
	* jcf.h (JCF_FINISH): Likewise.

2007-08-28  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java.tags): Don't tag '*.y' files.

2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lang.c (java_decl_ok_for_sibcall): Likewise.

2007-08-21  Paul Brook  <paul@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>
	    Joseph Myers  <joseph@codesourcery.com>

	* jcf-dump.c (version): Use pkgversion_string.  Update copyright
	date.

2007-08-20  Richard Guenther  <rguenther@suse.de>

	* lang.c (java_tree_inlining_walk_subtrees): Remove.
	(LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Remove.

2007-08-17  Tom Tromey  <tromey@redhat.com>

	* typeck.c (find_method_in_interfaces): Update.
	* jcf-parse.c (load_class): Update.
	* java-gimplify.c (java_gimplify_component_ref): Removed.
	(java_gimplify_modify_expr): Update.  Removed pre_p and post_p
	arguments.
	(java_gimplify_expr): Update.
	* decl.c (java_init_decl_processing): Update.
	* class.c (set_constant_value): Update.
	(make_class_data): Update.
	(finish_class): Update.
	(build_static_field_ref): Update.
	(is_compiled_class): Update.
	(maybe_layout_super_class): Update.
	(layout_class): Update.
	(layout_class_method): Update.
	* java-tree.h (CAN_COMPLETE_NORMALLY): Removed.
	(lang_decl_var) <am, final_iud, cif>: Removed fields.
	(lang_decl_func) <init_calls_this>: Removed field.
	(lang_type) <dot_class, verify_method>: Removed fields.
	(FIELD_NESTED_ACCESS): Removed.
	(FIELD_NESTED_ACCESS_P): Removed.
	(DECL_FIELD_FINAL_IUD): Removed.
	(DECL_LOCAL_FINAL_IUD): Removed
	(LOCAL_FINAL_P): Removed.
	(FINAL_VARIABLE_P): Removed.
	(CLASS_FINAL_VARIABLE_P): Removed.
	(DECL_BIT_INDEX): Removed.
	(DECL_INIT_CALLS_THIS): Removed.
	(FIELD_LOCAL_ALIAS): Removed.
	(FIELD_LOCAL_ALIAS_USED): Removed.
	(FIELD_THISN): Removed.
	(DECL_FUNCTION_INIT_TEST_CLASS): Removed.
	(LOCAL_CLASS_INITIALIZATION_FLAG): Removed.
	(LOCAL_CLASS_INITIALIZATION_FLAG_P): Removed.
	(TYPE_DOT_CLASS): Removed.
	(TYPE_VERIFY_METHOD): Removed.
	(ID_CLASSDOLLAR_P): Removed.
	(enum java_tree_index) <JTI_CLASSDOLLAR_IDENTIFIER_NODE>:
	Removed.
	(classdollar_identifier_node): Removed.
	(TYPE_UNKNOWN): Removed.
	(CLASS_FROM_SOURCE_P): Removed.
	* expr.c (build_jni_stub): Update.
	(force_evaluation_order): Update.
	(build_java_empty_stmt): Update.
	(build_class_init): Update.
	(java_stack_swap): Update.
	(build_jni_stub): Update.

2007-08-17  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (LABEL_TYPE_STATE): Removed.
	(load_type_state): Removed.
	(LABEL_PC): Removed.
	(LABEL_VERIFIED): Removed.
	(type_states): Declare.
	* expr.c (type_states): New global.
	(load_type_state): Now static.  Use type_states.  Changed
	argument.
	(lookup_label): Don't set LABEL_PC.
	(expand_byte_code): Don't use LABEL_VERIFIED.
	(note_instructions): Initialize type_states.
	* verify-glue.c (vfy_note_stack_depth): Rewrote.
	(vfy_note_stack_type): Use type_states.
	(vfy_note_local_type): Likewise.

2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-parse.c (read_class, java_parse_file): Use CONST_CAST.
	* jcf.h (JCF_FINISH): Likewise.

2007-07-31  Nick Clifton  <nickc@redhat.com>

	* java-gimplify.c: Change copyright header to refer to version 3
	of the GNU General Public License and to point readers at the
	COPYING3 file and the FSF's license web page.
	* typeck.c, lang-specs.h, mangle_name.c, jcf-dump.c, class.c,
	decl.c, config-lang.in, jcf-parse.c, constants.c, Make-lang.in,
	resource.c, except.c, builtins.c, jvspec.c, java-tree.def,
	javaop.def, jcf-path.c, verify-glue.c, jcf-depend.c, lang.opt,
	jcf-reader.c, mangle.c, zextract.c, jcf-io.c, jcf.h, zipfile.h,
	verify.h, java-except.h, win32-host.c, expr.c, jvgenmain.c,
	parse.h, lang.c, java-tree.h, javaop.h, boehm.c: Likewise.

2007-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-io.c (find_class): Fix -Wcast-qual warnings.

2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lang.c (java_get_callee_fndecl): Constify.

2007-07-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mangle.c (set_type_package_list): Constify.
	* verify-glue.c (vfy_make_string): Delete.
	* verify.h (vfy_make_string): Likewise.

2007-07-26  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (push_labeled_block, pop_labeled_block): Remove.
	(LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY,
	EXIT_BLOCK_LABELED_BLOCK): Likewise.
	* lang.c (java_tree_inlining_walk_subtrees): Update.
	(java_dump_tree): Likewise.
	* java-tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRY_EXPR):
	Remove.
	* decl.c (push_labeled_block, pop_labeled_block): Remove.
	* java-gimplify.c (java_gimplify_labeled_block_expr,
	java_gimplify_exit_block_expr, java_gimplify_try_expr): Remove.
	(java_gimplify_expr): Update.

2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (java_treetreehash_hash, java_treetreehash_compare):
	Constify.
	* expr.c (type_assertion_eq): Likewise.
	* jcf-io.c (compare_path): Likewise.
	* jcf-parse.c (cmpstringp): Likewise.
	* verify-impl.c (get_one_type, compute_argument_types,
	compute_return_type): Likewise.

2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR target/32462
	PR libgcj/32465
	* class.c (hide): Wrap in HAVE_GAS_HIDDEN.

2007-07-12  Richard Guenther  <rguenther@suse.de>

	* expr.c (expand_java_return): RETURN_EXPR has void type.
	(build_jni_stub): Likewise.  Use a comparison against zero
	for null-pointer test in COND_EXPR.
	(build_field_ref): Build POINTER_PLUS_EXPR with correct
	type.  Convert result instead.
	(build_invokevirtual): Likewise.

2007-07-09  Geoffrey Keating  <geoffk@apple.com>

	PR 32617
	* lang.c (java_init): Remove setting of force_align_functions_log.
	* class.c (add_method_1): Set DECL_ALIGN of non-static method
	to cope with ptrmemfunc_vbit_in_pfn.

2007-07-03  David Daney  <ddaney@avtrex.com>

	* java/Make-lang.in (doc/gcj.info): Add $(gcc_docdir) to
	include path.
	(doc/gcj.dvi): Same.
	(doc/gcj.pdf): Same.
	(java/index.html): Same.

2007-06-15 Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* class.c (make_class_data): Build the index in sizetype.
	Use POINTER_PLUS_EXPR instead of PLUS_EXPR when
	adding to a pointer type.
	(build_symbol_entry): Likewise.
	* expr.c (build_java_arrayaccess): Likewise.
	(build_field_ref): Likewise.
	(build_known_method_ref): Likewise.
	(build_invokevirtual): Likewise.
	* except.c (build_exception_object_ref): Do a
	NEGATIVE and then a POINTER_PLUS_EXPR instead
	of a MINUS_EXPR.

2007-06-11  Rafael Ávila de Espíndola  <espindola@google.com>

	* typeck.c (java_signed_type): Remove.
	* lang.c (LANG_HOOKS_SIGNED_TYPE): Remove.
	* java-tree.h (java_signed_type): Remove.

2007-05-18  Geoffrey Keating  <geoffk@apple.com>

	* jcf-dump.c (HANDLE_MAGIC): Use 'unsigned long' for %lx.
	(print_constant): Likewise.

2007-05-14  Rafael Ávila de Espíndola  <espindola@google.com>

	* expr.c (build_java_binop): Use unsigned_type_for instead of
	java_unsigned_type.
	* java-tree.h (java_unsigned_type): Remove.
	* lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
	* typeck.c (java_unsigned_type): Remove.

2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* java-tree.h (lang_tree_node): Use GENERIC_NEXT
	instead of checking GIMPLE_STMT_P in chain_next.

2007-04-06  Colin Walters  <walters@redhat.com>

	https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161701
	* jcf-io.c (open_class): Copy 'filename'.

2007-04-03  Andrew Haley  <aph@redhat.com>

	* jvgenmain.c (main): Change main to use class$, not class$$.
	(do_mangle_classname): Likewise.
	* class.c (hide): New function.
	(add_field): Hide everything that shouldn't be visible outside a
	DSO.
	(build_static_class_ref): Likewise.
	(build_classdollar_field): Likewise.
	(make_class_data): Likewise.
	(layout_class_method): Likewise.
	* expr.c (special_method_p): New function.

	* class.c (push_class): Don't bogusly guess the source filename.
	* jcf-parse.c (give_name_to_class): Don't set input_location from
	DECL_ARTIFICIAL decls.

2007-03-30  Rafael Ávila de Espíndola  <espindola@google.com>

	* typeck.c (java_signed_or_unsigned_type): Removed.
	(java_signed_type): use get_signed_or_unsigned_type instead of
	java_signed_or_unsigned_type.
	(java_unsigned_type): Ditto.
	* lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Removed.
	* java-tree.h (java_signed_or_unsigned_type): Removed.

2007-03-26  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (JAVA_MANFILES): Removed grmiregistry.1.
	(java.maintainer-clean): Likewise.
	(java.install-man): Likewise.
	(.INTERMEDIATE): Removed grmiregistry.pod.
	(grmiregistry.pod): Removed.
	* gcj.texi (Invoking gcjh): Removed.
	(Invoking gjnih): Likewise.
	(Invoking grmiregistry): Likewise.
	(direntry): Updated.
	(Top): Likewise.
	(which-gcj): Removed.

2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>

	* Make-lang.in: Add install-pdf target as copied from
	automake v1.10 rules.

2007-02-27  Brooks Moses  <brooks.moses@codesourcery.com>

	* gcj.texi: Standardize title page.

2007-02-18  Kazu Hirata  <kazu@codesourcery.com>

	* class.c: Fix a comment typo.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead
	of build3.
	(BUILD_MONITOR_EXIT): Likewise.

	* java-gimplify.c (java_gimplify_component_ref): Use build_call_expr.
	(java_gimplify_modify_expr): Likewise.

	* class.c (cache_this_class_ref): Use build_call_expr.
	(build_static_field_ref): Likewise.
	(emit_indirect_register_classes): Likewise.
	(emit_register_classes): Likewise.

	* resource.c (write_resource_constructor): Use build_call_expr.

	* builtins.c (builtin_creator_function): Change interpretation of
	the second parameter to be the whole CALL_EXPR instead of the arglist.
	(max_builtin): Tweak parameter list.  Use new CALL_EXPR accessors.
	(min_builtin): Likewise.
	(abs_builtin): Likewise.
	(java_build_function_call_expr): Likewise.
	(convert_real): Likewise.
	(UNMARSHAL3): Likewise.
	(UNMARSHAL4): Likewise.
	(UNMARSHAL5): Likewise.
	(build_arglist_for_builtin): Delete.  Fix callers to use
	build_call_expr instead.
	(putObject_builtin): Tweak parameter list.  Use new CALL_EXPR
	accessors.
	(compareAndSwapInt_builtin): Likewise.
	(compareAndSwapLong_builtin): Likewise.
	(compareAndSwapObject_builtin): Likewise.
	(putVolatile_builtin): Likewise.
	(getVolatile_builtin): Likewise.
	(VMSupportsCS8_builtin): Likewise.
	(check_for_builtin): Pass entire CALL_EXPR to builtin expander
	instead of arglist.

	* expr.c (build_java_athrow): Use build_call_nary instead of build3.
	(build_java_throw_out_of_bounds_exception): Likewise.
	(java_check_reference): Likewise.
	(build_java_arraystore_check): Likewise.
	(build_newarray): Likewise.
	(build_anewarray): Likewise.
	(expand_java_multinewarray): Use build_call_list instead of build3.
	(build_java_monitor): Use build_call_nary instead of build3.
	(java_create_object): Likewise.
	(expand_java_NEW): Likewise.
	(build_instanceof): Likewise.
	(expand_java_CHECKCAST): Likewise.
	(build_java_soft_divmod): Likewise.
	(build_java_binop): Likewise.
	(build_field_ref): Likewise.
	(build_class_init): Likewise.
	(rewrite_arglist_getcaller): Use build_call_expr.
	(build_invokeinterface):  Use build_call_nary instead of build3.
	(expand_invoke): Use build_call_list instead of build3.
	(build_jni_stub): Use build_call_nary, build_call_list, or
	build_call_expr instead	of build3.
	(expand_java_field_op): Use build_call_expr instead of build3.
	(force_evaluation_order): Use new CALL_EXPR accessors.

	* lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors.

2007-02-15  David Daney  <ddaney@avtrex.com>

	* Make-lang.in (JAVA_MANFILES): Add doc/gc-analyze.1.
	(java.maintainer-clean):Add gc-analyze.1.
	(.INTERMEDIATE): Add gc-analyze.pod.
	(gc-analyze.pod): New rule.
	(java.install-man): Install gc-analyze.1
	* gcj.texi: Add new section for the gc-analyze program.

2007-02-07  Andrew Haley  <aph@redhat.com>

	* class.c (uncache_this_class_ref): New.
	* expr.c (build_jni_stub): Initialize the class.
	(expand_byte_code): Call uncache_this_class_ref after generating
	code.

2007-02-06  Tom Tromey  <tromey@redhat.com>

	PR java/30714:
	* jvspec.c (lang_specific_driver): Check for the '-' in '-I'.

2007-02-03  Kazu Hirata  <kazu@codesourcery.com>

	* java-tree.h, javaop.def, jcf-parse.c: Fix comment typos.

2007-02-02  Andrew Haley  <aph@redhat.com>

	* expr.c (expand_byte_code): Call cache_this_class_ref() and
	cache_cpool_data_ref().
	Set TYPE_CPOOL_DATA_REF.
	(cache_cpool_data_ref): New function.
	* constants.c (build_ref_from_constant_pool): Remove special-case
	code for flag_indirect_classes.
	(build_constant_data_ref): Move special-case code for
	flag_indirect_classes here from build_ref_from_constant_pool.
	* decl.c (finish_method): Move class initialization from here to
	cache_this_class_ref.
	* class.c (cache_this_class_ref): New function.
	(build_class_ref): Use this_classdollar for the ouput class.

2007-02-02  David Daney  <ddaney@avtrex.com>

	* class.c (is_compiled_class): Move check to avoid reloading
	current class.
	(layout_class_method): Don't calculate DECL_EXTERNAL if it is
	already set.

2007-02-01  Andrew Haley  <aph@redhat.com>

	PR java/30641
	* jcf-parse.c (jcf_parse): Clear the field_offsets bitmap.

2007-01-31  Kazu Hirata  <kazu@codesourcery.com>

	* class.c, jcf-parse.c: Fix comment typos.

2007-01-30  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Strings): Fix documentation for JvNewString.

2007-01-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* gcj.texi (Invoking gcjh, Invoking gjnih, Arrays): Fix some
	typos.

2007-01-30  Ben Elliston  <bje@au.ibm.com>

	* jvspec.c (lang_specific_driver): Remove unused classpath_args.

2007-01-29  Tom Tromey  <tromey@redhat.com>

	PR java/30607:
	* jvspec.c (lang_specific_driver): Handle separate -I argument.
	* lang.opt (-I): Add 'Separate'.

2007-01-29  Andrew Haley  <aph@redhat.com>

	* class.c (add_method_1): Mark fndecl as external unless we are
	compiling it into this object file.

2007-01-24  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): current_class is a
	type node, not a decl, so use TYPE_SYNTHETIC not CLASS_SYNTHETIC.

2007-01-22  Andrew Haley  <aph@redhat.com>

	* builtins.c (VMSupportsCS8_builtin): New function.

2007-01-23  Andrew Pinski  <pinskia@gmail.com>

	PR java/30454
	* jcf-io.c (opendir_in_zip): Close the file
	and free zipf before returning after an error.

2007-01-16  Tom Tromey  <tromey@redhat.com>

	* java-tree.def: Added copyright header.

2007-01-15  Tom Tromey  <tromey@redhat.com>

	* lang.c (dump_compound_expr) <EXPR_WITH_FILE_LOCATION>: Removed
	case.
	* java-gimplify.c (java_gimplify_expr) <EXPR_WITH_FILE_LOCATION>:
	Removed case.
	* java-tree.h (EXPR_WFL_EMIT_LINE_NOTE): Removed.
	(EXPR_WFL_NODE): Likewise.
	(EXPR_WFL_LINECOL): Likewise.
	(EXPR_WFL_FILENAME): Likewise.
	(EXPR_WFL_LINENO): Likewise.
	(build_expr_wfl, expr_add_location): Don't declare.
	(build_unknown_wfl): Removed.
	(EXPR_WFL_FILENAME_NODE): Removed.
	(EXPR_WFL_COLNO): Removed.
	(EXPR_WFL_SET_LINECOL): Removed.
	(DECL_FUNCTION_WFL): Removed.
	(DECL_FIELD_FINAL_WFL): Removed.
	(struct lang_decl_func) <wfl>: Removed field.
	<called_constructor>: Likewise.
	<inner_access>: Likewise.
	(struct lang_decl_var) <wfl>: Removed field.
	(DECL_CONSTRUCTOR_CALLS): Removed.
	(DECL_FUNCTION_ACCESS_DECL): Likewise.
	(DECL_FUNCTION_INNER_ACCESS): Likewise.
	(DECL_SPECIFIC_COUNT): Likewise.
	* java-tree.def (EXPR_WITH_FILE_LOCATION): Removed.
	* expr.c (build_expr_wfl): Removed.
	(expr_add_location): Likewise.

2007-01-12  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (main): Updated call to find_class.
	* lang.c (java_init): Removed dead code.
	* jcf-parse.c (read_class): Don't use java_source field.  Removed
	dead code.
	(parse_zip_file_entries): Don't use java_source field.
	(process_zip_dir): Likewise.
	(jcf_parse): Removed dead code.
	(java_parse_file): Likewise.
	(read_class): Updated call to find_class.
	* jcf-io.c (find_class): Don't use java_source field.  Removed
	'source_ok' argument, .java logic.
	* jcf.h (JCF) <java_source>: Removed field.
	(JCF_ZERO): Updated.	(find_class): Updated.
	* decl.c: Removed dead code.
	* class.c: Removed dead code.

2007-01-11  Tom Tromey  <tromey@redhat.com>

	* typeck.c (convert): Don't use flag_emit_class_files.
	* lang.c (java_post_options): Don't use flag_emit_class_files.
	(java_handle_option): Don't use flag_extraneous_semicolon or
	flag_redundant.
	* jcf-parse.c (HANDLE_CONSTANTVALUE): Don't use
	flag_emit_class_files.
	(load_class): Likewise.
	* java-tree.h (flag_emit_class_files): Don't declare.
	(STATIC_CLASS_INIT_OPT_P): Don't use flag_emit_class_files.
	(flag_extraneous_semicolon): Don't declare.
	(flag_not_overriding): Likewise.
	(flag_static_local_jdk1_1): Likewise.
	(flag_redundant): Likewise.
	* expr.c (build_newarray): Don't use flag_emit_class_files.
	* class.c (DEFAULT_ENABLE_ASSERT): Don't use
	flag_emit_class_files.
	(build_class_ref): Likewise.
	* builtins.c (check_for_builtin): Don't use
	flag_emit_class_files.

2007-01-10  Tom Tromey  <tromey@redhat.com>

	* lang.c (java_can_use_bit_fields_p): Removed.
	(LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.

2007-01-09  Andrew Haley  <aph@redhat.com>

	* expr.c (build_java_arrayaccess): Rewrite to generate array
	access in canonical form.
	(expand_java_arraystore): Use build_fold_addr_expr() on address of
	array access.

2007-01-03  Andrew Haley  <aph@redhat.com>

	PR java/28754
	* expr.c (expand_java_field_op): If we're initializing a field's
	declaring interface we should not also initialize the class
	context in which it was referenced.

2007-01-02  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (compiling_from_source, current_encoding,
	JTI_FINIT_IDENTIFIER_NODE, JTI_INSTINIT_IDENTIFIER_NODE,
	JTI_LENGTH_IDENTIFIER_NODE, JTI_SUPER_IDENTIFIER_NODE,
	JTI_CONTINUE_IDENTIFIER_NODE, JTI_ACCESS0_IDENTIFIER_NODE,
	JTI_WFL_OPERATOR): Removed
	(finit_identifier_node, instinit_identifier_node,
	length_identifier_node, super_identifier_node,
	continue_identifier_node, access0_identifier_node, wfl_operator):
	Removed.
	(cyclic_inheritance_report,
	DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND,
	DECL_FUNCTION_NAP, DECL_FUNCTION_SYNTHETIC_CTOR,
	DECL_FIXED_CONSTRUCTOR_P): Removed.
	(struct lang_decl_func) <smic, nap, synthetic_ctor, fixed_ctor>:
	Removed.
	(TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST, TYPE_II_STMT_LIST,
	TYPE_IMPORT_LIST, TYPE_IMPORT_DEMAND_LIST): Removed.
	(struct lang_type) <finit_stmt_list, clinit_stmt_list, ii_block,
	import_list, import_demand_list>: Removed.
	(java_layout_seen_class_methods, init_jcf_parse, init_src_parse,
	cxx_keyword_p): Removed.
	(DECL_FINIT_P, DECL_INSTINIT_P, ID_FINIT_P, ID_INSTINIT_P,
	TYPE_UNUSED, TYPE_UNDERFLOW, TYPE_UNEXPECTED,
	CLASS_ACCESS0_GENERATED_P, CLASS_HAS_FINIT_P,
	IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
	IS_AN_IMPORT_ON_DEMAND_P, COMPOUND_ASSIGN_P, SWITCH_HAS_DEFAULT,
	PRIMARY_P, MODIFY_EXPR_FROM_INITIALIZATION_P,
	CLASS_METHOD_CHECKED_P, FOR_LOOP_P, ANONYMOUS_CLASS_P,
	LOCAL_CLASS_P, ARG_FINAL_P, SUPPRESS_UNREACHABLE_ERROR,
	RESOLVE_PACKAGE_NAME_P, RESOLVE_TYPE_NAME_P, IS_BREAK_STMT_P,
	IS_CRAFTED_STRING_BUFFER_P, IS_INIT_CHECKED, CALL_USING_SUPER,
	NESTED_FIELD_ACCESS_IDENTIFIER_P, TOPLEVEL_CLASS_DECL_P,
	PURE_INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
	CALL_CONSTRUCTOR_P, CALL_EXPLICIT_CONSTRUCTOR_P,
	CALL_THIS_CONSTRUCTOR_P, CALL_SUPER_CONSTRUCTOR_P,
	FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, BLOCK_IS_IMPLICIT,
	BLOCK_EMPTY_P, IS_UNCHECKED_EXCEPTION_P, java_error_count,
	java_parse_abort_on_error, extract_field_decl): Removed.
	(finput): Declare.
	* lang.c: (compiling_from_source, current_encoding): Removed.
	(java_handle_option): Ignore -fencoding.
	* parse.h: Don't include lex.h.
	(java_error_count, int_fits_type_p, stabilize_reference, RULE,
	RECOVERED, DRECOVERED, RECOVER, DRECOVER, YYERROR_NOW,
	YYNOT_TWICE, CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
	INTERFACE_MODIFIERS, INTERFACE_INNER_MODIFIERS,
	INTERFACE_METHOD_MODIFIERS, INTERFACE_FIELD_MODIFIERS,
	MODIFIER_WFL, THIS_MODIFIER_ONLY, parse_error_context,
	ABSTRACT_CHECK, JCONSTRUCTOR_CHECK, exit_java_complete_class,
	CLASS_OR_INTERFACE, GET_REAL_TYPE, GET_TYPE_NAME,
	OBSOLETE_MODIFIER_WARNING, OBSOLETE_MODIFIER_WARNING2,
	BUILD_PTR_FROM_NAME, INCOMPLETE_TYPE_P,
	JAVA_MAYBE_GENERATE_DEBUG_INFO, JBSC_TYPE_P, JSTRING_P,
	JNULLP_TYPE_P, JDECL_P, TYPE_INTERFACE_P, TYPE_CLASS_P,
	IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS,
	MANGLE_OUTER_LOCAL_VARIABLE_NAME,
	MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID,
	MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING,
	SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
	UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP,
	AIPL_FUNCTION_CREATION, AIPL_FUNCTION_DECLARATION,
	AIPL_FUNCTION_CTOR_INVOCATION, AIPL_FUNCTION_FINIT_INVOCATION,
	ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
	ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED,
	LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
	LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
	LOOP_EXPR_BODY_BODY_EXPR, PUSH_LABELED_BLOCK, POP_LABELED_BLOCK,
	PUSH_LOOP, POP_LOOP, PUSH_EXCEPTIONS, POP_EXCEPTIONS,
	IN_TRY_BLOCK_P, EXCEPTIONS_P, ANONYMOUS_ARRAY_BASE_TYPE,
	ANONYMOUS_ARRAY_DIMS_SIG, ANONYMOUS_ARRAY_INITIALIZER,
	INVOKE_STATIC, INVOKE_NONVIRTUAL, INVOKE_SUPER, INVOKE_INTERFACE,
	INVOKE_VIRTUAL, jdep_code, struct _jdep, JDEP_DECL, JDEP_DECL_WFL,
	JDEP_KIND, JDEP_WFL, JDEP_MISC, JDEP_ENCLOSING, JDEP_CLASS,
	JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN, JDEP_TO_RESOLVE,
	JDEP_RESOLVED_DECL, JDEP_RESOLVED, JDEP_RESOLVED_P, struct
	jdeplist_s, jdeplists, CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN,
	JDEP_INSERT, SET_TYPE_FOR_RESOLUTION, WFL_STRIP_BRACKET,
	STRING_STRIP_BRACKETS, PROMOTE_RECORD_IF_COMPLETE,
	BLOCK_CHAIN_DECL, GET_CURRENT_BLOCK, EXPR_WFL_GET_LINECOL,
	EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION, QUAL_DECL_TYPE,
	GET_SKIP_TYPE, COMPLETE_CHECK_OP, COMPLETE_CHECK_OP_0,
	COMPLETE_CHECK_OP_1, COMPLETE_CHECK_OP_2, BUILD_APPEND,
	BUILD_STRING_BUFFER, BUILD_THROW, SET_WFL_OPERATOR,
	PATCH_METHOD_RETURN_ERROR, CHECK_METHODS, CLEAR_DEPRECATED,
	CHECK_DEPRECATED_NO_RESET, CHECK_DEPRECATED, REGISTER_IMPORT,
	CURRENT_OSB, struct parser_ctxt, GET_CPC_LIST, CPC_INNER_P,
	GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE, GET_CPC_DECL_NODE,
	GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
	GET_ENCLOSING_CPC_CONTEXT, INNER_ENCLOSING_SCOPE_CHECK, PUSH_CPC,
	PUSH_ERROR, POP_CPC, DEBUG_CPC, CPC_INITIALIZER_LIST,
	CPC_STATIC_INITIALIZER_LIST, CPC_INSTANCE_INITIALIZER_LIST,
	CPC_INITIALIZER_STMT, CPC_STATIC_INITIALIZER_STMT,
	CPC_INSTANCE_INITIALIZER_STMT, SET_CPC_INITIALIZER_STMT,
	SET_CPC_STATIC_INITIALIZER_STMT,
	SET_CPC_INSTANCE_INITIALIZER_STMT, JAVA_NOT_RADIX10_FLAG,
	java_complete_class, java_check_circular_reference,
	java_fix_constructors, java_layout_classes, java_reorder_fields,
	java_method_add_stmt, java_get_line_col, reset_report,
	java_init_lex, yyparse, java_parse, yyerror, java_expand_classes,
	java_finish_classes, ctxp, ctxp_for_generation,
	ctxp_for_generation_last): Removed.
	* expr.c (force_evaluation_order): Don't mention NEW_CLASS_EXPR.
	* mangle.c (utf8_cmp): New function.
	(cxx_keywords): New global.
	(cxx_keyword_p): New function.
	* jvspec.c (JAVA_START_CHAR): Removed obsolete comment.
	* java-tree.def (UNARY_PLUS_EXPR, NEW_ARRAY_EXPR,
	NEW_ANONYMOUS_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
	CASE_EXPR, DEFAULT_EXPR, JAVA_CATCH_EXPR, SYNCHRONIZED_EXPR,
	THROW_EXPR, CONDITIONAL_EXPR, INSTANCEOF_EXPR, NEW_ARRAY_INIT,
	CLASS_LITERAL, JAVA_EXC_OBJ_EXPR): Removed.
	* Make-lang.in (java.srcextra): Do nothing.
	(parse.c, keyword.h, gt-java-parse.h): Removed targets.
	(JAVA_OBJS): Don't mention deleted files.
	(java.mostlyclean): Likewise.
	(java.clean): Likewise.
	(JAVA_LEX_C): Removed.
	(buffer.o, check-init.o, parse.o): Remove unused targets.
	(typeck.o): Updated.
	* jcf-parse.c (read_class): Comment out unused code.
	(java_layout_seen_class_methods): New function.
	(parse_source_file_1, parse_source_file_2, parse_source_file_3):
	Removed.
	(java_parse_file): Comment out unused code.  Don't use 'ctxp'.
	(init_jcf_parse): Removed.
	* config-lang.in (gtfiles): Remove deleted files.
	* decl.c (java_init_decl_processing): Don't initialize
	finit_identifier_node, instinit_identifier_node,
	length_identifier_node, super_identifier_node,
	continue_identifier_node, access0_identifier_node.  Don't call
	init_jcf_parse.
	* class.c (cyclic_inheritance_report): New global.
	(add_method_1): Don't use
	DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND.
	(maybe_layout_super_class): Comment out code.
	(safe_layout_class): New function.
	* java-gimplify.c (java_gimplify_expr): Removed CASE_EXPR,
	DEFAULT_EXPR, NEW_ARRAY_INIT, JAVA_CATCH_EXPR, JAVA_EXC_OBJ_EXPR,
	UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_ANONYMOUS_ARRAY_EXPR,
	NEW_CLASS_EXPR, SYNCHRONIZED_EXPR, CONDITIONAL_EXPR,
	INSTANCEOF_EXPR, CLASS_LITERAL, THIS_EXPR.
	(java_gimplify_case_expr): Removed.
	(java_gimplify_default_expr): Likewise.
	(java_gimplify_new_array_init): Likewise.
	* parse.y: Removed.
	* keyword.gperf, keyword.h: Removed.
	* chartables.h: Removed.
	* check-init.c: Removed.
	* buffer.c, buffer.h: Removed.
	* convert.h: Removed.
	* gen-table.pl: Removed.
	* lex.c, lex.h: Removed.

2007-01-02  Andrew Haley  <aph@redhat.com>

	* expr.c (expand_java_arraystore): Make sure we perform a bounds
	check at runtime before we perform a type check.

2006-12-19  Andrew Haley  <aph@redhat.com>

	* decl.c: Bump minor BC ABI version.

2006-12-13  Gary Benson  <gbenson@redhat.com>

	* jcf-depend.c (jcf_dependency_add_file): Mark filename unused.

2006-12-12  Tom Tromey  <tromey@redhat.com>

	* lang-specs.h: Pass -M options to jc1.
	* jcf-depend.c (jcf_dependency_add_file): Don't emit
	dependencies.

2006-12-07  Mohan Embar  <gnustuff@thisiscool.com>

	* jcf-path.c (jcf_path_compute): Use platform PATH_SEPARATOR.

2006-12-06  Mohan Embar  <gnustuff@thisiscool.com>

	* lang-specs.h: Pass '%U'-based options as separate arguments.

2006-12-05  Tom Tromey  <tromey@redhat.com>

	PR java/29495:
	* jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Mark fields and
	classes as well.
	* class.c (add_field): Handle ACC_SYNTHETIC.
	(add_method_1): Likewise.  Handle bridge and varargs.
	(get_access_flags_from_decl): Handle synthetic, bridge, varargs,
	annotation.
	(set_class_decl_access_flags): Handle synthetic and annotation.
	* java-tree.h (METHOD_BRIDGE): New macro.
	(METHOD_VARARGS): Likewise.
	(TYPE_SYNTHETIC): Likewise.
	(TYPE_ANNOTATION): Likewise.
	(lang_type): New fields 'synthetic' and 'annotation'.
	(lang_decl_func): New fields 'varargs' and 'bridge'.

2006-12-04  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (rewrite_reflection_indexes): Don't do anything if
	there's no map.

2006-11-29  Gary Benson  <gbenson@redhat.com>

	* expr.c (rewrite_arglist_getcaller): Reorder.

2006-11-29  Andrew Haley  <aph@redhat.com>

	* expr.c (rewrite_arglist_getcaller): Remove DECL_INLINE.
	* lang.c (java_decl_ok_for_sibcall): Check for DECL_INLINE.

2006-11-23  Andrew Haley  <aph@redhat.com>

	* expr.c (rewrite_arglist_getcaller): New.
	(rewrite_arglist_getclass): Fix indentation.
	(rules): Add gnu.classpath.VMStackWalker.getCallingClass() and
	gnu.classpath.VMStackWalker.getCallingClassLoader().
	* builtins.c (initialize_builtins): Remove duplicate def'n of
	__sync_synchronize.
	Add __builtin_return_address.

2006-11-22  Andrew Haley  <aph@redhat.com>

	* jcf-reader.c (get_attribute): Mark attr_type unused.

	* builtins.c (compareAndSwapObject_builtin): Fix declaration.

2007-01-08  Richard Guenther  <rguenther@suse.de>

	* lex.c (do_java_lex): Use build_int_cst_wide_type.
	* jcf-parse.c (get_constant): Likewise.

2006-11-12  Jan Hubicka  <jh@suse.cz>

	* resource.c (compile_resource_data): Update for new varpool names.
	* java/class.c (build_utf8_ref): Likewise.

2006-11-12  David Daney  <ddaney@avtrex.com>

	PR java/29805
	* typeck.c (build_java_array_type): Increase buffer sizes.

2006-11-11  Richard Guenther  <rguenther@suse.de>

	* check-init.c (check_init): Remove handling of FIX_CEIL_EXPR,
	FIX_FLOOR_EXPR and FIX_ROUND_EXPR.

2006-11-06  Andrew Haley  <aph@redhat.com>

	* java-tree.h (CONSTANT_LazyFlag): New.
	* constants.c (build_constants_constructor): Mask CONSTANT_LazyFlag.
	* jcf-parse.c (handle_innerclass_attribute): Write attribute to
	reflection_data.
	(handle_constant): Return 0 for dummy cpool entries.
	Handle constants of kind Class.
	Handle constants of kind NameAndType.
	(handle_enclosingmethod_attribute): New.
	(handle_signature_attribute): New.
	(HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New.
	(HANDLE_SIGNATURE_ATTRIBUTE): New.
	(handle_constant): Use unmangle_classname()rather than calling
	identifier_subst() directly.

2006-11-02  Andrew Haley  <aph@redhat.com>

	* java-tree.h (FIELD_ENUM): New.
	(lang_decl_var.field_enum): New.
	(lang_type.enum_class): New.
	(CLASS_ENUM): New.
	* class.c (set_class_decl_access_flags): Handle enum types.
	(add_field): Handle enum fields.
	(get_access_flags_from_decl): Likewise.

	* class.c (make_class_data): Put reflection_data into rodata.

2006-11-01  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (field_offsets, bit_obstack): New variables.
	(jcf_parse): Write end marker to annotation_data.
	(java_parse_file): Create field_offsets bitmap.  Destroy it.
	(annotation_grow, annotation_rewrite_byte)
	(annotation_rewrite_short, annotation_rewrite_int)
	(annotation_read_short, annotation_write_byte)
	(annotation_write_short, annotation_write_int)
	(handle_long_constant, handle_constant, handle_element_value)
	(handle_annotation, handle_annotations)
	(handle_annotation_attribute, rewrite_reflection_indexes)
	(handle_member_annotations, handle_parameter_annotations)
	(handle_default_annotation): New functions.
	(HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE)
	(HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE)
	(HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE)
	(HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE)
	(HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): New definitions.
	* java-tree.h (enum jv_attr_type, enum jv_attr_kind): New.
	(TYPE_REFLECTION_DATA): New.
	(TYPE_REFLECTION_DATASIZE): New.
	* jcf.h (enum cpool_tag): Convert a bunch of #define constants to
	an enum.
	* jcf-reader.c (get_attribute): Pass field/method index and
	attribute type to get_attribute().
	* constants.c (find_class_or_string_constant): Make nonstatic.
	(cpool_for_class): Likewise.
	(build_constants_constructor): Separate string and scalar types.
	* class.c (make_class_data): Generate field_indexes permutation.
	Pass it to rewrite_reflection_indexes().
	(make_class_data): Generate constructor for reflection_data field.

2006-10-20  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Top): Don't mention jv-scan.
	(Invoking gcj): Likewise.
	(Invoking gcjh): Likewise.
	(Invoking gjnih): Likewise.
	(Invoking gij): Likewise.
	(Invoking gcj-dbtool): Likewise.
	(Invoking jv-scan): Removed.
	* parse-scan.y: Removed.
	* jv-scan.c: Removed.
	* config-lang.in (stagestuff): Don't mention jv-scan.
	* Make-lang.in (java): Removed jv-scan.
	(JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
	(JVSCAN_OBJS): Removed.
	(jv-scan$(exeext)): Likewise.
	(JAVA_MANFILES): Removed jv-scan.1.
	(java.uninstall): Don't mention jv-scan.
	(java.mostlyclean): Likewise.
	(java.maintainer-clean): Likewise.
	(.INTERMEDIATE): Likewise.
	(java/jv-scan.o): Removed.
	(jv-scan.pod): Likewise.
	(java.srcextra): Don't mention parse-scan.c.
	(java.mostlyclean): Likewise.
	(java/parse-scan.c): Removed.
	(java/parse-scan.o-warn): Removed.
	(java/parse-scan.o): Removed.

2006-10-20  Tom Tromey  <tromey@redhat.com>

	* lang.c (java_handle_option): Don't use
	jcf_write_base_directory.
	* jcf.h (jcf_write_base_directory): Removed.
	* parse.y (java_expand_classes): Don't call write_classfile.
	* config-lang.in (gtfiles): Removed jcf-write.c.
	* Make-lang.in (JAVA_OBJS): Removed jcf-write.o.
	(java/jcf-write.o): Removed.
	* jcf-parse.c (parse_class_file): Don't call write_classfile.
	* java-tree.h (write_classfile): Removed declaration.
	* jcf-write.c: Removed.

2006-10-20  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java): Removed gjnih, gcjh.
	(JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
	(GCJH_OBJS): Removed.
	(GJNIH_OBJS): Likewise.
	(gjnih$(exeext)): Likewise.
	(gcjh$(exeext)): Likewise.
	(JAVA_MANFILES): Removed gcjh.1, gjnih.1.
	(java.install-common): Don't special case gcjh.
	(java.uninstall): Don't mention gcjh, gjnih.
	(java.mostlyclean): Likewise.
	(java.maintainer-clean): Likewise.
	(.INTERMEDIATE): Likewise.
	(gcjh.pod): Removed.
	(gjnih.pod): Likewise.
	(GCJH_TARGET_INSTALL_NAME): Removed.
	(java/gjavah-jni.o): Removed.
	(java/gjavah.o): Likewise.
	* config-lang.in (stagestuff): Removed gjnih, gcjh.
	* gjavah.c: Removed.

2006-10-17  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (print_element_value): Expect a utf8 constant in the
	"string" case.

2006-10-17  Tom Tromey  <tromey@redhat.com>

	* jvgenmain.c (main): Handle -findirect-dispatch.
	* jvspec.c (jvgenmain_spec): Pass -findirect-dispatch to
	jvgenmain.

2006-10-06  Andrew Haley  <aph@redhat.com>

	* builtins.c (compareAndSwapInt_builtin): Check that we really do
	have a compare_and_swap builtin.
	(compareAndSwapLong_builtin): Likewise.
	(compareAndSwapObject_builtin): Likewise.

2006-10-04  Andrew Haley  <aph@redhat.com>

	* builtins.c (java_builtins): Add compareAndSwapInt,
	compareAndSwapLong, compareAndSwapObject, putOrderedInt,
	putOrderedLong, putOrderedObject, putIntVolatile, putLongVolatile,
	putObjectVolatile, getObjectVolatile, getIntVolatile,
	getLongVolatile, getLong.
	(UNMARSHAL3): New macro.
	(UNMARSHAL4): Likewise.
	(UNMARSHAL5): Likewise.
	(build_arglist_for_builtin): New function.
	(build_addr_sum, build_check_this): New functions.
	(putObject_builtin. compareAndSwapInt_builtin,
	compareAndSwapLong_builtin, compareAndSwapObject_builtin,
	putVolatile_builtin, getVolatile_builtin): New builtins.

2006-06-08  Andrew Haley  <aph@redhat.com>

	* expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
	get_symbol_table_index().
	(maybe_rewrite_invocation): Set SPECIAL if we need to access a
	private method.
	(build_known_method_ref): New arg: special.  Pass it to
	get_symbol_table_index.
	(get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
	the method list.
	(build_invokevirtual): New arg: special.  Pass it to
	get_symbol_table_index.
	(expand_invoke): New variable: special.
	Pass it to maybe_rewrite_invocation().
	Pass it to build_known_method_ref().
	* class.c (build_symbol_entry): Add new arg: special.  Use it to
	build the symbol table conbstructor.
	(emit_symbol_table): Extract SPECIAL from the method list and pass
	it to build_symbol_entry().
	* parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
	special accordingly.

2006-09-08  Andrew Haley  <aph@redhat.com>

	* class.c (layout_class_method): Use build_java_signature, not
	build_java_argument_signature.  Use lookup_java_method, not
	lookup_argument_method.

2006-08-16  Jakub Jelinek  <jakub@redhat.com>
	    Bryce McKinlay  <bryce@mckinlay.net.nz>

	* jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.

2006-07-18  Tom Tromey  <tromey@redhat.com>

	* lang.opt: Added missing -W options.

2006-07-12  Tom Tromey  <tromey@redhat.com>

	PR java/28329:
	* lang-specs.h: Pass '%U'-based options as separate arguments.
	Use -faux-classpath.
	* lang.c (java_handle_option): Handle OPT_faux_classpath.
	* lang.opt (faux-classpath): New option.

2006-07-07  Tom Tromey  <tromey@redhat.com>

	* class.c (make_class_data): Set value for reflection_data field.
	* decl.c (java_init_decl_processing): Add reflection_data field.

2006-07-07  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): Declare locals
	earlier.
	(HANDLE_SIGNATURE_ATTRIBUTE): Likewise.

2006-07-07  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (set_source_filename): Don't check for
	CLASS_FROM_CURRENTLY_COMPILED_P.
	Remove // comments.

2006-07-07  Andrew Haley  <aph@redhat.com>

	* java-tree.h (java_read_sourcefilenames): Declare.
	* lang.c (java_handle_option): Call java_read_sourcefilenames().
	* lang.opt (fsource-filename): New opt.
	* lang-specs.h: Add -fsource-filename.
	* jcf-parse.c (num_files, filenames): New variables.
	(reverse, cmpstringp, java_read_sourcefilenames,
	find_sourcefile): New.
	(set_source_filename): Call find_sourcefile to find the real name
	of a source file.

2006-06-27  Tom Tromey  <tromey@redhat.com>

	* jcf-reader.c (get_attribute): Handle EnclosingMethod,
	Signature, LocalVariableTypeTable, annotation attributes.
	* jcf-dump.c (HANDLE_ENCLOSINGMETHOD_ATTRIBUTE): New macro.
	(HANDLE_SIGNATURE_ATTRIBUTE): Likewise.
	(HANDLE_START_FIELD): Mention 'descriptor', not 'signature'.
	(HANDLE_METHOD): Likewise.
	(HANDLE_LOCALVARIABLETYPETABLE_ATTRIBUTE): New macro.
	(print_annotation): New function.
	(print_element_value): Likewise.
	(indent): Likewise.
	(HANDLE_RUNTIMEVISIBLEANNOTATIONS_ATTRIBUTE): New macro.
	(HANDLE_RUNTIMEINVISIBLEANNOTATIONS_ATTRIBUTE): Likewise.
	(print_parameter_annotations): New function.
	(HANDLE_RUNTIMEVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE): New macro.
	(HANDLE_RUNTIMEINVISIBLEPARAMETERANNOTATIONS_ATTRIBUTE):
	Likewise.
	(HANDLE_ANNOTATIONDEFAULT_ATTRIBUTE): Likewise.
	(print_annotations): New function.

2006-06-23  Tom Tromey  <tromey@redhat.com>

	* lang-specs.h: Default -fsource and -ftarget to 1.5.  If
	emitting class files, always use 1.5.
	* gcj.texi (Input Options): Document -fsource.
	(Code Generation): Document -ftarget.

2006-06-21  Tom Tromey  <tromey@redhat.com>

	PR java/28089:
	* expr.c (expand_java_field_op): Initialize field's declaring
	class.

2006-06-20  Tom Tromey  <tromey@redhat.com>

	* expr.c (push_value): Always flush quick stack.

2006-06-19  Tom Tromey  <tromey@redhat.com>

	* expr.c (push_value): Also flush quick stack if value is a
	component_ref.

2006-06-19  Tom Tromey  <tromey@redhat.com>

	* expr.c (push_value): Flush quick stack if value has side
	effects.

2006-06-13  Tom Tromey  <tromey@redhat.com>

	* class.c (is_compiled_class): Explicitly check for current
	class.

2006-06-09  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (decompile_method): Don't decompile a static field
	accessor method.

2006-06-06  Tom Tromey  <tromey@redhat.com>

	* lang-specs.h <jc1>: Add .jar file to command line if
	-fsaw-java-file.  Also, remove -ffilelist-file in this case.

2006-06-05  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (print_access_flags): Handle varargs, bridge,
	synthetic, enum, annotation.
	* jcf.h (ACC_BRIDGE): New macro.
	(ACC_VARARGS): Likewise.
	(ACC_SYNTHETIC): Likewise.
	(ACC_ENUM): Likewise.
	(ACC_ANNOTATION): Likewise.

2006-06-04  Tom Tromey  <tromey@redhat.com>

	* lang.opt (-fsaw-java-file, -fsource, -ftarget): New options.
	* jvspec.c (jvgenmain_spec): Remove -fsaw-java-file, -fsource,
	and -ftarget.
	(lang_specific_driver): Removed dead code.  Add -fsaw-java-file
	when needed.  Handle classpath-setting.
	* Make-lang.in ($(GCJ)$(exeext)): Link in jcf-path.o.
	* lang-specs.h: Rewrote.

2006-06-04  Tom Tromey  <tromey@redhat.com>

	* jcf-io.c (find_class): Set source_ok to 0.
	* jcf-parse.c (jcf_parse): Disable gnu.gcj.gcj-compiled warning.
	(parse_class_file): Don't call java_mark_class_local.
	(java_parse_file): Skip .java files.  Call java_mark_class_local
	before lowering any code.
	(parse_zip_file_entries): Don't call duplicate_class_warning
	here.
	(process_zip_dir): ... call it here.
	* class.c (add_field): Don't mark field external if it is being
	compiled into this object.
	(make_class_data): Handle situation where class_dtable_decl is
	created before Class is compiled.
	(is_compiled_class): Don't assume files in zip are compiled into
	this object.
	(layout_class_method): Don't mark method external if it is being
	compiled into this object.

2006-06-04  Tom Tromey  <tromey@redhat.com>

	* jcf-path.c (jcf_path_compute): New function.
	* jcf.h (jcf_path_compute): Declare.

2006-10-23 Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* decl.c: Include langhooks.h.
	(builtin_function): Remove.
	(java_init_decl_processing): Replace calls to builtin_function
	with add_builtin_function.
	* Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o.
	(java/decl.o): Depend on langhooks.h.
	* java-tree.h (builtin_function): Remove.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* Make-lang.in: Added "java.pdf", "gcj.pdf" target support.

2006-09-12  Tom Tromey  <tromey@redhat.com>

	* expr.c (push_value): Always flush quick stack.

2006-09-12  Tom Tromey  <tromey@redhat.com>

	PR java/29013:
	* jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Always note
	the push of the called method's return result.

2006-09-12  Tom Tromey  <tromey@redhat.com>

	* jvspec.c (lang_specific_driver): Read spec file even if
	-fsyntax-only.

2006-09-12  Tom Tromey  <tromey@redhat.com>

	PR java/28754:
	* expr.c (expand_java_field_op): Initialize field's declaring
	interface if necessary.

2006-09-12  Tom Tromey  <tromey@redhat.com>

	PR java/28892:
	* expr.c (expand_java_field_op): No error for assignments not in
	class initializer or constructor.

2006-08-22  Andrew Haley  <aph@redhat.com>

	* decl.c (java_add_stmt): Give the statement list a type.

2006-08-16  Jakub Jelinek  <jakub@redhat.com>
	    Bryce McKinlay  <bryce@mckinlay.net.nz>

	* jvspec.c (lang_specific_driver): Add -s-bc-abi when needed.

2006-08-10  Simon Martin  <simartin@users.sourceforge.net>

	PR java/8923
	* parse.y (build_incdec): Emit an error instead of an ICE if '++'
	or '--' is used with a constant operand.
	(java_complete_lhs): When processing a '++' or '--' expression,
	don't call java_complete_tree but java_complete_lhs, so that a
	static final variable operand is never replaced by its value. This
	avoids an ICE later on.
	(patch_unaryop): Fixed typo in comment.

2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.

2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>

	* builtins.c (check_for_builtin): If a builtin could result in a
	direct call being generated, don't use it if flag_indirect_dispatch
	is set.

2006-07-12  Bryce McKinlay  <mckinlay@redhat.com>

	* gcj.texi (Invocation): Corrections for Invocation API example.

2006-07-04  Andrew Haley  <aph@redhat.com>

	* class.c (build_fieldref_cache_entry): Set DECL_IGNORED_P on the
	entry.

2006-06-21  Andrew Haley  <aph@redhat.com>

	* java-tree.h (update_aliases): Remove
	* expr.c (expand_iinc): Remove call to update_aliases().
	(STORE_INTERNAL): Likewise.
	* decl.c (update_aliases, initialize_local_variable)
	(maybe_pushlevels): Set DECL_VALUE_EXPR for debugging decls.

2006-06-19  Andrew Haley  <aph@redhat.com>

	PR java/1305
	PR java/27908
	* expr.c (java_modify_addr_for_volatile): New function.
	(expand_java_field_op): Handle volatile fields.
	* java-gimplify.c (java_gimplify_component_ref): Call
	java_modify_addr_for_volatile to give the field_ref the correct
	volatile type.
	(java_gimplify_modify_expr): Likewise.
	* java-tree.h (java_modify_addr_for_volatile): New decl.

2006-06-17  Karl Berry  <karl@gnu.org>

	* gcj.texi (@dircategory): Use "Software development" instead
	of "Programming", following the Free Software Directory.

2006-06-16  Andrew Haley  <aph@redhat.com>

	* class.c (make_class_data): When using flag_indirect_classes,
	don't initialize the vtable of Class instances.

2006-06-09  Andrew Haley  <aph@redhat.com>

	PR java/1305
	PR java/27908
	* builtins.c (initialize_builtins): Add __sync_synchronize().
	* class.c (add_field): Mark volatile fields.
	* java-gimplify.c (java_gimplify_expr): Call new functions to
	handle self-modifying exprs and COMPONENT_REFs.
	(java_gimplify_component_ref): New.
	(java_gimplify_modify_expr): Add handling for volatiles.

2006-06-08  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (libgcj Runtime Properties): Document
	gnu.gcj.user.realname.

2006-06-08  Andrew Haley  <aph@redhat.com>

	* expr.c (build_field_ref): Pass NULL_TREE as SPECIAL arg to
	get_symbol_table_index().
	(maybe_rewrite_invocation): Set SPECIAL if we need to access a
	private method.
	(build_known_method_ref): New arg: special.  Pass it to
	get_symbol_table_index.
	(get_symbol_table_index): Put SPECIAL in the TREE_PURPOSE field of
	the method list.
	(build_invokevirtual): New arg: special.  Pass it to
	get_symbol_table_index.
	(expand_invoke): New variable: special.
	Pass it to maybe_rewrite_invocation().
	Pass it to build_known_method_ref().
	* class.c (build_symbol_entry): Add new arg: special.  Use it to
	build the symbol table conbstructor.
	(emit_symbol_table): Extract SPECIAL from the method list and pass
	it to build_symbol_entry().
	* parse.y (patch_invoke): Call maybe_rewrite_invocation() and set
	special accordingly.

2006-06-06  David Daney  <ddaney@avtrex.com>

	* gcj.texi (libgcj Runtime Properties): Document
	gnu.gcj.runtime.NameFinder.show_raw and
	gnu.gcj.runtime.NameFinder.remove_unknown.

2006-06-06  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (print_access_flags): Handle varargs, bridge,
	synthetic, enum, annotation.
	* jcf.h (ACC_BRIDGE): New macro.
	(ACC_VARARGS): Likewise.
	(ACC_SYNTHETIC): Likewise.
	(ACC_ENUM): Likewise.
	(ACC_ANNOTATION): Likewise.

2006-06-06  Mike Stump  <mrs@apple.com>

	* Make-lang.in: Rename to htmldir to build_htmldir to avoid
	installing during build.

2006-05-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gcj.texi (Extensions): Document the new gcj-dbtool-based
	classname-to-library resolution mechanism.
	Declare the old gnu.gcj.runtime.VMClassLoader.library_control
	mechanism deprecated.
	(libgcj Runtime Properties): Document
	gnu.gcj.runtime.VMClassLoader.library_control's new default.

2006-05-29  Jakub Jelinek  <jakub@redhat.com>

	* javaop.h (int16, int32, int64): Define to exactly 16 (resp. 32, 64)
	bit wide type.
	(jword): Define to uint64 on 64-bit arches.
	* jcf-dump.c (print_constant): Cast JPOOL_UINT to long.

2006-05-28  Kazu Hirata  <kazu@codesourcery.com>

	* class.c, except.c, expr.c, java-gimplify.c: Fix comment
	typos.

2006-05-26  Tom Tromey  <tromey@redhat.com>

	* expr.c (java_push_constant_from_pool): Handle 'ldc class'.
	* verify-glue.c (vfy_class_type): New function.
	* verify-impl.c (check_constant): Allow 'ldc class'.
	* verify.h (vfy_class_type): Declare.

2006-05-25  Andrew Haley  <aph@redhat.com>

	PR java/27756
	* decl.c (maybe_pushlevels): When variable ranges are non-nested
	update all lifetimes, not just the first one.

2006-05-24  Tom Tromey  <tromey@redhat.com>

	* java-tree.h: Fixed flag documentation.

2006-05-24  Tom Tromey  <tromey@redhat.com>

	PR libgcj/27729:
	* jcf.h (ACC_INVISIBLE): Changed value.

2006-05-24  Andrew Haley  <aph@redhat.com>

	PR java/27754
	* decl.c (java_add_stmt): Use a STATEMENT_LIST rather than a
	COMPOUND_EXPR.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	* lang.opt (femit-class-file): Remove VarExists.

2006-05-16  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (verify_instructions_0) <op_return>: Special case
	for Object.<init>.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR driver/26885
	* Make-lang.in ($(GCJ)$(exeext)): Replace gcc.o with
	$(GCC_OBJS).

2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>

	* Make-lang.in (java/decl.o): Add dependency on $(TARGET_H).
	(java/expr.o): Replace target.h with $(TARGET_H).
	(java/parse.o): Likewise.

2006-05-10  Andrew Haley  <aph@redhat.com>

	* class.c (emit_indirect_register_classes): Fix comment.

2006-05-04  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (uses_jv_markobj_p): Declare.
	* class.c (uses_jv_markobj_p): Removed.
	* boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): New define.
	(get_boehm_type_descriptor): Use it.
	(uses_jv_markobj_p): Moved from class.c.  Return bool.

2006-05-04  Tom Tromey  <tromey@redhat.com>

	* java-tree.def (THIS_EXPR): Now a tcc_expression.

2006-05-04  Andrew Haley  <aph@redhat.com>

	* class.c (make_field_value): Always build_address_of fdecl if
	there is an initializer.

2006-05-03  Andrew Haley  <aph@redhat.com>

	PR libgcj/27352
	* expr.c (maybe_rewrite_invocation): New function.
	(rewrite_arglist_getclass): Likewise.
	(rules): New.
	(expand_invoke): Call maybe_rewrite_invocation.
	* parse.y (patch_invoke): Likewise.
	* java-tree.h: (maybe_rewrite_invocation): New function.

2006-04-21  Andrew Haley  <aph@redhat.com>

	* lang.c (java_init): Handle flag_indirect_classes.
	* jvgenmain.c: Use "class$$" instead of "class$".
	* mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as
	DECLs.
	(mangle_class_field): Special case "class$$" as well as "class$".
	* constants.c (build_ref_from_constant_pool): If
	flag_indirect_classes, generate a ref into the heap.
	* decl.c (constants_field_decl_node,
	constants_data_field_decl_node): New.
	* class.c (build_static_class_ref): New.
	(build_classdollar_field): Factor out from build_class_ref().
	(make_field_value): Handle static fields in heap.
	(make_class_data): Make sure we get a static ref to class.
	Make class initializer const if flag_indirect_classes.
	(register_class): Build a class_ref for initialization if
	flag_indirect_classes.
	(emit_indirect_register_classes): New.

2006-04-08  Kazu Hirata  <kazu@codesourcery.com>

	* expr.c, gjavah.c: Fix comment typos.

2006-04-03  Andrew Haley  <aph@redhat.com>

	PR java/26858
	* expr.c (build_field_ref): Don't check the field offset if
	flag_syntax_only.

2006-03-30  Andrew Haley  <aph@redhat.com>

	PR java/26858
	* lang.c (java_attribute_table): New.
	(LANG_HOOKS_ATTRIBUTE_TABLE): Define.
	* expr.c (build_field_ref): Add a null pointer check for all
	fields of offset > 4k.  Don't do so for accesses via the this
	pointer, which we know can never be null.
	* class.c (build_java_method_type): Mark arg 1 of all nonstatic
	methods nonnull.

2006-03-30  Carlos O'Donell  <carlos@codesourcery.com>

	* Make-lang.in: Rename docdir to gcc_docdir.

2006-03-30  Tom Tromey  <tromey@redhat.com>

	PR java/26042:
	* parse.y (java_reorder_fields): Reset superclass field's size as
	well.

2006-03-28  Tom Tromey  <tromey@redhat.com>

	PR java/26390:
	* parse.y (find_most_specific_methods_list): Added 'class'
	argument.
	(lookup_method_invoke): Updated.

2006-03-15  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (generate_bytecode_insns): Use qualifying type for
	non-static method calls.

2006-03-15  David Daney  <ddaney@avtrex.com>

	* java-tree.h : Moved comment for TYPE_DOT_CLASS adjacent to its
	declaration.

2006-03-15  David Daney  <ddaney@avtrex.com>

	* lang.opt (-freduced-reflection): New option.
	* lang.c (java_post_options): Generate an error if
	-freduced-reflection used with -fjni or -findirect-dispatch.
	* java-tree.h (flag_reduced_reflection): Declare new variable.
	* boehm.c (get_boehm_type_descriptor): Indicate all pointers
	if bitmap overflows and flag_reduced_reflection set.
	* class.c (uses_jv_markobj_p): New function.
	(make_class_data): Moved generation of vtable to before
	reflection data, generate less reflection data if
	flag_reduced_reflection set.
	* gcj.texi: Document -freduced-reflection.

2006-03-15  Tom Tromey  <tromey@redhat.com>

	PR java/26638:
	* class.c (get_interface_method_index): Don't put <clinit> into
	interface table.

2006-03-15  Tom Tromey  <tromey@redhat.com>

	* parse.y (analyze_clinit_body): Ignore empty statements.

2006-03-08  David Daney  <ddaney@avtrex.com>

	* gcj.texi: Document -static-libgcj option.

2006-02-20  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (parse_class_file): Set input_location from
	current_class.

2006-02-15  Andrew Haley  <aph@redhat.com>

	* class.c (GEN_TABLE): Don't pushdecl *_SYMS_DECL here.
	(make_class_data): pushdecl_top_level TYPE_OTABLE_SYMS_DECL,
	TYPE_ATABLE_SYMS_DECL, TYPE_ITABLE_SYMS_DECL here.

2006-02-09  Andrew Haley  <aph@redhat.com>

	PR java/26192
	* expr.c (expand_invoke): Allow methods in arrays to be resolved
	in their superclass.

	* typeck.c (build_java_array_type): Generate TYPE_STUB_DECLs for
	array types.

2006-02-08  Tom Tromey  <tromey@redhat.com>

	PR java/22578:
	* check-init.c (check_init): Handle VIEW_CONVERT_EXPR.
	* builtins.c (convert_real): New function.
	(java_builtins): Handle Float.intBitsToFloat,
	Float.floatToRawIntBits, Double.longBitsToDouble,
	Double.doubleToRawLongBits.

2006-02-07  Andrew Haley  <aph@redhat.com>

	* expr.c (expand_invoke): (BC mode.)  If we find a method in a
	class other than the one in which we expected to find it, ignore
	the result.

	PR java/25535
	* constants.c (build_constants_constructor): move initializer into
	first halfword on a 64-bit big-endian machine.

2006-02-04  Tom Tromey  <tromey@redhat.com>

	PR java/25676:
	* builtins.c (max_builtin): Skip floating point 'max'.
	(min_builtin): Skip floating point 'min'.
	(check_for_builtin): Never return NULL_TREE.

2006-02-04  Tom Tromey  <tromey@redhat.com>

	PR java/26097:
	* expr.c (push_type): Avoid side effect in gcc_assert.

2006-02-04  Roger Sayle  <roger@eyesopen.com>

	* decl.c (java_init_decl_processing): Create char_type_node as a
	regular INTEGER_TYPE node.
	(push_promoted_type): Preserve TYPE_STRING_FLAG on types.
	* typeck.c (convert): No longer check for CHAR_TYPEs but instead
	test for char_type_node and promoted_char_type_node as special
	instances of INTEGER_TYPE tree codes.
	(promote_type,build_java_signature): Likewise.
	* jcf-write.c (adjust_typed_op): Likewise.
	* mangle.c (mangle_type): Likewise.
	* parse.y (do_unary_numeric_promotion): No longer handle CHAR_TYPE.
	* parse.h (JINTEGRAL_TYPE_P): Likewise.

2006-02-04  Andreas Tobler  <a.tobler@schweiz.ch>

	* expr.c (java_stack_swap): Revert gcc_assert patch.

2006-02-03  Ben Elliston  <bje@au.ibm.com>

	* java-gimplify.c: Use gcc_assert and gcc_unreachable throughout.
	* typeck.c: Likewise.
	* verify-impl.c: Likewise.
	* class.c: Likewise.
	* decl.c: Likewise.
	* jcf-parse.c: Likewise.
	* constants.c: Likewise.
	* check-init.c: Likewise.
	* jcf-write.c: Likewise.
	* verify-glue.c: Likewise.
	* mangle.c: Likewise.
	* expr.c: Likewise.
	* lang.c: Likewise.
	* boehm.c: Likewise.

2006-02-01  Jan Hubicka  <jh@suse.cz>

	* decl.c (end_java_method): Kill hack disabling unit-at-a-time.
	* lang.c (java_init_options): Set no_unit_at_a_time_default.

2006-01-30  Andrew Haley  <aph@redhat.com>

	PR java/21428
	* parse.y: (source_start_java_method): Mark DECL_ARTIFICIAL("this").

2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>

	* jv-scan.c (version), jcf-dump.c (version), gjavah.c (version):
	Update copyright notice dates.

2006-01-16  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* jvspec.c (lang_specific_spec_functions): Remove.

2006-01-06  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Arrays): Added more documentation for
	JvNewObjectArray.
	(Primitive types): Correct information about primitive classes.
	(Reference types): New node.
	(Index): New node.

2005-12-16  Alexandre Oliva  <aoliva@redhat.com>

	* jcf-parse.c (set_source_filename): Set the decl source location
	even when returning early.

2005-12-15  Tom Tromey  <tromey@redhat.com>
	    Andrew Haley  <aph@redhat.com>

	PR java/25429
	* parse.y (resolve_expression_name): Don't generate accessor
	methods for constant fields.

2005-12-13  Andrew Haley  <aph@redhat.com>

	PR java/25366
	PR java/25368
	* class.c (maybe_layout_super_class): Update current_class before
	calling do_resolve_class.

2005-12-12  H.J. Lu  <hongjiu.lu@intel.com>

	PR java/25330
	* jcf-write.c (write_classfile): Use PID in temporary class
	file. Save/restore errno when reporting error.

2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>

	PR java/9861
	* mangle.c (mangle_method_decl): Mangle Java methods by prepending 'J'
	to bare_function_type and including the return type
	* builtins.c (initialize_builtins) : Change builtin mangled name
	constants to conform to new mangling scheme

2005-12-08  Andrew Haley  <aph@redhat.com>

	PR libgcj/25265
	* java-tree.h (enum java_tree_index): Add JTI_SOFT_NOSUCHFIELD_NODE.
	(soft_abstractmethod_node): New.
	* expr.c (build_field_ref): Add in-line check for missing field.
	* decl.c (java_init_decl_processing): Add soft_nosuchfield_node.

2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Make-lang.in (java.all.build, java.install-normal): Remove.

2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Make-lang.in: Remove all dependencies on s-gtype, except for
	gt-java-parse.h.

2005-12-07  Richard Sandiford  <richard@codesourcery.com>

	* class.c (build_utf8_ref, emit_register_classes): Use
	switch_to_section and get_section.

2005-12-06  Tom Tromey  <tromey@redhat.com>

	PR java/25283:
	* parse.y (patch_new_array_init): Revert previous patch.
	(lookup_method_invoke): Use size-less array type when creating an
	anonymous constructor.

2005-12-05  Tom Tromey  <tromey@redhat.com>

	* parse.y (patch_new_array_init): Don't set length on array.

2005-12-02  Richard Guenther  <rguenther@suse.de>

	* java-gimplify.c (java_gimplify_labeled_block_expr): Use
	buildN instead of build.
	* class.c (finish_class): Likewise.
	* expr.c (java_create_object): Likewise.

2005-11-28  Tom Tromey  <tromey@redhat.com>

	PR java/18278:
	* expr.c (build_jni_stub): Unwrap the return value.
	* java-tree.h (soft_unwrapjni_node): New define.
	(enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE.
	* decl.c (java_init_decl_processing): Initialize
	soft_unwrapjni_node.

2005-11-24  Bryce McKinlay  <mckinlay@redhat.com>

	* gcj.texi (gij options): Add -Xss documentation.

2005-11-08  Wil Mahan  <wmahan@gmail.com>

	PR java/23617
	* zextract.c (read_zip_archive): Fix out of memory error when
	reading jar files with zip-style comments.

2005-11-07   Terry Laurenzo   <tlaurenzo@gmail.com>

	* gjavah.c (HANDLE_CODE_ATTRIBUTE): Only define for ELF Object
	formats.
	* gjavah.c (decompile_method): Add ATTRIBUTE_UNUSED

2005-10-12  Nathan Sidwell  <nathan@codesourcery.com>
	    Wil Mahan <wmahan@gmail.com>

	PR java/23620
	* class.c (make_class): Create empty binfo here.
	(set_super_info): Only create binfo if we have superclasses.

2005-10-03  Ranjit Mathew  <rmathew@gcc.gnu.org>

	PR java/24127
	* parse.y (method_header): Make the result of the rule a NULL_TREE
	when a parsing error occurs.

2005-09-29  Tom Tromey  <tromey@redhat.com>

	PR java/24120:
	* jcf-io.c (memoized_dirlist_hash): New function.
	(caching_stat): Use it.

2005-09-21  Ranjit Mathew  <rmathew@gcc.gnu.org>

	PR java/21418
	* class.c (inherits_from_p): Try to lay out super class
	if it is not already laid out.
	(maybe_layout_super_class): Handle the case where SUPER_CLASS
	is a NULL_TREE.

2005-09-18  James A. Morrison  <phython@gcc.gnu.org>

	* builtins.c (max_builtin, min_builtin, abs_builtin,
	java_build_function_call_expr): Use fold_buildN.
	* class.c (layout_class_method): Likewise.
	* expr.c (java_truthvalue_conversion, build_java_jsr,
	build_java_arrayaccess, expand_java_arrayload, expand_iinc,
	build_java_binop, build_field_ref, expand_compare,
	build_known_method_ref, build_invokevirtual,
	process_jvm_instruction): Likewise.
	* parse.y (patch_binop, patch_exit_expr): Likewise.
	* typeck.c (convert_ieee_real_to_integer): Likewise.
	(convert): Don't call fold after convert_ieee_real_to_integer.

2005-09-14  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/23891
	* parse.y (maybe_create_class_interface_decl): Set TYPE_PACKAGE for
	the newly created type. Set import lists here, not in create_class.
	(jdep_resolve_class): Set current_class.
	(do_resolve_class): Use current_class's TYPE_PACKAGE to determine
	the current package context, not ctxp->package.
	(cicp_cache): Removed.
	(class_in_current_package): Simplify implementation using TYPE_PACKAGE.
	* jcf-parse.c (give_name_to_class): Set TYPE_PACKAGE.
	* java-tree.h (TYPE_PACKAGE): New macro.
	(struct lang_type): New member 'package'.

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.

2005-09-06  Andrew Pinski  <pinskia@physics.uc.edu>

	* java-gimplify.c (java_gimplify_block): NULL out the old BLOCK's
	BLOCK_EXPR_BODY before returning the new BIND_EXPR.

2005-09-06  Kazu Hirata  <kazu@codesourcery.com>

	* check-init.c, decl.c, expr.c, gcj.texi, java-tree.h,
	jcf-parse.c, jcf.h, parse.h, parse.y, typeck.c: Fix comment
	typos.  Follow spelling conventions.

2005-09-05  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/23431
	* typeck.c (lookup_do): Look up interfaces for the original class,
	not the base class.
	* parse.y (java_check_regular_methods): Fix diagnostic message for
	more restrictive overriding of a method from an interface.

2005-08-16  Tom Tromey  <tromey@redhat.com>

	* class.c (make_class_data): Always emit JV_STATE_PRELOADING for
	class' initial state.

2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/22113
	* lex.c (do_java_lex): Define MAX_TOKEN_LEN. Avoid overflowing
	`literal_token' for large numeric input tokens.

2005-08-16  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/19870
	* parse.y (nested_field_access_p): Rename to nested_member_access_p
	and expand to handle method accesses across nested classes.
	(build_outer_method_access_method): Rename to
	build_nested_method_access_method.  Minor adjustments to comments.
	(resolve_expression_name): Use the newly-renamed
	nested_member_access_p method.
	(resolve_qualified_expression_name): Likewise.
	(patch_method_invocation): Also consider static methods for access
	method generation.  Minor adjustments to comments.
	(maybe_use_access_method): Use the more general
	nested_memeber_access_p to determine access across nested class
	boundaries.  Allow THIS_ARG to be NULL (for static methods).

2005-08-15  Tom Tromey  <tromey@redhat.com>

	PR java/23300.
	* expr.c (build_field_ref): Don't generate otable reference when
	DECL_FIELD_OFFSET is 0.
	* class.c (maybe_layout_super_class): Pass outer class to
	do_resolve_class.

2005-08-15  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (LABEL_IN_SUBR): Removed.
	(LABEL_IN_SUBR): Likewise.
	(LABEL_IS_SUBR_START): Likewise.
	(LABEL_SUBR_START): Likewise.
	(LABEL_SUBR_CONTEXT): Likewise.
	(LABEL_CHANGED): Likewise.
	(LABEL_RETURN_LABEL): Likewise.
	(LABEL_RETURN_TYPE_STATE): Likewise.
	(LABEL_RETURN_LABELS): Likewise.
	(RETURN_MAP_ADJUSTED): Likewise.
	(LABEL_PENDING_CHAIN): Likewise.

2005-08-15  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (JAVA_OBJS): Removed verify.o
	(java/verify.o): Removed.
	* verify.c: Removed.
	* lang.c (flag_new_verifier): Removed.
	(java_post_options): Updated.
	* java-tree.h (flag_new_verifier): Removed.
	(verify_jvm_instructions): Removed.
	* expr.c (pop_type_0): Assume flag_new_verifier is true.
	(build_java_check_indexed_type): Likewise.
	(expand_java_arraystore): Likewise.
	(expand_java_arrayload): Likewise.
	(pop_arguments): Likewise.
	(expand_byte_code): Likewise.
	(process_jvm_instruction): Likewise.

2005-08-10  Andrew Haley  <aph@redhat.com>

	* java-gimplify.c (java_gimplify_modify_expr): Fix any pointer
	type mismatches to make legal GIMPLE.

2005-08-10  Robin Green <greenrd@greenrd.org>

	PR java/23230:
	* parse.y (maybe_use_access_method): Generalize check from
	java.lang.Object to any superclass of current_class

2005-08-08  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (build_class_ref): Wrap the primary class type in a
	NOP_EXPR.
	* parse.y (java_complete_lhs) <COMPONENT_REF case>: Extract the
	primary class type from the NOP_EXPR in which it was placed.

2005-07-28  Diego Novillo  <dnovillo@redhat.com>

	* expr.c (expand_load_internal): Fix missing parens in
	predicate.

2005-07-28  Andrew Haley  <aph@redhat.com>

	* expr.c (expand_load_internal): Convert to destination type.

2005-07-22  Manfred Hollstein  <mh@suse.com>

	* verify-impl.c (check_class_constant): Fix uninitialised warnings.
	(check_constant): Likewise.
	(check_wide_constant): Likewise.

2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>

	Make CONSTRUCTOR use VEC to store initializers.
	* check-init.c (check_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* class.c (make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table,
	emit_assertion_table): Use build_constructor_from_list instead of
	build_constructor.
	* constants.c (build_constants_constructor): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Update to cope with
	VEC in CONSTRUCTOR_ELTS.
	* java-tree.h (START_RECORD_CONSTRUCTOR, PUSH_SUPER_VALUE,
	PUSH_FIELD_VALUE, FINISH_RECORD_CONSTRUCTOR): Create a VEC instead
	of a TREE_LIST.
	* jcf-write.c (generate_bytecode_insns): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	* parse.y (build_new_array_init): Use build_constructor_from_list
	instead of build_constructor.
	(patch_new_array_init): Update to cope with VEC in
	CONSTRUCTOR_ELTS.
	(array_constructor_check_entry): Likewise.

2005-07-12  Tom Tromey  <tromey@redhat.com>

	* jvspec.c (lang_specific_driver): Put filelist_filename first on
	command line.

2005-07-12  Tom Tromey  <tromey@redhat.com>

	PR java/19674:
	* parse-scan.y (interface_member_declaration): Added
	empty_statement.

2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

	* java-tree.h (LABEL_RETURN_LABELS): Use decl_non_common.
	(LABEL_PENDING_CHAIN): Ditto.
	(LABEL_PC): Ditto.
	(DECL_BIT_INDEX): Ditto.

2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/18119
	* parse.y (inner_class_accessible): New function. Logic moved from
	check_inner_class_access.
	(check_inner_class_access): Use inner_class_accessible.
	(resolve_inner_class): Simplify arguments. Create circularity hash
	here. Keep looking for classes if we found one that was inaccessible.
	Return the inaccessible class only if there is no other match.
	(do_resolve_class): Update for new resolve_inner_class arguments.
	Don't create circularity_hash here.

2005-07-07  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/21045
	* parse.y (add_exception_to_throws): New function.
	(purge_unchecked_exceptions): Removed.
	(get_constructor_super): Renamed from verify_constructor_super. Now
	returns the super constructor after verification.
	(java_complete_expand_method): Don't use purge_unchecked_exceptions
	or save/restore the exception list.
	(check_thrown_exceptions): Add uncaught exceptions in anonymous
	class initializers and constructors to the throws clause of the method.

2005-07-05  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/19674
	* parse.y (interface_member_declaration): Allow empty statements in
	interface declarations.

2005-07-05  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (parse.o): Adjust dependencies.
	* parse.y: Include tree-dump.h.

2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>

	* class.c, decl.c, expr.c: Use '+' flag instead of %J.  Use 'q'
	flag for quoting.

2005-07-01  Andrew Pinski  <pinskia@physics.uc.edu>

	* parse.y (issue_warning_error_from_context): Call
	pp_output_formatted_text to be able to get the buffer.

2005-06-30  Andrew Pinski  <pinskia@physics.uc.edu>

	* parse.y (issue_warning_error_from_context): Update for the
	renaming of pp_format_text to pp_format.

2005-06-28  Paul Brook  <paul@codesourcery.com>

	* decl.c (java_init_decl_processing): Call
	default_init_unwind_resume_libfunc.

2005-06-27  Tom Tromey  <tromey@redhat.com>

	PR java/21540, PR java/13788:
	* parse.y (java_complete_lhs) <CASE_EXPR>: Use
	fold_constant_for_init.
	(patch_binop): Added 'folding' argument.  Updated all callers.
	(patch_unaryop) <NOP_EXPR>: New case.
	(fold_constant_for_init) <NOP_EXPR>: Likewise.
	(fold_constant_for_init) <COND_EXPR>: Fix sense of test.

2005-06-25  Jan Hubicka  <jh@suse.cz>

	* builtins.c (define_builtin): Accept new flags parameter.
	(initialize_builtins): Mark the builtins const and nothrow accordingly.

2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>

	* all files: Update FSF address in copyright headers.

2005-06-24  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (verify_instructions_0): Correctly handle
	situation where PC falls off end.

2005-06-23  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/20697
	* parse.y (find_most_specific_methods_list): Remove special case for
	inner classes.

2005-06-15  Tom Tromey  <tromey@redhat.com>

	PR libgcj/21906:
	* class.c (make_method_value): Use soft_abstractmethod_node for
	abstract method.
	* java-tree.h (soft_abstractmethod_node): New define.
	(JTI_SOFT_ABSTRACTMETHOD_NODE): New enum constant.
	* decl.c (java_init_decl_processing): Initialize
	soft_abstractmethod_node.

2005-06-13  Geoffrey Keating  <geoffk@apple.com>

	* Make-lang.in (rule for installing gcj.1): Depends on installdirs.

2005-06-13  Per Bothner  <per@bothner.com>

	* expr.c (int highest_label_pc_this_method,
	start_label_pc_this_method): New globals.
	(lookup_label): Add start_label_pc_this_method to pc for label, and
	update highest_label_pc_this_method.  This prevents conflicts between
	labels from different methods.
	* java-tree.h: Declare new globals.
	* jcf-parse.c (parse_class_file): If needed bump
	start_label_pc_this_method and reset highest_label_pc_this_method.

2005-06-13  Tom Tromey  <tromey@redhat.com>

	PR java/21844:
	* parse.y (nested_field_access_p): Handle case where outer field
	is inherited by enclosing class.

2005-06-12  Per Bothner  <per@bothner.com>

	* class.c (inherits_from_p): Do load_class if needed.

2005-06-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (error): Add ATTRIBUTE_PRINTF_1.
	* java-tree.h (parse_error_context): Move...
	* parse.h (parse_error_context): ... here, add ATTRIBUTE_GCC_DIAG.
	* parse.y (parse_warning_context): Add ATTRIBUTE_GCC_DIAG.
	* verify-impl.c (debug_print): Add ATTRIBUTE_PRINTF_1.

2005-06-08  Roger Sayle  <roger@eyesopen.com>

	* typeck.c (convert): Only clear TREE_OVERFLOW on INTEGER_CST nodes.

2005-06-06  Jakub Jelinek  <jakub@redhat.com>

	* jv-scan.c (fatal_error, warning, warning0): Use gmsgid instead of
	msgid for argument name.
	* gjavah.c (error): Likewise.
	* java-tree.h (parse_error_context): Likewise.
	* parse.y (parse_error_context, parse_warning_context,
	issue_warning_error_from_context): Likewise.

2005-06-01  Tom Tromey  <tromey@redhat.com>

	PR java/21722:
	* class.c (build_static_field_ref): Don't fold constant fields if
	current class is from a .class file and we're using indirect
	dispatch.

2005-05-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* java/verify-glue.c: Don't include errors.h and include toplev.h.
	* java/Make-lang.in: Updates dependencies.

2005-05-26  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/19870.
	* java-tree.h (OUTER_FIELD_ACCESS_IDENTIFIER_P): Rename to
	NESTED_FIELD_ACCESS_IDENTIFIER_P.
	(FIELD_INNER_ACCESS): Rename to FIELD_NESTED_ACCESS.
	(FIELD_INNER_ACCESS_P): Rename to FIELD_NESTED_ACCESS_P.
	* jcf-write.c (generate_classfile): Use
	NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
	OUTER_FIELD_ACCESS_IDENTIFIER_P.
	* parse.y (build_outer_field_access): Rename to
	build_nested_field_access. Support static fields and outer-to-inner
	class accesses.
	(outer_field_access_p): Rename to nested_field_access_p. Support
	static fields and generalise to outer-to-inner class and sibling
	inner class accesses.
	(outer_field_expanded_access_p): Rename to
	nested_field_expanded_access_p and support static fields.
	(outer_field_access_fix): Rename to nested_field_access_fix and
	support static fields.
	(build_outer_field_access_expr): Rename to
	build_nested_field_access_expr and support static fields.
	(build_outer_field_access_methods): Rename to
	build_nested_field_access_methods and support static fields. For
	static fields, generate accessors without class instance parameters.
	(build_outer_field_access_method): Rename to
	build_nested_field_access_method and support static fields.
	(build_outer_method_access_method): Use
	NESTED_FIELD_ACCESS_IDENTIFIER_P instead of
	OUTER_FIELD_ACCESS_IDENTIFIER_P.
	(resolve_expression_name): Consider static field accesses across
	nested classes.
	(resolve_qualified_expression_name): Likewise.
	(java_complete_lhs): Use nested_field_access_fix instead of
	outer_field_access_fix.
	(patch_unary_op): Rename outer_field_flag to nested_field_flag.
	Use nested_field_expanded_access_p instead of
	outer_field_expanded_access_p. Use nested_field_access_fix instead
	of outer_field_access_fix.
	(check_thrown_exceptions): Use NESTED_FIELD_ACCESS_IDENTIFIER_P
	instead of OUTER_FIELD_ACCESS_IDENTIFIER_P.

2005-05-26  Bryce McKinlay  <mckinlay@redhat.com>

	* decl.c (GCJ_BINARYCOMPAT_ADDITION,
	GCJ_BOOTSTRAP_LOADER_ADDITION): Removed.
	(FLAG_BINARYCOMPAT_ABI, FLAG_BOOTSTRAP_LOADER,
	MINOR_BINARYCOMPAT_ABI_VERSION): New.
	(GCJ_CURRENT_BC_ABI_VERSION): Use new method to calculate version ID.
	(parse_version): Calculate version ID using new method. Use bit-flags
	for flag_indirect_dispatch and flag_bootstrap_classes.

2005-05-25  Richard Henderson  <rth@redhat.com>

	PR libgcj/21692
	* Make-lang.in (java/mangle.o): Depend on LANGHOOKS_DEF_H.
	* class.c (build_class_ref): Set DECL_CLASS_FIELD_P and
	DECL_CONTEXT; avoid pushdecl_top_level.
	(build_dtable_decl): Set DECL_VTABLE_P and DECL_CONTEXT.
	(layout_class): Don't SET_DECL_ASSEMBLER_NAME.
	(layout_class_method): Likewise.
	* decl.c (java_mark_cni_decl_local): New.
	(java_mark_class_local): Use it.
	* java-tree.h (DECL_LOCAL_CNI_METHOD_P): New.
	(DECL_CLASS_FIELD_P, DECL_VTABLE_P): New.
	(struct lang_decl_func): Add local_cni;
	(struct lang_decl_var): Add class_field, vtable.
	(java_mangle_decl): Declare.
	* lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New.
	* mangle.c: Remove dup obstack.h; include langhooks-def.h.
	(mangle_obstack_1): New.
	(java_mangle_decl): Remove obstack argument.  Call mangle_class_field,
	mangle_vtable, and mangle_local_cni_method_decl.  Fall back to
	lhd_set_decl_assembler_name for things that don't need mangling.
	(mangle_class_field): Rename from java_mangle_class_field, make
	static, don't call init_mangling or finish_mangling.
	(mangle_vtable): Similarly.
	(mangle_local_cni_method_decl): New.
	(init_mangling): Remove obstack argument.  Use &mangle_obstack_1,
	gcc_assert, and MANGLE_RAW_STRING.
	(finish_mangling): Use gcc_assert, remove if 0 debugging code.

2005-05-25  DJ Delorie  <dj@redhat.com>

	* class.c (set_constant_value): Move warning control from if() to
	warning(OPT_*).

2005-05-24  Richard Henderson  <rth@redhat.com>

	* builtins.c (define_builtin): Don't call make_decl_rtl.
	* constants.c (build_constant_data_ref): Likewise.
	* class.c (build_utf8_ref): Likewise.
	(build_fieldref_cache_entry, build_static_field_ref): Likewise.
	(get_dispatch_table, layout_class_method): Likewise.
	(build_class_ref): Likewise. Don't set DECL_SIZE or DECL_SIZE_UNIT
	by hand.
	(make_local_function_alias): Don't SET_DECL_ASSEMBLER_NAME.
	(make_method_value): Use METHOD_ABSTRACT instead of DECL_RTL_SET_P
	to determine if we need a non-zero address.
	* decl.c (builtin_function): Don't call make_decl_rtl.
	(give_name_to_locals): Don't SET_DECL_ASSEMBLER_NAME.
	* expr.c (build_known_method_ref): Don't call make_decl_rtl.
	* resource.c (compile_resource_data): Likewise.
	* parse.y (resolve_field_access): Re-word comment to avoid
	building DECL_RTL.

2005-05-24  Richard Henderson  <rth@redhat.com>

	* class.c (registered_class): Take it out of class_roots; turn into
	a vec of trees.
	(register_class): Make static.  Don't duplicate decl node.  Use
	VEC_safe_push.
	(emit_register_classes): Use VEC_iterate.  Use output_constant
	instead of assemble_integer.  Don't call mark_decl_referenced
	directly.
	* java-tree.h (register_class): Remove decl.

2005-05-19  Paolo Bonzini  <bonzini@gnu.org>

	PR java/17845

	* parse.y (register_package, package_list): Remove.
	(package_declaration): Do not call register_package.
	(do_resolve_class): Do not use package_list.

2005-05-15  Gerald Pfeifer  <gerald@pfeifer.com>

	* jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Remove
	unused variable.

2005-05-15  Tom Tromey  <tromey@redhat.com>

	PR java/21519:
	* jcf-write.c (generate_bytecode_insns) <SAVE_EXPR>: Don't call
	NOTE_PUSH.

2005-05-12  Aaron Luchko <aluchko@redhat.com>

	* gcj.texi: Add '-verify', '-noverify', and '-verifyremote'.

2005-05-11  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Code Generation): Document -fbootstrap-classes.
	* decl.c (GCJ_BOOTSTRAP_LOADER_ADDITION): New macro.
	(parse_version): Use it.
	* lang.opt (-fbootstrap-classes): New option.

2005-05-10  Paolo Bonzini  <bonzini@gnu.org>

	PR java/21436
	* class.c (maybe_layout_super_class): Look for imports in this_class.
	* parse.h (ctxp_for_generation_last): New.
	(do_resolve_class): Add a parameter.
	* parse.y (ctxp_for_generation_last): New.
	(java_pop_parser_context): Add at end of list.
	(find_in_imports, find_in_imports_on_demand): Look in ctxp
	if the TYPE_IMPORT_LIST or respectively the TYPE_IMPORT_DEMAND_LIST of
	the given type are NULL.
	(do_resolve_class): Look into the imports of the new second parameter.
	Adjust recursive calls.
	(resolve_class, resolve_inner_class, find_as_inner_class): Adjust
	calls to do_resolve_class.
	(create_class): Set the TYPE_IMPORT_LIST and TYPE_IMPORT_DEMAND_LIST.
	(java_complete_class): Do not do that here.

2005-05-03  Thomas Fitzsimmons  <fitzsim@redhat.com>

	PR java/20309
	* Make-lang.in (java): Add gjnih.
	(JAVA_TARGET_INDEPENDENT_BIN_TOOLS): Likewise.
	(GJNIH_OBJS): New variable.
	(gjnih$(exeext)): New target.
	(JAVA_MANFILES): Add gjnih.1.
	(java.uninstall): Add gjnih.1.
	(java.mostlyclean): Add gjnih.
	(java.maintainer-clean): Add gjnih.1.
	(java/gjavah-jni.o): New target.
	(.INTERMEDIATE): Add gjnih.pod.
	(gjnih.pod): New target.
	* config-lang.in (stagestuff): Add gjnih.
	* gcj.texi (Top): Add gjnih node.
	(Invoking gcjh): Add descriptions of -force, -old, -trace, -J and
	-bootclasspath options.
	(Invoking gjnih): New node.
	* gjavah.c Initialize flag_jni to 1 if JNI_DEFAULT is defined.
	(TOOLNAME): New macro.
	(error): Replace hard-coded gcjh with TOOLNAME.
	(process_file): Likewise.
	(usage): Likewise.
	(version): Likewise.
	(help): Likewise.  Add help output for -force, -old, -trace and -J
	options.
	(OPT_FORCE, OPT_OLD, OPT_TRACE): New macros.
	(options): Add force, old, trace and J fields.
	(main): Handle -force, -old, -trace and -J options.

2005-05-03  Tom Tromey  <tromey@redhat.com>

	PR java/21245:
	* gjavah.c (main): Unlink output file on error.

2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>

	* constants.c, jvgenmain.c, lang.opt, resource.c: Update
	copyright.

2005-04-29  Tom Tromey  <tromey@redhat.com>

	* expr.c (build_jni_stub): Updated for change to build_block.

2005-04-29  Andrew Pinski  <pinskia@gcc.gnu.org>

	* expr.c (force_evaluation_order): Declare 'saved' earlier.

2005-04-28  Andrew Haley  <aph@redhat.com>

	PR java/19285
	* java-tree.h (soft_resolvepoolentry_node): New.
	(alloc_constant_fieldref): Declare.
	* expr.c (expand_java_field_op): Don't call class_init for
	accesses to static fields with indirect dispatch.
	* builtins.c (initialize_builtins): Add "__builtin_expect".
	* decl.c (soft_resolvepoolentry_node): New variable.
	(java_init_decl_processing): Create a decl for
	"_Jv_ResolvePoolEntry".
	* class.c (build_fieldref_cache_entry): New function.
	(build_static_field_ref): Rewrite for indirect dispatch.
	* constants.c (find_name_and_type_constant_tree): New function.
	(alloc_constant_fieldref): Likewise.
	(build_constants_constructor): Handle CONSTANT_Fieldref and
	CONSTANT_NameAndType.

	PR java/21115
	* expr.c (force_evaluation_order): Convert outgoing args smaller
	than integer.

2005-04-27  Bryce McKinlay  <mckinlay@redhat.com>

	* gcj.texi (libgcj Runtime Properties): Remove obsolete
	gnu.gcj.runtime.NameFinder.* system properties. Update documentation
	for gnu.gcj.runtime.NameFinder.use_addr2line and gnu.gcj.progname.

2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c, jcf-dump.c, jv-scan.c, jvgenmain.c: Replace calls
	to `unlock_stream' with `unlock_std_streams'.

2005-04-25  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (java/decl.o, java/resource.o): Depend on $(EXPR_H)
	instead of just expr.h.

2005-04-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (main): Unlock the stdio streams.
	* jcf-dump.c (main): Likewise.
	* jv-scan.c (main): Likewise.
	* jvgenmain.c (main): Likewise.

2005-04-23  DJ Delorie  <dj@redhat.com>

	* class.c, decl.c, expr.c, jcf-io.c, jcf-parse.c, jv-scan.c,
	parse.y: Adjust warning() callers.

2005-04-21  Bryce McKinlay  <mckinlay@redhat.com>

	* gcj.texi (Object fields): Change "Integer" to "Int" in example
	contructor.

2005-04-20  Bryce McKinlay  <mckinlay@redhat.com>

	* gcj.texi: Fix typos and bogus example.

2005-04-19  Kazu Hirata  <kazu@cs.umass.edu>

	* except.c: Fix a comment typo.

2005-04-19  Julian Brown  <julian@codesourcery.com>

	* decl.c (finish_method): Revert patch from 2005-04-13 for breaking
	indirect dispatch with PIC.

2005-04-18  Andrew Haley  <aph@redhat.com>

	* java-except.h (struct eh_range.handler): Remove unused field.
	(handle_nested_ranges): Remove function declaration.
	(sanity_check_exception_range): Add function declaration.
	* verify.c (verify_jvm_instructions): Remove call to
	handle_nested_ranges.
	* verify-glue.c (verify_jvm_instructions_new): Call
	sanity_check_exception_range.
	* except.c (link_handler, eh_range_freelist, link_handler,
	handle_nested_ranges): Remove.
	(add_handler): Rewrite.
	(sanity_check_exception_range): New function.
	(print_ranges): New function.

2005-04-13  Julian Brown  <julian@codesourcery.com>

	* decl.c (finish_method): Give methods once-only linkage.

2005-04-11  Richard Sandiford  <rsandifo@redhat.com>

	* lang.opt: Refer to the GCC internals documentation instead of c.opt.

2005-04-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* java-tree.h: Don't use PARAMS().

2005-04-07  Per Bothner  <per@bothner.com>

	* class.c (push_class): By default, suppress debug output.
	(finish_class): Enable debug output for classes we're emitting.

2005-04-07  Andrew Haley  <aph@redhat.com>

	* gcj.texi: Correct gcj-dbtool instructions.

2005-04-04  Kazu Hirata  <kazu@cs.umass.edu>

	* gcj.texi: Fix a typo.
	* lang.c: Fix a comment typo.

2005-04-01  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gcj.texi (Invoking gij): Add descriptions of new -X options.
	Mention recognized-and-ignored compatibility options.
	(Memory allocation): Add descriptions of JvMalloc, JvRealloc and
	JvFree.
	(About CNI): Add Memory allocation section.

2005-04-01  Tom Tromey  <tromey@redhat.com>

	* decl.c (java_init_decl_processing): Fix types of
	_Jv_MonitorEnter, _Jv_MonitorExit, _Jv_AllocObject,
	_Jv_AllocObjectNoFinalizer, _Jv_Throw, _Jv_NewPrimArray,
	_Jv_JNI_PopSystemFrame, _Jv_divI, _Jv_remI, _Jv_divJ, _Jv_remJ.

2005-03-31  Jan Hubicka  <jh@suse.cz>

	* Make-lang.in (class.o, decl.o): Depend on cgraph.h.
	* class.c: Include cgraph.h
	(make_local_functoin_alias): Mark aslias as needed.
	* resource.c: Include cgraph.h
	(compile_resource_data): Go via cgraph interface.

2005-03-30  Ian Lance Taylor  <ian@airs.com>

	* parse.y (maybe_yank_clinit): Don't crash if bbody is NULL.

2005-03-30  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): Handle cases where
	inner_class_info_index==0 or outer_class_info_index==0.

2005-03-29  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (libgcj Runtime Properties): Document
	gnu.gcj.runtime.endorsed.dirs.

2005-03-24  Anthony Green  <green@redhat.com>

	* gcj.texi (Invoking gcj-dbtool): Document new LIBDIR option to
	'gcj-dbtool -p'.

2005-03-23  Tom Tromey  <tromey@redhat.com>

	* decl.c (GCJ_CURRENT_BC_ABI_VERSION): New define.
	(parse_version): Use it.

2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>

	* lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.

2005-03-18  Andrew Haley  <aph@redhat.com>

	PR java/20522
	* decl.c (update_aliases): Don't update variables that are about
	to die.
	(maybe_poplevels): Add comment.

2005-03-17  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/20502
	* jcf-parse.c (duplicate_class_warning): New function.
	(java_parse_file): Call duplicate_class_warning if
	CLASS_FROM_CURRENTLY_COMPILED_P is already set.
	(parse_zip_file_entries): Likewise. Also set
	CLASS_FROM_CURRENTLY_COMPILED_P.

2005-03-16  Andrew Haley  <aph@redhat.com>

	* expr.c (expand_java_arrayload): Don't generate a
	NullPointerException based on the type of the node.
	(build_java_array_length_access): Likewise.

2005-03-15  Zack Weinberg  <zack@codesourcery.com>

	* Make-lang.in (TEXI_JAVA_FILES): Add gcc-vers.texi.

2005-03-11  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Invoking gcj-dbtool): Document 'gcj-dbtool -p'.
	(libgcj Runtime Properties): Document the default .db.

2005-03-10  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/20312
	* parse.y (checks_throws_clauses): Check exceptions list even when
	the base class does not come from a source file being compiled.
	(java_complete_lhs): Remove unused variable 'wfl'.

2005-03-09  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/20338
	* decl.c (finish_method): Emit _Jv_InitClass for private static
	methods inside inner classes as well.

2005-03-08  Julian Brown  <julian@codesourcery.com>
	* Revert patch from 2005-03-08 for causing bootstrap failure on
	ppc-darwin.

2005-03-08  Julian Brown  <julian@codesourcery.com>

	* decl.c (finish_method): Give methods once-only linkage.

2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>

	* lang.c (flag_new_verifier): Enable by default, regardless of ABI.

2005-03-07  Bryce McKinlay  <mckinlay@redhat.com>

	* verify-glue.c (vfy_is_assignable_from): Perform static check using
	can_widen_reference_to if the C++ ABI is in use.
	(vfy_get_interface_count, vfy_get_interface): Remove unused functions.
	* verify-impl.c (debug_print, make_utf8_const, init_type, copy_type,
	type_isresolved, init_state, set_pc, state_get_pc,
	_Jv_BytecodeVerifier): Clean up unused and disabled functions.
	(verify_fail): Report the current PC from the verifier context.
	(free_state): Remove #if 0 block to enable this function.
	(free_verifier_context): Call free_state on state_list iterator
	values before freeing them.
	* expr.c (pop_type_0): Pop correct type for error message when stack
	contains a multi-word type.

2005-03-07  Ranjit Mathew  <rmathew@hotmail.com>

	* expr.c (build_java_array_length_access): Remove !flag_new_verifier
	for known NULL array length access.

2005-03-07  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Invoking gcj-dbtool): Document '-f'.

2005-03-06  Kazu Hirata  <kazu@cs.umass.edu>

	* jcf-dump.c, jcf-io.c, jcf-reader.c, lang.c, parse.h,
	typeck.c: Update copyright.

2005-03-06  Ranjit Mathew  <rmathew@hotmail.com>

	Remove xref code.
	* xref.c, xref.h: Remove file.
	* Make-lang.in (java/xref.o): Remove.
	* java-tree.h (flag_emit_xref, do_not_fold): Remove declaration.
	* lang.c (flag_emit_xref): Remove definition.
	* parse.h (DECL_END_SOURCE_LINE, DECL_INHERITED_SOURCE_LINE): Remove.
	* typeck.c (convert): Remove use of do_not_fold.
	* parse.y (do_not_fold): Remove definition.
	(parser grammar): Remove xref code.
	(maybe_create_class_interface_decl, create_class): Likewise.
	(register_fields, method_header, finish_method_declaration): Likewise.
	(declare_local_variables, source_end_java_method): Likewise.
	(java_complete_expand_classes): Do not set do_not_fold.
	(java_complete_expand_method): Remove xref code.
	(java_expand_classes, resolve_field_access, patch_invoke): Likewise.
	(java_complete_tree, java_complete_lhs, patch_assignment): Likewise.
	(patch_binop, build_string_concatenation, patch_array_ref): Likewise.
	(patch_synchronized_statement, patch_throw_statement): Likewise.
	(maybe_build_class_init_for_field): Likewise.

2005-03-05  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (build_expr_wfl, expr_add_location): Use TYPE_P
	instead of IS_NON_TYPE_CODE_CLASS.

2005-03-04  Andrew Haley  <aph@redhat.com>

	PR java/18362
	* class.c (set_method_index): Don't set method_index if it is
	NULL_TREE.
	(layout_class_method): Don't complain about "non-static method foo
	overrides static method" in the case of indirect dispatch.

2005-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-io.c (caching_stat): Use __extension__ to avoid pedantic
	warning.
	* Make-lang.in: Don't elide warnings in jcf-io.c.

2005-03-01  Per Bothner  <per@bothner.com>

	PR java/8608
	* check-init.c (wfl): Remove static.
	(final_assign_error, check_init): Replace calls to parse_error_context
	by plain error.
	(check_init): Save, set, and restore input_location for each exp.

2005-03-01  Per Bothner  <per@bothner.com>

	* jcf-reader.c (get_attribute): Handle SourceDebugExtension (JSR 45)
	if HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE is defined.
	* jcf-dump.c (HANDLE_SOURCEDEBUGEXTENSION_ATTRIBUTE): Print contents.

2005-03-01  Per Bothner  <per@bothner.com>

	* java-tree.h (IDENTIFIER_HANDLECLASS_VALUE): Remove ancient macro.

2005-02-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	PR libgcj/16923
	* gcj.texi (Invocation): Add descriptions of JvVMInitArgs and
	JvVMOption.

2005-02-22  Tom Tromey  <tromey@redhat.com>

	PR java/20056:
	* verify-impl.c (EITHER): New define.
	(types_compatible): Handle it.
	(check_field_constant): Use it.

2005-02-18  Tom Tromey  <tromey@redhat.com>

	PR java/20056:
	* verify-impl.c (types_equal): Fixed test.

	PR java/20056:
	* verify-glue.c (vfy_class_has_field): New function.
	* verify.h (vfy_class_has_field): Declare.
	* verify-impl.c (check_field_constant): Added 'putfield'
	argument.
	(verify_instructions_0): Updated.
	(types_equal): New function.

2005-02-14  Tom Tromey  <tromey@redhat.com>

	PR java/19921:
	* jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Note the
	stack effect of multianewarray.

2005-02-14  Andrew Haley  <aph@redhat.com>

	PR java/19907
	* expr.c (expand_byte_code): Call promote_arguments().
	(promote_arguments): New function.
	* decl.c (check_local_unnamed_variable): Remove special case for
	new verifier.
	(find_local_variable): Promote all boolean types to int
	when searching for local variable decls.

2005-02-12  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c, java-except.h, jcf-parse.c, jv-scan.c, lex.c,
	parse-scan.y: Update copyright.

2005-02-11  Per Bothner  <per@bothner.com>

	PR java/15543
	* parse-scan.y (input_location): Remove variable.
	(main_input_filename): New - replaces input_filename, which isn't
	settable if USE_MAPPED_LOCATION.
	* lex.c (java_init_lex): Wrap some more places in #ifndef JC1-LITE,
	so we don't reference input_location or wfl_operator in that case.
	* jv-scan.c (expand_location): Remove - no longer used.
	(main): Set main_input_filename rather than input_filename.

2005-02-09  Richard Henderson  <rth@redhat.com>

	* builtins.c (initialize_builtins): Call build_common_builtin_nodes.
	* decl.c (java_init_decl_processing): Initialize const_ptr_type_node.

2005-02-08  Marcin Dalecki  <martin@dalecki.de>

	* expr.c (add_type_assertion): Use the proper enumeration type,
	since this is what htab_find_slot() is expecting.

2005-02-06  Joseph S. Myers  <joseph@codesourcery.com>

	* gcj.texi: Update copyright dates.

2005-02-02  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (libgcj Runtime Properties): Default library_control
	to 'cache'.

2005-02-02  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/15543
	* parse-scan.y (formal_parameter): Use $2 (type) instead of $$
	(modifiers) when square brackets are present in a declaration for
	a final paramter.
	* jv-scan.c (main): Set input_filename and input_line.

2005-02-01  Tom Tromey  <tromey@redhat.com>

	PR java/19742:
	* gjavah.c (get_field_name): Don't override name for JNI header.

2005-02-01  Roger Sayle  <roger@eyesopen.com>

	* jcf-write.c (generate_bytecode_insns): Implement RSHIFT_EXPR
	of unsigned types using iushr and lushr JVM bytecodes.

2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/19738
	* gjavah.c (jni_print_float): Do not emit floating-point
	initialiser for a static final field.
	(jni_print_double): Likewise.

2005-02-01  Mark Mitchell  <mark@codesourcery.com>

	Revert:
	2005-01-31  Mark Mitchell  <mark@codesourcery.com>
	* gjavah.c (print_field_info): Mark static data members of
	floating-point type with "__extension__".

2005-01-31  Mark Mitchell  <mark@codesourcery.com>

	* gjavah.c (print_field_info): Mark static data members of
	floating-point type with "__extension__".

2005-02-01  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/9157
	* parse.y (build_string_concatenation): Remove redundant if.
	(patch_conditional_expr): Attempt to patch_string() the condition
	of a ?: as well, in addition to its other operands.

2005-01-25  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java/java-tree-inline.o): Removed.

2005-01-25  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/19070
	* parse.y (patch_binop): Allow comparisons against NULL only
	if the other operand is of a reference type.

2005-01-24  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (gcj_abi_version): Declare.
	* class.c (make_class_data): Push gcj_abi_version into "next"
	field.  Renamed field.
	* decl.c (gcj_abi_version): New global.
	(parse_version): New function.
	(java_init_decl_processing): Call it.  Renamed 'next' field.
	Include version.h.
	(GCJ_BINARYCOMPAT_ADDITION): New define.

2005-01-24  Roger Sayle  <roger@eyesopen.com>

	PR java/19295
	* jcf-write.c (generate_bytecode_insns): Conversions between
	integer types of the same precision shouldn't generate widening
	or narrowing conversion bytecodes.

2005-01-22  Kazu Hirata  <kazu@cs.umass.edu>

	* java-except.h, java-tree.h: Remove unused prototypes.

2005-01-20  Andrew Pinski  <pinskia@gcc.gnu.org>

	PR java/18091:
	* jcf-write.c (perform_relocations): Don't call memcpy if source
	and destination are the same.

2005-01-17  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (get_short): Sign extend.
	(get_int): Likewise.

2005-01-12  Ranjit Mathew  <rmathew@hotmail.com>

	* expr.c (build_jni_stub): Replace mistaken use of TYPE_SIZE_UNIT
	with TYPE_SIZE.

2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>

	* verify.c: Revert to the version before the BC-ABI merge.

2005-01-10  Ranjit Mathew  <rmathew@hotmail.com>

	PR java/19277
	* check-init.c (check_init): Take care of references that do not
	have an explicit final variable declaration (e.g. array length
	access) for pre/post in/de-crement operators.

2005-01-08  Mark Wielaard  <mark@klomp.org>

	* parse.y (process_imports): Allocate (and free) original_name only
	when not already defined.
	* jcf-parse.c (read_class): Free results of find_class() and
	lrealpath().
	(java_parse_file): Keep pointer to head of file_list and free when
	done. Free result of lrealpath().

2005-01-05  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Standard Properties): java.ext.dirs is now used.

2004-12-20  Andrew Haley  <aph@redhat.com>

	* typeck.c: Use fold_convert for ints and booleans.

2004-12-17  Andrew Haley  <aph@redhat.com>

	PR java/18931
	* typeck.c (convert): Use a CONVERT_EXPR when converting to
	BOOLEAN_TYPE or CHAR_TYPE.
	(convert_to_boolean, convert_to_char) : Remove.
	* convert.h (convert_to_boolean, convert_to_char) : Remove.
	* expr.c (expand_load_internal): Do type conversion if type is not
	as required.

2004-12-13  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/18459
	* class.c (emit_register_classes): Use TARGET_USE_JCR_SECTION.
	Update comment.

2004-12-07  Andrew Haley  <aph@redhat.com>

	PR java/18811:
	* jcf-parse.c (load_class): Remove sanity test for missing inner
	class file.

2004-12-06  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (JAVA_MANFILES): Added gcj-dbtool.
	(java.uninstall): Likewise.
	(java.maintainer-clean): Likewise.
	(.INTERMEDIATE): Likewise.
	(java.install-man): Likewise.
	(gcj-dbtool.pod): New target.
	* gcj.texi (Code Generation): Document -findirect-dispatch.
	(libgcj Runtime Properties): Document
	gnu.gcj.precompiled.db.path.
	(Top): Link to "Invoking gcj-dbtool".

2004-12-06  Tom Tromey  <tromey@redhat.com>

	PR java/14853:
	* java-tree.h (extract_field_decl): Declare.
	* parse.y (extract_field_decl): Renamed from
	strip_out_static_field_access_decl.  No longer static.
	* check-init.c (get_variable_decl): Unwrap COMPOUND_EXPRs.

2004-12-03  Tom Tromey  <tromey@redhat.com>

	* lang.c (flag_new_verifier): Define.
	(java_post_options): Set flag_new_verifier if indirect dispatch
	is being used.
	* lang.opt (fnew-verifier): Removed.

2004-12-03  Tom Tromey  <tromey@redhat.com>

	PR bootstrap/14614:
	* Make-lang.in (java.install-common): Only install transformed
	gcjh if gcj-cross exists.

2004-12-03  Andrew Haley  <aph@redhat.com>

	PR java/18812
	* except.c (link_handler): Patch 'outer' field of siblings of the
	range we're demoting.

2004-12-03  Andrew Haley  <aph@redhat.com>

	PR java/18697
	* class.c (layout_class_method): Don't fail to override a method
	simply because it has DECL_ARTIFICIAL set.

2004-12-02  Tom Tromey  <tromey@redhat.com>

	PR java/16675:
	* parse.y (craft_constructor): Special case null_pointer_node.

2004-12-02  Tom Tromey  <tromey@redhat.com>

	PR java/18741:
	* java-gimplify.c (java_gimplify_expr): Don't call
	SET_EXPR_LOCATION unless wrapped tree is an expression.

2004-11-27  Per Bothner  <per@bothner.com>

	* jcf-parse.c (set_source_filename):  Improvement to Andrew's fix:
	Fix fencepost error in 'i', which got executed one too many times.
	Also, fold memcpy into explicit loop, as originally intended.
	Also, free temporary 'buf' which otherwise leaks.

2004-11-27  Per Bothner  <per@bothner.com>

	* expr.c (build_expr_wfl): Only declare last_file and last_filenode
	local static variables if not USE_MAPPED_LOCATION.

2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c, decl.c, expr.c: Fix comment typos.

2004-11-26  Andrew Pinski  <pinskia@physics.uc.edu>

	PR java/18305
	* decl.c (end_java_method): Call
	attach_init_test_initialization_flags on all the init_decls.
	* parse.y (attach_init_test_initialization_flags): Move to ...
	* expr.c (attach_init_test_initialization_flags): here and
	support BIND_EXPR also.
	* java-tree.h (attach_init_test_initialization_flags): Prototype.
	* jcf-parse.c (parse_class_file): Don't disable class init
	optimization.

2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>

	* gjavah.c, jcf-dump.c, jv-scan.c, jvspec.c: Avoid ` as left quote
	in diagnostics.

2004-11-24  Richard Henderson  <rth@redhat.com>

	* verify-glue.c (vfy_init_name, vfy_clinit_name, vfy_object_type,
	vfy_string_type, vfy_throwable_type): Use ANSI declaration form.

2004-11-24  Tom Tromey  <tromey@redhat.com>

	* verify.c (defer_merging): Don't use C++-style comment.
	* verify.h (java_opcode): Added java_opcode_end.
	* class.c (build_class_ref): Remove C++ comment and old FIXME.

	* verify-impl.c (vfy_push_type): Removed bogus "return".
	(initialize_stack): Use vfy_alloc and vfy_free.
	(verify_instructions_0): Likewise.

	* Merged gcj-abi-2-dev-branch to trunk.

2004-11-24  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (parse_class_file): Set file_start_location.

2004-11-10  Tom Tromey  <tromey@redhat.com>

	* class.c (make_field_value): Don't call build_static_field_ref.
	(build_static_field_ref): Don't emit direct references when using
	indirect dispatch.

	* gcj.texi (Invoking gij): Document -verbose.  Put -verbose and
	-verbose:class into man page synopsis.

2004-11-09  Tom Tromey  <tromey@redhat.com>

	* expr.c (build_java_arraystore_check): Still generate check if
	element type is itself an array.

2004-11-08  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (soft_check_assignment_node): Removed.
	(enum java_tree_index): Removed JTI_SOFT_CHECK_ASSIGNMENT_NODE.
	* decl.c (java_init_decl_processing): Don't initialize
	soft_check_assignment_node.

2004-11-05  Tom Tromey  <tromey@redhat.com>

	* class.c (layout_class_methods): Don't add Miranda methods when
	using indirect dispatch.

2004-11-05  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (make_class_data): Call emit_assertion_table to set the
	'assertion_table' field.
	(build_signature_for_libgcj): Move here from expr.c.
	(add_assertion_table_entry): New function. Callback for assertion
	hashtable traversal.
	(emit_assertion_table): New. Take class argument, and generate
	assertion table DECL based on the TYPE_ASSERTIONS hashtable.
	* decl.c (init_decl_processing): Define assertion_entry_type record.
	Push 'assertion_table' class field instead of 'verify'.
	* expr.c (type_assertion_eq): Compare 'assertion_code' field.
	(type_assertion_hash): Include 'assertion_code' in hash.
	(add_type_assertion): Rewritten. Take class and assertion_code
	arguments. Add assertions to the TYPE_ASSERTIONS hashtable.
	(can_widen_reference_to): Use new add_type_assertion() arguments.
	* java-tree.h (java_tree_index): Add JTI_ASSERTION_ENTRY_TYPE,
	JTI_ASSERTION_TABLE_TYPE. Remove JTI_VERIFY_IDENTIFIER_NODE.
	(verify_identifier_node): Removed.
	(assertion_entry_type, assertion_table_type): New.
	(ASSERTION_TYPES_COMPATIBLE, ASSERTION_IS_INSTANTIABLE): New. Type
	assertion code definitions.
	(struct type_assertion): Add assertion_code. Rename 'source_type' and
	'target_type' to 'op1' and 'op2'.
	(add_type_assertion): Declare.
	(lang_printable_name_wls): Remove unused definition.
	* verify-glue.c: (vfy_is_assignable_from): New. Call add_type_assertion
	to emit runtime assertion.
	(vfy_note_stack_type): Clean up non-C90 declarations.
	(vfy_note_local_type): Likewise.
	* verify.h (vfy_is_assignable_from): Declare.
	* verify-impl.c (is_assignable_from_slow): Remove unused function.
	(ref_compatible): Rename arguments. Call vfy_is_assignable_from()
	instead of is_assignable_from_slow().
	(types_compatible): Reinstate ref_compatible() call.

2004-11-04  Tom Tromey  <tromey@redhat.com>

	* class.c (build_static_field_ref): Reverted previous patch.

	* class.c (build_static_field_ref): Don't emit direct references
	when using indirect dispatch.

2004-11-03  Tom Tromey  <tromey@redhat.com>

	* expr.c (expand_java_arrayload): Set lhs_type_node.
	(expand_java_arraystore): Set rhs_type_node.

2004-11-02  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (compute_class_name): Use filename length from zip
	directory, not strlen.

	* expr.c (expand_invoke): Mark new interface methods as abstract.

2004-11-01  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (push_jump): Removed check for uninitialized
	objects.
	(push_exception_jump): Likewise.
	(handle_ret_insn): Likewise.
	(handle_jsr_insn): Likewise.
	(state_check_no_uninitialized_objects): Removed.

	* decl.c (check_local_unnamed_variable): Recognize
	promoted-to-int parameters when using the new verifier.
	* expr.c (expand_java_arraystore): Explicitly request array type
	when using new verifier.
	(expand_java_arrayload): Likewise.
	(invoke_build_dtable): Don't pass object_type_node as
	expression argument to build_java_indirect_ref.
	(build_java_check_indexed_type): Do nothing.
	(build_java_arraystore_check): Handle case where array doesn't
	have array type.
	(build_java_array_length_access): Likewise.
	(expand_invoke): Handle case where interface overrides a method
	from Object.
	(pop_type_0): Always succeed for reference types.
	(process_jvm_instruction): Don't pop a value in a dead
	exception handler.
	(pop_arguments): Convert arguments to correct types.

2004-10-29  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (give_name_to_class): Remove line that was
	incorrectly merged.

2004-10-29  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (set_source_filename): Add code to build new sfname.

2004-10-20  Andrew Haley  <aph@redhat.com>

	* decl.c (end_java_method): Don't expand if flag_syntax_only.

2004-10-26  Tom Tromey  <tromey@redhat.com>

	* verify.h (vfy_notify_verified): Removed.
	* verify-glue.c (vfy_notify_verified): Removed.

2004-10-26  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (debug_print_state): Declare `i' before code.
	(merge_types): Modify `t' when it is null_type.

2004-10-26  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (type_print): Renamed from print.  Now static and
	takes an argument.
	(debug_print_state): Use type_print.

2004-10-25  Tom Tromey  <tromey@redhat.com>

	* expr.c (build_invokeinterface): Compute correct offset for
	index into interface methods.

2004-10-20  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (verify_jvm_instructions_new): Declare.

	* jvspec.c (jvgenmain_spec): Remove -fnew-verifier from cc1
	command line.

	* verify-impl.c (verify_instructions): Correctly handle wide
	types on the stack.
	* verify-glue.c (vfy_get_class_name): Use DECL_NAME.
	(vfy_get_component_type): Strip pointer types.
	(vfy_find_class): Use get_type_from_signature.  Strip pointer
	types.
	Include java-except.h.

2004-10-20  Bryce McKinlay  <mckinlay@redhat.com>

	* verify-impl.c (type_array_elementpop_raw, vfy_pop_type_t,
	vfy_push_type_t, set_variable, add_new_state, merge_into,
	handle_jsr_insn, branch_prepass, check_class_constant,
	check_wide_constant, get_one_type, compute_static_types,
	verify_instructions_0): Clean up C99 declarations after statements.

2004-10-20  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (merge_refs): Compare reference against iterator,
	not ref2.

	* verify-glue.c (vfy_tag): Mask off resolved flag.

2004-10-19  Tom Tromey  <tromey@redhat.com>

	* verify-impl.c (verify_instructions): Call vfy_note_local_type.
	(init_state_with_stack): Initialize `this_type' in state.
	(verify_method): Use debug_print.
	* verify-glue.c (vfy_is_primitive): Removed debugging print.
	(vfy_note_stack_depth): Reverted last patch.
	(vfy_note_stack_type): Note pointer to Object, not Object.
	(vfy_note_local_type): Likewise.

	* verify.h (vfy_note_instruction_seen): Declare.
	* verify-glue.c (verify_jvm_instructions_new): Set
	BCODE_EXCEPTION_TARGET on target instruction.
	(vfy_note_instruction_seen): New function.
	* verify-impl.c (FLAG_INSN_SEEN): New define.
	(verify_instructions_0): Set flag on instruction.  Save state for
	PC=0 later.
	(verify_instructions): Call vfy_note_instruction_seen.

	* verify-glue.c (vfy_note_stack_depth): Fix off-by-one error.
	(verify_jvm_instructions_new): Call method_init_exceptions,
	add_handler, and handle_nested_ranges.
	* verify-impl.c (verify_method): Return 1 on success.
	(verify_instructions_0): Save the state at PC=0.

	* verify-impl.c (init_type_from_class): Set is_resolved and
	ref_next on new ref_intersection.
	(init_type_from_string): Likewise.

2004-10-15  Bryce McKinlay  <mckinlay@redhat.com>

	* expr.c (expand_bytecode): Use verify_jvm_instructions_new
	if flag_new_verifier is set.
	* java-tree.h (flag_new_verifier): Declare.
	* lang.opt (fnew-verifier): New option.
	* verify-impl.c: Work around namespace pollution by undef'ing
	'current_class'.
	(struct verifier_context): Make 'bytecode' const.
	(verify_fail_pc): Pass -1 PC argument to vfy_fail.
	(types_compatible): For the BC-ABI, always consider reference types
	compatible.
	(check_class_constant): Use vfr->current_class.
	(check_constant): Likewise.
	(check_wide_constant): Likewise.
	(check_field_constant): Check for 'L' at start of type name.
	(get_one_type): Return pointer instead of type. Set type result in
	caller via passed type pointer.
	(compute_argument_types): Update to use new get_one_type arguments.
	(compute_return_type): Likewise.
	(make_verifier_context): New. Allocate and initialize 'vfr'.
	(free_verifier_context): New. Free 'vfr' and its contents.
	(verify_method): Remove ATTRIBUTE_UNUSED. Call make_verifier_context
	and free_verifier_context.

2004-10-15  Tom Tromey  <tromey@redhat.com>

	* verify-glue.c (vfy_note_local_type): Mark argument as unused.
	* verify.h (vfy_fail): Fixed formatting.

	* verify-impl.c (vfr): Fixed comment formatting.
	(collapse_type): New function.
	(verify_instructions): Notify compiler about type map.
	* verify.h (vfy_note_stack_depth): Updated.
	(vfy_note_stack_type): Likewise.
	(vfy_note_local_type): Likewise.
	(vfy_unsuitable_type, vfy_return_address_type, vfy_null_type):
	Declare.
	* verify-glue.c (vfy_note_stack_depth): Correctly size type
	state.  Added `method' argument.
	(vfy_note_stack_type): Renamed from vfy_note_type.  Added `method'
	argument.
	(vfy_note_local_type): New function.
	(vfy_unsuitable_type): Likewise.
	(vfy_return_address_type): Likewise.
	(vfy_null_type): Likewise.

	* verify.h (VFY_IN_GCC): Removed.
	(VFY_WANT_TYPEMAP): Removed.
	* verify-impl.c (verify_instructions_0): Removed useless "\".
	(struct state) <next>: Uncomment.

2004-10-13  Bryce McKinlay  <mckinlay@redhat.com>

	* verify-impl.c: Formatting fixes. Reformat C++-style comments to
	C-style.

2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>

	* Make-lang.in (verify.o): Re-enabled this target.
	* verify-glue.c (vfy_get_interface_count): Add ATTRIBUTE_UNUSED.
	(vfy_get_interface): Likewise.
	(verify_jvm_instructions_new): Renamed from verify_jvm_instructions.
	* verify.h (verify_jvm_instructions_new): Declare.
	* verify-impl.c (free_state): Temporarily comment out unused
	function.

2004-10-06  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (JV_STATE_READ): New enum value.

2004-10-06  Bryce McKinlay  <mckinlay@redhat.com>

	* verify.h: New file.

2004-10-05  Bryce McKinlay  <mckinlay@redhat.com>

	* verify-impl.c, verify-glue.c, verify.h: New files.
	* Make-lang.in: Add rules for verify-impl.o and verify-glue.o.

2004-09-24  Andrew Haley  <aph@redhat.com>

	* decl.c (check_local_unnamed_variable): Always use the PARM_DECL
	for a slot if it's of pointer type.

2004-09-14  Tom Tromey  <tromey@redhat.com>

	* class.c (make_class_data): Correctly initialize "state" field.
	Initialize "engine" field.
	* decl.c (java_init_decl_processing): Add "engine" field.

2004-09-10  Andrew Haley  <aph@redhat.com>

	PR java/12760
	* expr.c (build_invokeinterface): Use fast method for interface
	dispatch.
	* java-tree.h (enum java_tree_index): Add JTI_ITABLE_TYPE,
	JTI_ITABLE_PTR_TYPE.
	(struct lang_type): Add  itable_methods, itable_decl, itable_syms_decl.
	(emit_symbol_table): Add new arg, element_size.
	* decl.c (java_init_decl_processing): Initialize Class.itable.
	* class.c (GEN_TABLE): New macro.
	(gen_indirect_dispatch_tables): Use it.  Add itable.
	(make_class_data): Add new arg for emit_symbol_table().
	Emit itable.
	(add_miranda_methods): Make sure search_class has been parsed.
	(emit_symbol_table): Add new arg, element_size.

2004-09-06  Andrew Haley  <aph@redhat.com>

	* verify.c (merge_types): Return Object for all merges of
	interfaces.
	* expr.c (add_type_assertion): Don't generate assertions when
	source type is array of Object.

2004-09-03  Andrew Haley  <aph@redhat.com>

	* class.c (finish_class): Nullify TYPE_VERIFY_METHOD.

	* lang.c (java_post_options): Force flag_verify_invocations if
	we're not using indirect dispatch.

	* expr.c (pop_type_0): Move test for interfaces before call to
	can_widen_reference_to().
	(build_signature_for_libgcj): Remove generation of canonical array
	type.
	(add_type_assertion): Canonicalize both arrays.
	Don't assert that type X can be assigned to Object.
	Don't assert that type X an be assigned to type X.
	Don't assert that Object can be assigned to type X.
	(can_widen_reference_to): Warn whenever we generate an assertion.
	(process_jvm_instruction): Use throwable_type_node for the type of
	an exception class.

2004-09-01  Andrew Haley  <aph@redhat.com>

	* decl.c (java_init_decl_processing): Change
	verify_identifier_node to "__verify".
	* expr.c (add_type_assertion): Use verify_identifier_node for name.
	* java-tree.h (verify_identifier_node): Change to "__verify".

	* expr.c (build_signature_for_libgcj): New function.
	(add_type_assertion): Use it to construct signatures for
	source_type and target_type.

2004-08-27  Andrew Haley  <aph@redhat.com>

	* java-tree.h (enum java_tree_index): Add JTI_VERIFY_IDENTIFIER_NODE.
	(verify_identifier_node): New.
	(TYPE_VERIFY_METHOD): New.
	(struct type_assertion): New type.
	* expr.c (type_assertion_eq): New function.
	(type_assertion_hash): New function.
	(add_type_assertion): New function.
	(can_widen_reference_to): Call add_type_assertion().
	* decl.c (java_init_decl_processing): Add verify_identifier_node.
	* class.c (make_class_data): Initialize TYPE_VERIFY_METHOD (type).
	(finish_class): Output TYPE_VERIFY_METHOD (type).

	* decl.c (end_java_method): Nullify unused fields.

2004-08-17  Andrew Haley  <aph@redhat.com>

	* verify.c (defer_merging): Quieten.
	* jcf-parse.c (load_class): Only try to open a class file if it's
	java.lang.Object or if it's part of the current compilation.
	Check that the class we just tried to load is the class we just
	loaded.  Quieten.
	(java_parse_file): Set flag_verify_invocations off if we're
	compiling from .class.
	(parse_zip_file_entries): Abort if we try to read a dummy class.
	* expr.c (can_widen_reference_to): Quieten.
	(build_invokevirtual): Abort if we try to invokevirtual an
	interface.
	(expand_invoke): Don't build a non-interface call to an interface.
	(build_instanceof): Don't do premature optimization if
	flag_verify_invocations is not set.
	* class.c (set_super_info): Disable code that inherits TYPE_DUMMY
	from superclass.
	(build_static_field_ref): Add correct type conversion for
	field_address.
	(add_miranda_methods): Disable generation of Miranda methods for
	dummy classes.
	(layout_class_method): Don't complain about non-static method
	overrides static method with dummy classes.

2004-08-13  Tom Tromey  <tromey@redhat.com>

	* class.c (build_static_field_ref): Re-enable atable lookups for
	static fields.

	* parse.y (strip_out_static_field_access_decl): Indentation fix.

2004-08-11  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (libgcj Runtime Properties): Document new properties.

2004-08-06  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (load_class): Check that we really have loaded the
	class we're looking for.

2004-07-19  Andrew Haley  <aph@redhat.com>

	* verify.c (verify_jvm_instructions): Comment change only.

	* typeck.c (build_java_array_type): Add size field to array name.

	* java-tree.h (LOCAL_SLOT_P): New.
	(update_aliases): Add PC argument.
	(pushdecl_function_level): New function.

	* java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
	MODIFY_EXPR, and SAVE_EXPR.
	(java_gimplify_modify_expr): New function.

	* expr.c (push_type_0): Call find_stack_slot() to create temporary.
	(expand_iinc): Pass PC to update_aliases().
	(STORE_INTERNAL): Likewise.
	(process_jvm_instruction): Likewise.

	* decl.c (base_decl_map): New variable.
	(uniq): New variable.
	(update_aliases): Rewrite with more thorough checking.
	(debug_variable_p): New function.
	(push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
	(check_local_named_variable): Delete whole function.
	(initialize_local_variable): New function.
	(check_local_unnamed_variable): Add checks and comments.
	(find_local_variable): Rewrite.
	(java_replace_reference): New function.
	(function_binding_level): New variable.
	(pushdecl_function_level): New function.
	(maybe_pushlevels): Set DECL_LOCAL_END_PC.
	(maybe_pushlevels): Call pushdecl() on each of the new decls.
	(start_java_method): Reset uniq.  Create base_decl_map.  Set
	function_binding_level.
	(end_java_method): Null unused fields to save memory.

2004-06-29  Andrew Haley  <aph@redhat.com>

	* except.c (expand_start_java_handler): Push a new binding level.
	Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
	register_exception_range() to register where we'll do it.
	(expand_end_java_handler): Remove old bogus code.  Replace with
	new logic that simply builds TRY_CATCH_EXPRs and inserts them at
	the top of the expression we're curently building.
	(maybe_end_try): Delete.
	* decl.c (binding_level.exception_range): New field.
	(clear_binding_level): Add field exception_range.  Reformat.
	(poplevel): Call expand_end_java_handler().
	(poplevel): Call java_add_stmt only if functionbody is false.
	(maybe_poplevels): Don't call maybe_end_try() from here.
	(end_java_method): Clear no longer used trees in function decl.
	(register_exception_range): New function.
	* java-tree.h (register_exception_range, struct eh_range): Declare.

2004-06-22  Andrew Haley  <aph@redhat.com>

	* class.c (gen_indirect_dispatch_tables): Set the DECL_OWNER of
	the otable.
	* check-init.c (get_variable_decl): Teach check-init about
	FIELD_DECLs addressed via the otable.
	* jcf-parse.c (load_class): Check CLASS_LOADED_P, not
	CLASS_PARSED_P.

2004-05-28  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (load_class): Don't try to read a class that we've
	already read.

	* expr.c (build_invokeinterface): Use the old-fashioned way of
	doing indirect dispatch: look up interfaces by name.
	* java-tree.h (enum java_tree_index): Add
	JTI_SOFT_LOOKUPINTERFACEMETHODBYNAME_NODE
	* decl.c (java_init_decl_processing): Add
	soft_lookupinterfacemethodbyname_node.

	* gjavah.c (print_method_info): Final methods have vtable entries,
	so gjavah needs to output them.
	* class.c (layout_class_method): Generate vtable entries for final
	methods.
	* parse.y (invocation_mode): Use INVOKE_VIRTUAL for indirect
	dispatch, even if a method is final.

2004-05-25  Andrew Haley  <aph@redhat.com>

	* class.c (build_symbol_entry): Convert the names of constructors
	to init_identifier_node when generating an entry for the indirect
	dispatch table.

	* expr.c (build_known_method_ref): Generate indirect calls for
	all methods marked DECL_EXTERNAL or TREE_PUBLIC.

2004-05-24  Andrew Haley  <aph@redhat.com>

	* expr.c (build_known_method_ref): Make sure ARRAY_REF access to
	atable element is of the right type.

	* class.c (build_static_field_ref): Cast pointer to correct type
	for field.

2004-04-20  Bryce McKinlay  <mckinlay@redhat.com>

	* Merged with HEAD as of 20040514. Diff against
	gcj-abi-2-merge-20040514.

2004-04-16  Andrew Haley  <aph@redhat.com>

	* verify.c (check_pending_block): Disable subroutine checks.
	(defer_merging): New function.
	(merge_types): If types are dummy, use defer_merging to combine them.
	(verify_jvm_instructions): If invocation is invokeinterface and
	target is dummy, assume target really is an interface.

	* parse.y (patch_invoke): Break out call to java_create_object.

	* lang.c (flag_verify_invocations): New.

	* jcf-parse.c (load_class): If we've already failed to load a
	class, don't try again.
	(load_class): If we can't find a .class file, don't fail, but emit
	a warning.
	(parse_class_file): Don't act on dummy methods.

	* java-tree.h (flag_verify_invocations): New.
	(TYPE_DUMMY): New.
	(lang_type.dummy_class): New field.
	(java_create_object): New function.
	(METHOD_DUMMY): New.

	* expr.c (build_field_ref): Widen field offset.
	(pop_type_0): If the type in stack_type_map is a TREE_LIST, check
	that each of its elements is compatible with the one we're
	popping.
	(pop_type_0): Issue a warning to say that we need to generate a
	runtime check.
	(java_create_object): New function.
	(build_field_ref): Only generate hard refs if we're not using
	indirect dispatch.
	(expand_java_field_op): If we're using !verify_invocations and we
	see a missing field, generate a decl for it.

	(expand_invoke): If a class doesn't have the method we seek and
	we're using !flag_verify_invocations, generate a decl for the
	method now.

	(build_known_method_ref): Always use indirect dispatch via the
	atable for static methods.

	(expand_java_NEW): Break out object creation into new function,
	java_create_object.

	(can_widen_reference_to): Issue a warning to say that we need to
	generate a runtime check.

	* class.c (set_super_info): Inherit TYPE_DUMMY from sureclass.
	(make_method_value): Also use index for interfaces.
	(make_class_data): Skip dummy field for inherited data.
	Don't build method array for dummy methods.
	Set size_in_byte to -1 when using inirect dispatch
	Don't build a hard class ref if we don't have a hard ref to our
	superclass, or if we're using inirect dispatch.
	Null out dispatch tables.

	(layout_class_method): Don't complain about non-static method
	overrides static method is method is artificial.

	(build_static_field_ref): Disable atable references to static
	fields for the time being.

	(layout_class_methods): Check for CLASS_INTERFACE as
	well as CLASS_ABSTRACT.

2004-11-24  Steven Bosscher  <stevenb@suse.de>

	* class.c (make_class_data): Don't check flag_inline_functions.
	* lang.c (flag_really_inline): Remove unused flag.
	(java_handle_option): Don't set it here.  Remove special handling
	of flag_inline_functions for Java.
	(java_init): Don't set flag_inline_trees here.  Already done...
	(java_post_options): ...here.  Don't clear flag_inline_functions.

2004-11-24  Steven Bosscher  <stevenb@suse.de>

	* java-gimplify.c (java_gimplify_labeled_block_expr): New function.
	(java_gimplify_exit_block_expr): New function.
	(java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and
	LABELED_BLOCK_EXPR.
	* java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def.
	(EXIT_BLOCK_EXPR): Likewise.
	* java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h.
	(LABELED_BLOCK_BODY): Likewise.
	(EXIT_BLOCK_LABELED_BLOCK): Likewise.
	* jcf-write.c (generate_bytecode_insns): Don't handle the unused
	EXIT_BLOCK_RETURN operand.  Use EXIT_BLOCK_LABELED_BLOCK instead of
	TREE_OPERAND.
	* lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR.
	(java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and
	EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND.  Don't handle the
	second operand of EXIT_BLOCK_EXPR.
	* parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of
	TREE_OPERAND.
	(build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes.

2004-11-23  Ben Elliston  <bje@au.ibm.com>

	* xref.h (xref_flag_value): Remove.
	(xref_set_data, xref_get_data): Likewise.
	(xref_set_current_fp): Likewise.
	(XREF_NONE): Likewise.
	(XREF_GET_DATA): Likewise.
	* xref.c (xref_flag_value): Remove.
	(xref_set_data, xref_get_data): Likewise.
	(xref_set_current_fp): Likewise.

2004-11-23  Ben Elliston  <bje@au.ibm.com>

	* gjavah.c (output_directory): Make static.
	(temp_directory): Likewise.

2004-11-15  Tom Tromey  <tromey@redhat.com>

	* decl.c (instn_ptr_type_node): Removed.
	(lineNumbers_ptr_type_node): Removed.
	(jint_type): Removed.
	(jint_ptr_type): Removed.

2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>

	PR java/15576
	* check-init.c (check_init): Ignore DECL_EXPR.
	* expr.c (always_initialize_class_p): Reenable.
	(build_class_init): Use a variable to store the decl.  Also use
	boolean_false_node instead of integer_zero_node.
	* parse.y (attach_init_test_initialization_flags): Add a decl_expr
	to the block.

2004-11-08  Tom Tromey  <tromey@redhat.com>

	PR java/16843:
	* gjavah.c (HANDLE_END_FIELD): Call print_field_info when
	generating a JNI header.
	(print_field_info): Handle JNI headers.
	(jni_print_float): Likewise.
	(jni_print_double): Likewise.

2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>

	* decl.c (end_java_method): Remove duplicated code.

2004-11-06  Zack Weinberg  <zack@codesourcery.com>
	    Gerald Pfeifer  <gerald@pfeifer.com>

	* lex.h (HAVE_ICONV): Undefine if we do not have HAVE_ICONV_H
	as well.

2004-11-02  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/17265
	* class.c: Reinstate 2004-08-18 patch.
	(make_local_function_alias): Don't create an alias for extern (native)
	functions.

2004-10-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR java/17265
	* class.c (make_local_function_alias): Revert 2004-08-18 change.
	(make_method_value): Likewise.

2004-10-21  Andrew Haley  <aph@redhat.com>

	PR java/18091:
	* jcf-parse.c (set_source_filename): Add code to build new sfname.

2004-10-20  Andrew Haley  <aph@redhat.com>

	* decl.c (end_java_method): Don't expand if flag_syntax_only.
	Remove duplicated code block.

2004-10-18  Steven Bosscher  <stevenb@suse.de>

	* Make-lang.in (java/parse.o-warn, java/parse-scan.o-warn):
	New rules to work around old Bison warnings.

2004-10-17  Steven Bosscher  <stevenb@suse.de>

	* class.c (ident_subst): Always alloca buffer.
	* java-opcodes.h (LAST_AND_UNUSED_JAVA_OPCODE): Add this dummy
	opcode after including javaop.def.
	* jcf-dump.c (CHECK_PC_IN_RANGE): Return 0 from the arm of the
	conditional expression that exits, to avoid warnings.
	* verify.c (CHECK_PC_IN_RANGE): Mark the __GNUC__ definition as
	a user of an extension.
	* win32-host.c: Move check down to have non-empty file when
	WIN32 is not defined.

	* Make-lang.in (java-warn): Add STRICT_WARN.
	(java/jcf-io.o-warn): Don't have Werror for this file.
	* jcf-io.c (caching_stat): Add FIXME for non-POSIX scandir use.

2004-10-16  Hans-Peter Nilsson  <hp@bitrange.com>

	* expr.c (expr_add_location): Move declaration to before all
	statements.
	* parse.y (java_expand_classes): Ditto.
	* lex.c (java_peek_unicode): Ditto.

2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>

	* check-init.c: Use %<, %> and %q for quoting in diagnostics,
	if possible, else convert `foo' to 'foo'.
	* class.c: Likewise.
	* decl.c: Likewise.
	* expr.c: Likewise.
	* jcf-io.c: Likewise.
	* jcf-parse.c: Likewise.
	* lang.c: Likewise.
	* lex.c: Likewise.
	* parse.h: Likewise.

2004-10-16  Ranjit Mathew  <rmathew@hotmail.com>

	* parse.y (parse_warning_context): Remove ATTRIBUTE_PRINTF_2 and
	rename parameter 'msg' to 'msgid' in function declaration.
	(issue_warning_error_from_context): Likewise.
	(yyerror): Rename parameter 'msg' to 'msgid'.
	(all over): Use new quoting style for diagnostics.

2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>

	* boehm.c, builtins.c, java-except.h, jcf-io.c, jcf-path.c,
	jcf.h, lang-specs.h, lex.c, lex.h, resource.c, win32-host.c:
	Update copyright.

2004-10-14  Matt Austern  <austern@apple.com>

	* lang.c (java_tree_inlining_walk_subtrees): Last arg is struct
	pointer_set_t* now.

2004-10-13  Tom Tromey  <tromey@redhat.com>

	PR java/15578:
	* lang.opt (--extdirs): Document.
	* jvspec.c (lang_specific_driver): Recognize -encoding and
	-extdirs.

2004-10-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* parse.y (issue_warning_error_from_context): Use va_list *
	instead of va_list parameter.
	(parse_error_context): Update call.
	(parse_warning_context): Likewise.

2004-10-05  Zack Weinberg  <zack@codesourcery.com>

	* parse.y, parse-scan.y: Add list of diagnostic messages to
	insulate translation template from version of yacc/bison used
	to compile the grammar.

2004-10-05  Ranjit Mathew  <rmathew@hotmail.com>

	Prepare for %q, %< and %> in diagnostic message strings.
	* java-tree.h (parse_error_context): remove ATTRIBUTE_PRINTF_2.
	Name second parameter 'msgid'.
	* parse.y: Additionally include pretty-print.h and diagnostic.h.
	(issue_warning_error_from_context): Use pretty-printer functions
	instead of vsprintf for constructing formatted messages. Rename
	parameter 'msg' to 'msgid'.
	(parse_error_context): Rename parameter 'msg' to 'msgid'.
	(parse_warning_context): Likewise.

2004-10-05  Andrew Haley  <aph@redhat.com>

	PR java/17779
	* jcf-parse.c (parse_zip_file_entries): If a class has a
	superclass and a TYPE_SIZE of zero, lay it out.

2004-09-30  Andrew Haley  <aph@redhat.com>

	PR java/17733
	* jcf-parse.c (compute_class_name): Rewrite.

2004-10-01  Jan Hubicka  <jh@suse.cz>

	* java.c (java_expand_body): Update call of tree_rest_of_compilation.

2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>

	* lex.c: Fix a comment typo.

2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>

	* java-tree.h: Fix a comment typo.

2004-09-30  Per Bothner  <per@bothner.com>

	Simplify lexer.  Implement --enable-mapped-location support.
	* jcf-parse.c (parse_class_file):  Use linemap_line_start.
	(parse_source_file_1): Pass filename as extra parameter, so we can call
	linemap_add and set input_location here, rather than in both callers.
	(read_class): Pass copied filename to parse_source_file_1.
	Don't initialize wfl_operator - only needed for source compilation.
	(read_class, jcf_parse):  Call linemap_add with LC_LEAVE.
	* lex.h:  Remove a bunch of debugging macros.
	* lex.h (struct_java_line, struct java_error):  Remove types.
	(JAVA_COLUMN_DELTA):  Remove - use java_lexer.next_colums instead.
	(struct java_lc_s):  Remove prev_col field.
	(struct java_lexer):  New fields next_unicode, next_columns, and
	avail_unicode.  New position field, and maybe token_start field.
	Don't need hit_eof field - use next_unicode == -1 instead.
	(JAVA_INTEGERAL_RANGE_ERROR):  Rename to JAVA_RANGE_ERROR.
	(JAVA_RANGE_ERROR, JAVA_FLOAT_ANGE_ERROR):  Update accordingly.
	* parse.h:  Various changes for USE_MAPPED_LOCATION.
	(EXPR_WFL_EMIT_LINE_NOTE): XXX
	(BUILD_EXPR_WFL, EXPR_WFL_ADD_COL): Remove no-longer-used macros.
	(struct parser_ctxt):  New file_start_location field.
	Remove p_line, c_line fields since we no longer save lines.
	Remove elc, lineno, and current_jcf fields - no longer used.
	* parse.y:  Updates for USE_MAPPED_LOCATION and new lexer.
	Don't use EXPR_WFL_ADD_COL since that isn't trivial with
	source_location and is probably not needed anymore anyway.
	Use new expr_add_Location function.
	(SET_EXPR_LOCATION_FROM_TOKEN):  New convenience macro.
	(java_pop_parser_context):  Minor cleanup.
	(java_parser_context_save_global, java_parser_context_restore_global,
	java_pop_parser_context):  Save/restore input_location as a unit.
	(issue_warning_error_from_context):  If USE_MAPPED_LOCATION take
	a source_location instead of a wfl context node.
	(check_class_interface_creation):  input_filename is not addressable.
	(create_artificial_method):  Calling java_parser_context_save_global
	and java_parser_context_restore_global is overkill.  Instead,
	temporarily set input_location from class decl.
	(java_layout_seen_class_methods): Set input_location from method decl.
	(fix_constructors): Make more robust if no EXPR_WITH_FILE_LOCATION.
	(finish_loop_body):  Likewise.
	* lex.c: Updates for USE_MAPPED_LOCATION.  Use build_unknwon_wfl.
	(java_sprint_unicode):  Take a character, not index in line.
	(java_sneak_uncode):  Replaced by java_peek_unicode.
	(java_unget_unicode):  No longer used.
	(java_allocate_new_line. java_store_unicode):  Removed, since we
	no longer remember "lines".
	(java_new_lexer):  Update for new data structures.
	(java_read_char):  Move unget_value checking to java_read_unicode.
	(java_get_unicode, java_peek_unicode, java_next_unicode): New more
	efficient functions that are used directly when lexing.
	(java_read_unicode_collapsing_terminators):  No longer needed.
	(java_parse_end_comment, java_parse_escape_sequence, do_java_lex):
	Re-organize to use java_peek_unicode to avoid java_unget_unicode.
	(java_parse_escape_sequence):  Rewrite to be simpler / more efficient.
	(do_java_lex):  Lots of movings around to avoid java_unget_unicode,
	combine switch branches, and test for common token kinds earlier.
	(java_lex_error):  Rewrite.
	* jv-scan.c (expand_location): New function, copied from tree.c.
	(main): Set ctxp->filename instead of setting input_filename directly.

2004-09-30  Per Bothner  <per@bothner.com>

	More cleanup for --enable-mapped-location.
	* class.c (push_class):  If USE_MAPPED_LOCATION don't set
	input_location here.  Instead do it in give_name_to_class.
	(build_class_ref):  Set DECL_ARTIFICIAL, for the sake of dwarf2out.
	* expr.c (expand_byte_code): Call linemap_line_start.
	* expr.c (build_expr_wfl):  If USE_MAPPED_LOCATION, change final
	parameters to a source_location.  Don't need EXPR_WFL_FILENAME_NODE.
	(expr_add_location):  New function, if USE_MAPPED_LOCATION.
	* class.c (maybe_layout_super_class):  Adjust build_expr_wfl call
	to USE_MAPPED_LOCATION case.

	* java-tree.h (JAVA_FILE_P, ZIP_FILE_P):  Remove unused macros.
	* jcf-parse.c (java_parse_file): Don't set input_filename.
	Use IS_A_COMMAND_LINE_FILENAME_P to check for duplicate filenames.
	Create a list of TRANSLATION_UNIT_DECL.
	(current_file_list):  Is now a TRANSLATION_UNIT_DECL chain.  The
	reason is so we can set a DECL_SOURCE_LOCATION for each file.
	(java_parse_file):  Don't set unused ZIP_FILE_P, JAVA_FILE_P..
	Create line-map LC_ENTER/LC_LEAVE entries for archive itself.
	(file_start_location):  New static.
	(set_source_filename):  Avoid extra access to input_filename macro.
	Concatenate new name with class's package prefix.
	(set_source_filename, give_name_to_class): Update.
	(give_name_to_class):  Set class's "line 0" input_location here.
	(parse_class_file):  Set input_location as a unit.

	* jcf-parse.c (load_class): Sanity test if missing inner class file.

2004-09-29  Per Bothner  <per@bothner.com>

	* java-tree.h:  Redefine some macros and add some declaration
	to handle the USE_MAPPED_LOCATION case.
	* parse.h (EXPR_WFL_QUALIFICATION):  Use operand 1, not 2.
	* java-tree.h (EXPR_WFL_FILENAME_NODE):  Use operand 2, not 1.
	* java-tree.def (EXPR_WITH_FILE_LOCATION): Only need two operands in
	USE_MAPPED_LOCATION case, since EXPR_WFL_FILENAME_NODE is gone.

	* check-init.c (check_init): Handle USE_MAPPED_LOCATION case.
	* decl.c (finish_method, java_add_stmt): Likewise.
	* java-gimplify.c (java-gimplify.c):  Likewise.
	* jcf-write.c (generate_bytecode_insns):  Likewise.
	* lang.c (java_post_options): Likewise - call linemap_add.

2004-09-29  Andrew Haley  <aph@redhat.com>

	PR java/17007
	* parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
	result of TRUNC_MOD_EXPR.
	(patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
	* decl.c (java_init_decl_processing): Mark
	soft_lookupinterfacemethod_node and soft_instanceof_node pure.

2004-09-28  Tom Tromey  <tromey@redhat.com>

	PR java/15710:
	* class.c (add_miranda_methods): Load superinterface if not
	already loaded.

2004-09-28  Andrew Haley  <aph@redhat.com>

	PR java/17586
	* jcf-parse.c (load_class): Don't try to read a class that we've
	already read.

2004-09-28  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (load_class): Back out previous broken patch.

2004-09-28  Andrew Haley  <aph@redhat.com>

	PR java/17586
	* jcf-parse.c (load_class): Don't try to read a class that we've
	already read.
	Check that we really did read the right class.

2004-09-25  Tom Tromey  <tromey@redhat.com>

	PR java/17500:
	* parse.y (create_artificial_method): Use add_method_1.

2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c, jcf-dump.c, parse-scan.y, parse.y: Fix
	comment typos.
	* gcj.texi: Fix typos.

2004-09-24  Tom Tromey  <tromey@redhat.com>

	PR java/15656:
	* parse.y (class_instance_creation_expression): Set `$$' to NULL
	in error parts of rule.
	(unary_expression): Don't call error_if_numeric_overflow when $1
	is NULL.

2004-09-24  Tom Tromey  <tromey@redhat.com>

	PR java/16789:
	* parse.y (resolve_qualified_expression_name): Set
	CAN_COMPLETE_NORMALLY on first call when chaining static calls.
	* expr.c (force_evaluation_order): Check for empty argument list
	after stripping COMPOUND_EXPR.

2004-09-23  Andrew Haley  <aph@redhat.com>

	PR java/16927:
	* parse.y (java_complete_lhs): Call patch_string() on Operand 1 of
	COND_EXPRs.

2004-09-23  Tom Tromey  <tromey@redhat.com>

	PR java/17329:
	* java-gimplify.c (java_gimplify_expr) <SAVE_EXPR>: Ignore case
	where operand is null.

2004-09-23  Tom Tromey  <tromey@redhat.com>

	PR java/17380:
	* parse.y (not_accessible_p): Allow access to protected members
	even when class is not static.

2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in: Revert the gcc-none.o change.

2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>

	* parse.y (patch_anonymous_class): VEC_space returns true if there
	is space.

2004-09-21  Matt Austern  <austern@apple.com>

	Fix bootstrap.
	* gjavah.c (free_method_name_list): Fix function definition so
	it's a proper C prototype.

2004-09-21  Tom Tromey  <tromey@redhat.com>

	PR java/17575:
	* gjavah.c (free_method_name_list): New method.
	(main): Call it.

2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* java-tree.def: Use tree_code_class enumeration constants
	instead of code letters.
	* java-gimplify.c, jcf-write.c, lang.c, parse.y: Update for
	new tree-class enumeration constants.

2004-09-13  Tom Tromey  <tromey@redhat.com>

	PR java/17216:
	* class.c (layout_class_method): Put synthetic methods into the
	vtable.

2004-09-11  Andrew Pinski  <apinski@apple.com>

	* Make-lang.in (java/ggc-none.c): Change dependency
	for ggc.h into $(GGC_H).

2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>

	* Make-lang.in (java/win32-host.o): Add dependency on
	coretypes.h.
	* win32-host.c: Add includes for coretypes.h, jcf.h

2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>

	* Make-lang.in (GCJH_OBJS): Change dependency from
	ggc-none.o to java/ggc-none.o
	(JCFDUMP_OBJS): Likewise.
	(java/ggc-none.o): New target.

2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>

	* boehm.c (get_boehm_type_descriptor):  Adjust build_int_cst calls.
	* class.c (build_utf8_ref, build_static_field_ref,
	make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table): Likewise.
	* constants.c (get_tag_node, build_ref_from_constant_pool,
	build_constants_constructor): Likewise.
	* decl.c (java_init_decl_processing): Likewise.
	* expr.c (build_java_array_length_access, build_newarray,
	expand_java_multianewarray, expand_java_pushc, expand_iinc,
	build_java_binop, build_field_ref, expand_java_add_case,
	expand_java_call, build_known_method_ref, build_invokevirtual,
	build_invokeinterface, build_jni_stub): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* jcf-parse.c (get_constant): Likewise.
	* lex.c (do_java_lex): Likewise.
	* parse.y (patch_binop, patch_unaryop, patch_cast,
	build_newarray_node, patch_newarray): Likewise.
	* resource.c (compile_resource_data): Likewise.
	* typeck.c (build_prim_array_type): Likewise.

2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (java_init_decl_processing): Adjust
	initialize_sizetypes call.

2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>

	* jv-scan.c (fancy_abort): Add.

2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>

	* expr.c (build_java_arrayaccess): Use convert to change
	len's type.

2004-08-19  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (make_local_function_alias): Allocate extra space for 'L'
	in name buffer. Reported by Thomas Neumann.

2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>

	* parse.h (JAVA_RADIX10_FLAG): Rename to ...
	(JAVA_NOT_RADIX10_FLAG): ... here.  Invert meaning.
	* lex.c (do_java_lex): Adjust.
	(error_if_numeric_overflow): Likewise.

2004-08-18  Andrew Pinski  <apinski@apple.com>

	* class.c (make_local_function_alias): Only make a new decl if we
	support alias attribute on all decls.

2004-08-18  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (make_local_function_alias): New function. Create local
	alias for public method DECL.
	(make_method_value): Use make_local_function_alias.
	* parse.y (craft_constructor): Don't special-case anonymous classes.
	Always set ctor_name to init_identifier_node.
	(lookup_method_invoke): Call layout_class_method when creating
	anonymous class constructor.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* java-gimplify.c (java_gimplify_expr): Move '2' handling into
	default case.  Treat '<' similarly.  Update for
	is_gimple_formal_tmp_var name change.

2004-08-17  Andrew Haley  <aph@redhat.com>

	* lang.c (lang_printable_name): Obey verbose flag.
	* parse.y (constructor_circularity_msg): Set VERBOSE arg for
	lang_printable_name().
	(verify_constructor_circularity, get_printable_method_name,
	check_abstract_method_definitions, java_check_regular_methods,
	java_check_abstract_methods, check_inner_class_access,
	fix_constructors, patch_method_invocation, patch_return):
	Likewise.
	* expr.c (pop_type_0): Likewise.

	* java-tree.h (lang_printable_name_wls): Delete.

2004-08-16  Tom Tromey  <tromey@redhat.com>

	PR java/8473:
	* parse.y (primary): Changed for initialized and uninitialized
	array creations.
	(array_access): Handle array_creation_initialized.
	(array_creation_expression): Split into
	array_creation_initialized and array_creation_uninitialized.

2004-08-16  Andrew Haley  <aph@redhat.com>

	* jcf-write.c (find_constant_index): Canonicalize NaNs when
	generating bytecode.

2004-08-16  Elliot Lee <sopwith@redhat.com>

	PR java/9677
	* jcf-parse.c (java_parse_file): Handle filenames with embedded
	spaces, and quoted filelists.

2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>

	* boehm.c (get_boehm_type_descriptor): Use build_int_cst.
	* class.c (build_utf8_ref, build_static_field_ref,
	make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table): Likewise.
	* constants.c (get_tag_node,  build_ref_from_constant_pool,
	build_constants_constructor): Likewise.
	* decl.c (java_init_decl_processing): Likewise.
	* expr.c (build_java_array_length_access, build_newarray,
	expand_java_multianewarray, expand_java_pushc, expand_iinc,
	build_java_binop, build_field_ref, expand_java_add_case,
	expand_java_call, build_known_method_ref, build_invokevirtual,
	build_invokeinterface, build_jni_stub): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* jcf-parse.c (get_constant): Likewise.
	* lex.c (do_java_lex): Likewise.
	* parse.y (patch_binop, patch_unaryop, patch_cast,
	build_null_of_type, patch_newarray): Likewise.
	* resource.c (compile_resource_data): Likewise.
	* typeck.c (build_prim_array_type): Likewise.

2004-08-10  Bryce McKinlay  <mckinlay@redhat.com>

	* java-gimplify.c (java_gimplify_new_array_init): Use create_tmp_var.
	Don't create BLOCK here or call java_gimplify_block.

2004-08-09  H.J. Lu  <hongjiu.lu@intel.com>

	* java-tree.h (flag_deprecated): Removed.
	* lang.opt (Wdeprecated): Use existing Var(warn_deprecated).
	* parse.y (check_deprecation): Check warn_deprecated instead of
	flag_deprecated.

2004-08-06  Kelley Cook  <kcook@gcc.gnu.org>

	* lang.c (flag_emit_class_files, flag_filelist_file, flag_redundant,
	flag_use_divide_subroutine, flag_use_boehm_gc, flag_store_check,
	flag_hash_synchronization, flag_assert, flag_jni, flag_newer,
	flag_check_references, flag_extraneous_semicolon, flag_deprecated,
	flag_force_classes_archive_check, flag_optimize_sci,
	flag_indirect_dispatch): Remove explicit declarations.
	* lang.opt: Add implicit declare/define/assign.  Remove obsolete
	final comment.

2004-08-05  Michael Chastain  <mec.gnu@mindspring.com>

	PR bootstrap/14893
	* Make-lang.in (java.install-man): Install from either build
	tree or source tree, whichever has the file first.

2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>

	* jcf-parse.c (get_constant): Adjust force_fit_type call.
	* lex.h (SET_LVAL_NODE_TYPE): Remove.
	* lex.c (java_perform_atof): Use SET_LVAL_NODE directly.
	(do_java_lex): Likewise. Adjust force_fit_type call.

2004-08-04  Roger Sayle  <roger@eyesopen.com>
	    Andrew Haley  <aph@redhat.com>

	* typeck.c (convert_ieee_real_to_integer): Call fold on the range
	checking trees as they're being built.
	(convert): Call convert_ieee_real_to_integer if we're
	converting a constant, even if we're writing a class file.

2004-08-02  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/16701
	* parse.y (fold_constant_for_init): Call resolve_field_access with
	correct current_class context.

2004-08-01  Roger Sayle  <roger@eyesopen.com>

	* decl.c (update_aliases, initialize_local_variable): Replace calls
	to build with calls to buildN.
	* java-gimplify.c (java_gimplify_modify_expr): Likewise.
	* java-tree.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Likewise.
	* parse.h (BUILD_THROW): Likewise.
	* parse.y (switch_expression, synchronized_statement,
	catch_clause_parameter, array_creation_expression,
	conditional_expression, make_qualified_name,
	resolve_qualified_expression_name, patch_method_invocation,
	patch_invoke, build_method_invocation, build_new_invocation,
	build_assignment, patch_assignment, build_binop, patch_binop,
	build_string_concatenation, build_incdec, patch_unaryop,
	patch_cast, build_array_ref, build_newarray_node, patch_newarray,
	patch_return, build_if_else_statement, build_labeled_block,
	build_new_loop, build_loop_body, build_bc_statement,
	build_assertion, encapsulate_with_try_catch, build_try_statement,
	build_try_finally_statement, patch_synchronized_statement,
	emit_test_initialization): Likewise, replace build with buildN.

2004-07-28  Eric Christopher  <echristo@redhat.com>

	* lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
	(java_unsafe_for_reeval): Ditto.

2004-07-26    <hp@bitrange.com>

	* parse.y (build_super_invocation): Adjust declaration order to
	avoid declaration after statement.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* decl.c: Rename all identifiers named `class' to `cl'.

2004-07-25  Richard Henderson  <rth@redhat.com>

	* decl.c (build_result_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P.

2004-07-23  Mike Stump  <mrs@apple.com>

	* boehm.c (set_bit): Improve type safety wrt unsignedness.
	* gjavah.c (throwable_p, decode_signature_piece,
	print_full_cxx_name, print_include, add_namelet, add_class_decl,
	process_file): Likewise.
	* jcf-dump.c (main): Likewise.
	* jcf-io.c (read_zip_member): Likewise.
	* jcf-parse.c (HANDLE_CONSTANT_Utf8, get_constant,
	give_name_to_class, get_class_constant): Likewise.
	* jcf-write.c (find_constant_wide, push_long_const,
	generate_classfile): Likewise.
	* lex.c (java_new_lexer, java_read_char, cxx_keyword_p): Likewise.
	* parse.y (read_import_dir): Likewise.
	* typeck.c (parse_signature_type): Likewise.
	* verify.c (verify_jvm_instructions): Likewise.
	* zextract.c (find_zip_file_start, read_zip_archive): Likewise.

2004-07-23  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* Make-lang.in: Replace rmic and rmiregistry references with
	grmic and grmiregistry.
	* gcj.texi: Likewise.

2004-07-20  Andrew Haley  <aph@redhat.com>

	PR java/16431.
	* verify.c (verify_jvm_instructions): Comment change only.

	* typeck.c (build_java_array_type): Add size field to array name.

	* java-tree.h (LOCAL_SLOT_P): New.
	(update_aliases): Add PC argument.
	(pushdecl_function_level): New function.

	* java-gimplify.c (java_gimplify_expr): Handle VAR_DECL,
	MODIFY_EXPR, and SAVE_EXPR.
	(java_gimplify_modify_expr): New function.

	* expr.c (push_type_0): Call find_stack_slot() to create temporary.
	(expand_iinc): Pass PC to update_aliases().
	(STORE_INTERNAL): Likewise.
	(process_jvm_instruction): Likewise.

	* decl.c (base_decl_map): New variable.
	(uniq): New variable.
	(update_aliases): Rewrite with more thorough checking.
	(debug_variable_p): New function.
	(push_jvm_slot): Don't initialize local variable.  Don't pushdecl.
	(check_local_named_variable): Delete whole function.
	(initialize_local_variable): New function.
	(check_local_unnamed_variable): Add checks and comments.
	(find_local_variable): Rewrite.
	(java_replace_reference): New function.
	(function_binding_level): New variable.
	(pushdecl_function_level): New function.
	(maybe_pushlevels): Set DECL_LOCAL_END_PC.
	(maybe_pushlevels): Call pushdecl() on each of the new decls.
	(start_java_method): Reset uniq.  Create base_decl_map.  Set
	function_binding_level.
	(end_java_method): Null unused fields to save memory.

2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (add_interface_do): Remove.
	(set_super_info, interface_of_p, maybe_add_interface,
	add_interface, make_class_data, layout_class,
	add_miranda_methods): Adjust BINFO accessors and addition.
	* expr.c (can_widen_reference_to, lookup_field): Adjust BINFO
	accessors.
	* jcf-write.c (generate_classfile): Likewise.
	* parse.y (patch_anonymous_class, check_inner_circular_reference,
	check_circular_reference, java_complete_class,
	check_abstract_method_definitions,
	java_check_abstract_method_definitions,
	check_interface_throws_clauses, java_check_abstract_methods,
	lookup_java_interface_method2,
	find_applicable_accessible_methods_list): Adjust BINFO accessors
	and addition.
	* typeck.c (find_method_in_interfaces): Adjust BINFO accessors.

2004-07-18  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (max_builtin, min_builtin,
	java_build_function_call_expr): Replace calls to build with buildN.
	* class.c (build_class_ref, build_static_field_ref,
	get_dispatch_table, make_class_data, layout_class_method): Likewise.
	* constants.c (build_ref_from_constant_pool): Likewise.
	* decl.c (update_aliases, push_jvm_slot, poplevel, finish_method,
	add_stmt_to_compound): Likewise.
	* except.c (build_exception_object_ref, expand_end_java_handler):
	Likewise.
	* java-gimplify.c (java_gimplify_case_expr,
	java_gimplify_default_expr, java_gimplify_block,
	java_gimplify_new_array_init, java_gimplify_try_expr): Likewise.
	* jcf-write.c (generate_bytecode_insns): Likewise.
	* typeck.c (convert_ieee_real_to_integer): Likewise.

2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* java-tree.h (builtin_function): Declare.

2004-07-16  Steven Bosscher  <stevenb@suse.de>

	* parse.y (java_complete_expand_methods, java_expand_classes): Don't
	abuse restore_line_number_status.

2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* jcf-parse.c (java_emit_static_constructor): Specify default
	priority.

2004-07-13  Per Bothner  <per@bothner.com>

	* java-tree.h (all_class_filename):  Remove useless macro.
	(enum java_tree_index):  Remove JTI_ALL_CLASS_FILENAME constant.
	(BUILD_FILENAME_IDENTIFIER_NODE):  Remove useless macro.
	* parse.y (java_parser_context_restore_global):  Replace
	BUILD_FILENAME_IDENTIFIER_NODE by plain get_identifier.
	* jcf-parse.c (read_class, java_parse_file):  Likewise.

2004-07-12  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/16474
	gjavah.c (print_field_info): Emit constant only if field is static.

2004-07-11  Roger Sayle  <roger@eyesopen.com>

	* expr.c (java_truthvalue_conversion, flush_quick_stack,
	java_stack_swap, java_stack_dup, build_java_athrow, build_java_jsr,
	build_java_ret, build_java_throw_out_of_bounds_exception,
	build_java_array_length_access, java_check_reference,
	build_java_arrayaccess, build_java_arraystore_check, build_newarray,
	build_anewarray, expand_java_multianewarray, expand_java_arraystore,
	expand_java_arrayload, build_java_monitor, expand_java_return,
	expand_load_internal, expand_java_NEW, build_get_class,
	build_instanceof, expand_java_CHECKCAST, expand_iinc,
	build_java_soft_divmod, build_java_binop, build_field_ref,
	expand_compare, expand_java_goto, expand_java_switch,
	expand_java_add_case, build_class_init, build_known_method_ref,
	invoke_build_dtable, build_invokevirtual, build_invokeinterface,
	expand_invoke, build_jni_stub, expand_java_field_op,
	java_expand_expr, expand_byte_code, STORE_INTERNAL,
	force_evaluation_order, emit_init_test_initialization): Convert
	calls to "build" into calls to the prefered "buildN" functions.

2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* java-tree.h (set_block): Remove.
	* lang.c (java_clear_binding_stack): New.
	(LANG_HOOKS_CLEAR_BINDING_STACK): Define.
	* decl.c (struct binding_level): Remove this_block.
	(clear_binding_level): Likewise.
	(poplevel): Don't handle this_block.
	(set_block): Remove.

2004-07-10  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (common_enclosing_context_p): Remove statement with no
	side-effects.

2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/8618
	* parse.y (create_anonymous_class): Remove 'location' argument. Use
	the WFL from TYPE_NAME to get line number for the decl. Fix comment.
	(craft_constructor): Inherit access flags for implicit constructor
	from the enclosing class.
	(create_class): Fix comment typo.
	(resolve_qualified_expression_name): Pass type of qualifier to
	not_accessible_p, not the type in which target field was found.
	(not_accessible_p): Handle inner classes. Expand protected
	qualifier-subtype check to enclosing instances, but don't apply this
	check to static members. Allow protected access to inner classes
	of a subtype. Allow private access within common enclosing context.
	(build_super_invocation): Get WFL line number info from current
	class decl.
	(build_incomplete_class_ref): Update for new create_anonymous_class
	signature.
	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Use
	common_enclosing_instance_p.
	* class.c (common_enclosing_context_p): New. Determine if types
	share a common enclosing context, even across static contexts.
	(common_enclosing_instance_p): Renamed from
	common_enclosing_context_p. Determines if types share a common
	non-static enclosing instance.
	* java-tree.h (common_enclosing_instance_p): Declare.
	* jcf-write.c (get_method_access_flags): New. Surpress private flag
	for inner class constructors.
	(generate_classfile): Use get_method_access_flags.

2004-07-09  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (interface_of_p): Check for null TYPE_BINFO.

2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (make_class): Do not create binfo here.
	(set_super_info): Create it here.
	* java-tree.h (CLASS_HAS_SUPER): Cope with lack of a binfo.

2004-07-08  Richard Henderson  <rth@redhat.com>

	* expr.c (case_identity, get_primitive_array_vtable,
	java_expand_expr, emit_init_test_initialization): Remove.
	* java-tree.h (java_expand_expr): Remove.
	* lang.c (LANG_HOOKS_EXPAND_EXPR): Remove.

2004-07-07  Per Bothner  <per@bothner.com>

	* class.c (build_static_field_ref):  Add a NOP_EXPR; otherwise we
	get internal error due to mismatched types.

	* gcj.texi (Invoking gij):  Document new -verbose:class flag.

	* gcj.texi (Linking):   New node.  Document -lgij usage.

2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* java-tree.h (CLASSTYPE_SPUER): Adjust BINFO macros.
	(TYPE_NVIRTUALS, TYPE_VTABLE): Likewise.
	* java/class.c (set_super_info, class_depth, interface_of_p,
	maybe_add_interface, add_interface, make_class_data,
	layout_class, add_miranda_methods): Adjust BINFO macros.
	* expr.c (can_widen_reference_to, lookup_field): Likewise.
	* jcf-write.c (generate_classfile): Likewise.
	* parse.y (patch_anonymous_class,
	check_inner_circular_reference, check_circular_reference,
	java_complete_class, check_abstract_method_definitions,
	java_check_abstract_method_definitions,
	check_interface_throws_clauses, java_check_abstract_methods,
	lookup_java_interface_method2,
	find_applicable_accessible_methods_list): Likewise.
	* typeck.c (find_method_in_interface): Likewise.
	* verify.c (merge_types): Likewise.

2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>

	* java-tree.h (CLASS_HAS_SUPER_FLAG): Use BINFO_FLAG_1.
	* class.c (add_interface_do): Use BINFO_VIRTUAL_P.

2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (make_class): Use make_tree_binfo.
	(set_super_info, add_interface_do): Likewise.
	* java-tree.h (CLASS_HAS_SUPER_FLAG): Expect a BINFO.

2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>

	* verify.c: Correct array element access formatting thinko.

2004-07-04  Ranjit Mathew  <rmathew@hotmail.com>

	* verify.c: Insert a short blurb at the start referring to the JVMS.
	(merge_type_state): Remove redundant nested if statement.
	(verify_jvm_instructions): Ensure current_subr is initialised to
	NULL_TREE.
	Minor formatting fixes all over the place.

2004-07-02  Richard Henderson  <rth@redhat.com>

	* jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* class.c (registerClass_libfunc): Remove.
	(init_class_processing): Don't set it.
	(emit_register_classes): Take list_p parameter.  Fill it in
	with _Jv_RegisterClass calls.
	* decl.c (java_init_decl_processing): Don't call
	init_resource_processing.
	* jcf-parse.c (java_emit_static_constructor): New.
	(java_parse_file): Call it.
	* resource.c (registerResource_libfunc): Remove.
	(init_resource_processing): Remove.
	(write_resource_constructor): Take list_p parameter.  Fill it in
	with _Jv_RegisterResource calls.
	* java-tree.h: Update prototypes.

2004-06-29  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/1262
	* class.c (layout_class_method): Do not override package-private
	method if its in a different package.
	(split_qualified_name): Move here from parse.y. Rename from
	breakdown_qualified. Add comment.
	(in_same_package): Move here from parse.y. Add comment.
	* java-tree.h (break_down_qualified, in_same_package): Declare.
	(in_same_package): Likewise.
	* parse.y (breakdown_qualified, in_same_package): Moved to class.c.
	Callers updated.

2004-06-29  Andrew Haley  <aph@redhat.com>

	* except.c (expand_start_java_handler): Push a new binding level.
	Don't build a TRY_CATCH_EXPR now, we'll do it later.  Call
	register_exception_range() to register where we'll do it.
	(expand_end_java_handler): Remove old bogus code.  Replace with
	new logic that simply builds TRY_CATCH_EXPRs and inserts them at
	the top of the expression we're curently building.
	(maybe_end_try): Delete.
	* decl.c (binding_level.exception_range): New field.
	(clear_binding_level): Add field exception_range.  Reformat.
	(poplevel): Call expand_end_java_handler().
	(poplevel): Call java_add_stmt only if functionbody is false.
	(maybe_poplevels): Don't call maybe_end_try() from here.
	(end_java_method): Clear no longer used trees in function decl.
	(register_exception_range): New function.
	* java-tree.h (register_exception_range, struct eh_range): Declare.

2004-06-28  Bryce McKinlay  <mckinlay@redhat.com>

	* jcf-write.c (get_classfile_modifiers): Formatting fixes.

2004-06-27  Ranjit Mathew  <rmathew@hotmail.com>

	Formatting fixes.
	* expr.c (class_has_finalize_method): Fix method name indentation.
	(expand_java_call): Remove K&R style parameter declaration.
	(expand_invoke): Fix statement indentation.
	(expand_java_field_op): Likewise.
	* parse-scan.y: Fix typo.
	(reset_report): Fix method name indentation.
	* parse.y (unresolved_type_p, build_expr_block): Remove extra blank
	line. Fix typos.
	* verify.c (verify_jvm_instructions): Document parameters, insert
	page break.
	* lang.c (lang_init_source): Fix method name indentation.
	* class.c (common_enclosing_context_p): Likewise.
	(emit_symbol_table): Fix parameter list indentation.
	* decl.c (add_stmt_to_compound, java_add_stmt): Remove K&R style
	parameter declaration.
	* constants.c: Fix copyright notice indentation.
	* typeck.c (find_method_in_superclasses): Fix parameter list
	indentation.
	(find_method_in_interfaces): Likewise.
	* zextract.c (makelong): Fix method name indentation.

2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/15715.
	* parse.y (create_interface): Set correct access modifiers for
	interfaces.
	* jcf-write.c (get_classfile_modifiers): New function.
	(generate_classfile): Use get_classfile_modifiers, not
	get_access_flags.

2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>

	* parse.y (register_incomplete_type): Set JDEP_ENCLOSING for "super"
	dependency to current parser context, not NULL_TREE, for top-level
	classes.
	(jdep_resolve_class): Enable member access check for all inner
	class dependencies.

2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>

	* parse.y (qualify_and_find): Pass type decl, not identifier, to
	load_class.

2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/15734
	* expr.c (expand_java_field_op): Ensure that target class for static
	field access has been loaded.

2004-06-26  Bryce McKinlay  <mckinlay@redhat.com>
	    Ranjit Mathew  <rmathew@hotmail.com>

	PR java/1207, java/16178
	* jcf-parse.c (load_class): Return immediately if passed a type decl
	where CLASS_FROM_SOURCE_P is set. Remove FIXME.
	* parse.y (do_resolve_class): Remove checks for CLASS_FROM_SOURCE_P
	before calling load_class.
	(qualify_and_find): Likewise.
	(find_in_imports_on_demand): Likewise.
	(find_applicable_accessible_methods_list): Likewise.

2004-06-24  Bryce McKinlay  <mckinlay@redhat.com>

	* parse.y (java_layout_seen_class_methods): Don't call load_class
	on class defined by source parser.

2004-06-23  Bryce McKinlay  <mckinlay@redhat.com>

	* parse.y (set_nested_class_simple_name_value): Removed.
	(java_complete_expand_class): Remove calls to
	set_nested_class_simple_name_value.

2004-06-22  Andrew Haley  <aph@redhat.com>
	    Ranjit Mathew  <rmathew@hotmail.com>

	Fixes PR java/16113.
	* decl.c (force_poplevels): Remove call to expand_end_bindings.

2004-06-22  Ranjit Mathew  <rmathew@hotmail.com>

	* parse.y (create_class): Correct diagnostic message about
	java.lang.Object extending anything else.

2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* class.c (build_class_ref): Add new operand for COMPONENT_REF.
	(build_static_field_ref): Likewise and add new operands for ARRAY_REF.
	* constants.c (build_ref_from_constant_pool): Likewise.
	* expr.c (build_java_array_length_access): Likewise.
	(build_get_class, build_field_ref, build_known_method_ref): Likewise.
	(invoke_build_dtable, build_invokevirtual): Likewise.
	(build_invokeinterface, java_expand_expr): Likewise.
	(emit_init_test_initialization): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* parse.y (make_qualifed_name, build_array_ref): Likewise.

2004-06-21  Andrew Haley  <aph@redhat.com>

	* java-gimplify.c (java_gimplify_block): set TREE_USED on the new
	block.

2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>

	* jcf.h (struct JCF): Change java_source, right_zip and finished
	to unsigned int.
	* lex.h (struct java_lexer): Change hit_eof, read_anything,
	byte_swap and use_fallback to unsigned int.
	* parse.h (struct _jdep): Change flag0 to unsigned int.

2004-06-17  Ranjit Mathew  <rmathew@hotmail.com>

	Fixes PR java/13948
	* parse.y (java_layout_seen_class_methods): Ensure class is loaded
	before trying to lay out its methods.
	* jcf-parse.c (read_class): Track parsed files using canonical paths
	obtained via lrealpath from libiberty.
	(java_parse_file): Likewise.
	(parse_source_file_1): Rename formal parameter to reflect its
	modified purpose. Minor formatting fix.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* class.c (emit_register_classes): Make the function uninlinable,
	do not set current_function_cannot_inline.
	* resource.c (write_resource_constructor): Do not reset
	flag_inline_functions around rest_of_compilation.

2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR java/15769
	* expr.c (java_truthvalue_conversion): Handle
	UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
	ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
	i.e. return the expression.

2004-06-03 Mark G. Adams  <mark.g.adams@sympatico.ca>

	* gjavah.c: Include version.h

2004-05-31  Bryce McKinlay  <mckinlay@redhat.com>

	* jcf-write.c (generate_bytecode_conditional): Correct handling
	of unordered conditionals. Add comment.

2004-05-29  Ranjit Mathew  <rmathew@hotmail.com>
	    Per Bothner  <per@bothner.com>

	* java-tree.h (DECL_LOCAL_FINAL_IUD): New macro to test if a
	local variable was initialised upon declaration.
	* parse.y (declare_local_variables): Set DECL_LOCAL_FINAL_IUD if
	variable was final and initialised upon declaration.
	* check-init.c (check_final_reassigned): Give error only if a blank
	final is not definitely unassigned or if an initialised final is
	reassigned.
	(check_bool_init): Respect JLS2 16.1.7 requirements for boolean
	assignment expressions. Remove case MODIFY_EXPR, label do_default.
	(check_init): Perform initialised-variable-removing-optimisation
	only on non-final local variables.

2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>

	* jcf-write.c (generate_bytecode_conditional): Handle binops
	UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
	and LTGT_EXPR.
	(generate_bytecode_insns): Likewise.

2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>

	* check-init.c (check_init): Handle binops UNLT_EXPR, UNLE_EXPR,
	UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, and LTGT_EXPR.

2004-05-28  Bryce McKinlay  <mckinlay@redhat.com>

	* gcj.texi (Object allocation): Remove _Jv_AllocBytes.
	(Mixing with C++): Document JvAllocBytes and RawDataManaged.

2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>

	* decl.c (struct binding_level): Add GTY marker. Compile
	binding_depth unconditionally.
	(current_binding_level, free_binding_level, global_binding_level):
	Likewise.
	(clear_binding_level): Unconditionally set binding_depth.
	(make_binding_level): Use ggc_alloc_cleared, not xmalloc.

2004-05-26  Bryce McKinlay  <mckinlay@redhat.com>

	* lex.c (java_new_lexer): Set 'encoding'.
	(java_read_char): Improve error message for unrecognized characters.
	* lex.h (struct java_lexer): New field 'encoding'.

2004-05-23  Paolo Bonzini  <bonzini@gnu.org>

	* Make-lang.in: Link in $(LIBCPP) instead of mkdeps.o.

2004-05-21  Mark Wielaard  <mark@klomp.org>

	* gjavah.c (print_stub_or_jni): Mark functions only JNIEXPORT, not
	extern.

2004-05-19  Paolo Bonzini  <bonzini@gnu.org>

	* typeck.c: Remove non-printable character 160.

2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>

	* check-init.c: Correct minor typos.

2004-05-13  Diego Novillo  <dnovillo@redhat.com>

	* Make-lang.in, expr.c, java-gimplify.c: Rename
	tree-simple.[ch] to tree-gimple.[ch].

2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>

	* java-gimplify.c (java_gimplify_expr): Correct minor typos.

2004-05-13  Diego Novillo  <dnovillo@redhat.com>

	Merge from tree-ssa-20020619-branch.  See
	ChangeLog.tree-ssa for details.

	* Make-lang.in, builtins.c, check-init.c, class.c,
	constants.c, decl.c, except.c, expr.c, java-except.h,
	java-tree.def, java-tree.h, jcf-parse.c, jcf-write.c,
	lang.c, lang.opt, parse.y, resource.c: Merged.
	* java-gimplify.c: New file.

2004-05-10  Andrew Haley  <aph@redhat.com>

	* parse.y (create_class): Set TYPE_VFIELD.
	* decl.c (java_init_decl_processing): Likewise.

	* expr.c (build_invokevirtual): Remove DECL_VINDEX offset adjustment.
	* class.c (make_method_value): Replace DECL_VINDEX with call to
	get_method_index().
	(get_dispatch_vector): Likewise.
	(layout_class_method): Likewise.
	Replace set of DECL_VINDEX with call to set_method_index().
	(set_method_index): New function.
	(get_method_index): New function.
	* java-tree.h (set_method_index): New function decl.
	(get_method_index): New function decl.

2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>

	* parse.y (check_pkg_class_access): Add new argument
	and use it when cl is NULL to call lookup_cl on it.
	(parser_check_super_interface): Do not call lookup_cl.
	Pass this_decl to check_pkg_class_access and NULL
	instead of lookup_cl.
	(parser_check_super): Update for change in
	check_pkg_class_access.
	(do_resolve_class): Likewise.
	(process_imports): Likewise.
	(find_in_imports_on_demand): Likewise.
	(resolve_qualified_expression_name): Likewise.

2004-05-06  Ranjit Mathew  <rmathew@hotmail.com>

	Fixes PR java/9685, PR java/15073
	* parse.y (accessibility_string): New method.
	(not_accessible_field_error): Use accessibility_string()
	instead of java_accstring_lookup().
	(resolve_qualified_expression_name): Check with
	check_pkg_class_access() before allowing access using
	qualified names.
	Fix comment typo.
	Use check_pkg_class_access() instead of not_accessible_p()
	for unqualified types.
	(not_accessible_p): Use DECL_CONTEXT (member) instead of
	REFERENCE for package-private access checking.
	(patch_method_invocation): Use accessibility_string() instead
	of java_accstring_lookup().

2004-04-30  Ranjit Mathew  <rmathew@hotmail.com>

	Fixes PR java/15133
	* gjavah.c (struct method_name): Add member is_native.
	(overloaded_jni_method_exists_p): Match candidate method only if
	it is native.
	(print_method_info): Initialise is_native flag from the method's
	access flags.

2004-04-30  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (java_builtins): Add acos, asin, ceil and floor.
	(initialize_builtins): Likewise, define acos, asin, ceil and floor.

2004-04-22  Roger Sayle  <roger@eyesopen.com>

	* resource.c (write_resource_constructor): Guard call to possibly
	NULL targetm.asm_out.constructor with targetm.have_ctors_dtors.

2004-04-19  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (make_class_data): Add new field aux_info.
	* decl.c (java_init_decl_processing): Push type and decl for
	`aux_info'.

2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>

	* expr.c (expand_java_NEW): Don't use size argument for
	_Jv_AllocObject calls.
	* parse.y (patch_invoke): Likewise.

2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>

	* expr.c (build_invokeinterface): Remove unused variables to
	fix warnings.

2004-04-12  Bryce McKinlay  <mckinlay@redhat.com>

	* class.c (get_interface_method_index): New function. Return dispatch
	index for interface method.
	(make_method_value): For interface methods, set index field to
	iface dispatch index, not DECL_VINDEX.
	* expr.c (build_invokeinterface): Use get_interface_method_index.

2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.

2004-03-31  Andrew Haley  <aph@redhat.com>

	PR java/14104
	* jcf-io.c (opendir_in_zip): Tidy up error handling.

2004-03-30  Zack Weinberg  <zack@codesourcery.com>

	* builtins.c, expr.c, jcf.h, parse.h: Use new shorter
	form of GTY markers.

2004-03-25  Marcus Meissner  <meissner@suse.de>

	PR java/14689:
	* jcf-path.c (jcf_path_extdirs_arg): Add missing closedir.

2004-03-23  Tom Tromey  <tromey@redhat.com>

	PR java/14315:
	* jcf-write.c (make_class_file_name): Don't report if mkdir
	failed with EEXIST.

2004-03-23  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Extensions): Document GCJ_PROPERTIES.

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c, gjavah.c, lang.c: Fix comment typos.
	* gcj.texi: Fix typos.

2004-03-19  Per Bothner  <per@bothner.com>

	* gcj.texi (Code Generation):  Document new flags and assert defaults.

	* class.c (assume_compiled_node_struct):  Rename type to
	class_flag_node_struct, as it is now also used for enable_assertions.
	Rename assume_compiled_node typedef.  Rename excludep field to value.
	(find_assume_compiled_node):  Rename function to find_class_flag_node.
	Minor optimization - avoid needless strlen.
	(add_assume_compiled):  Some tweaking and optimization.
	Rename and generalize to add_class_flag takem an extra parameter.
	(add_assume_compled):  New just calls add_class_flag.
	(add_enable_assert, enable_assertions):  New functions.
	(enable_assert_tree):  New static.
	* java-tree.h (add_enable_assert, enable_assertions): New declarations.
	* lang.opt (fenable-assertions, fenable-assertions=,
	fdisable-assertions, fdisable-assertions=):  New options.
	* lang.c (java_handle_option):  Handle new options.
	* parse.y (build_incomplete_class_ref):  Handle class$ in an inner
	class in an interface - create helper class nested in outer interface.
	(build_assertion):  Short-circuit if enable_assertions is false.

2004-03-18  Richard Kenner <kenner@vlsi1.ultra.nyu.edu>

	* java-tree.h: Changes throughout to add checking to macros
	and numerous whitespace changes.
	(VAR_OR_FIELD_CHECK): New macro.
	* jcf-write.c (get_access_flags): Use FIELD_PUBLIC, METHOD_PUBLIC,
	FIELD_FINAL, and METHOD_FINAL instead of CLASS_PUBLIC and CLASS_FINAL.

2004-03-16  Per Bothner  <per@bothner.com>

	* jcf-jump.c (options):  New --print-constants option.
	* gcj.texi (Invoking jcf-dump):  Document --print-constants.

	* jcf-dump.c (flag_print_constant_pool):  Default to off.
	(print_constant_terse_with_index):  New helper function.
	(various places):  Check flag_print_constant_pool where missing.
	(main):  If verbose set flag_print_constant_pool.
	(HANDLE_INNERCLASSES_ATTRIBUTE):  Null inner class name is anonymous.

2004-03-15  Andrew Haley  <aph@redhat.com>

	PR java/14581
	* parse.y (java_complete_lhs): Check that final variable has an
	initializer.

2004-03-12  Andrew Haley  <aph@redhat.com>

	PR java/14551
	* typeck.c (convert): Clear TREE_OVERFLOW after an integer
	conversion.

2004-02-29  Roger Sayle  <roger@eyesopen.com>

	* jcf-parse.c (java_parse_file): Handle the case that input_filename
	is NULL.

2004-02-27  Per Bothner  <per@bothner.com>

	* parse.y (build_assertion):  Re-do 02-25 change following Jeff Sturm
	suggestion:  Use build_incomplete_class_ref.
	This fixes PR java/13508, java/11714.

2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>

	* java/parse.h: Update copyright.

2004-02-26  Andrew Haley  <aph@redhat.com>

	PR java/14231:
	* parse.y (check_interface_throws_clauses): Check for
	!METHOD_INVISIBLE (iface_method).
	* class.c (layout_class_methods): Check for CLASS_INTERFACE as
	well as CLASS_ABSTRACT.

2004-02-25  Per Bothner  <per@bothner.com>

	* parse.y (build_assertion):  If we're in an inner class, create the
	class$ helper routine in the outer class.

2004-02-19  Richard Henderson  <rth@redhat.com>

	* parse.y (switch_label): Use make_node for DEFAULT_EXPR.

2004-02-16  Geoffrey Keating  <geoffk@apple.com>

	* Make-lang.in (java.install-man): Add extra dependencies.

2004-02-13  Geoffrey Keating  <geoffk@apple.com>

	* Make-lang.in: Install man pages under the same names
	(possibly transformed) as the program they document.

2004-02-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gjavah.c: Include "intl.h".
	(error): New function.
	(main): Call gcc_init_libintl.
	(get_field_name, throwable_p, print_c_decl, print_full_cxx_name,
	print_stub_or_jni, process_file, main): Use error rather than
	fprintf.
	(print_method_info, usage, help, version, main): Mark strings for
	translation with _.  Avoid splitting up sentences.  Send
	information messages to stdout.
	* jcf-dump.c: Include "intl.h".
	(main): Call gcc_init_libintl.
	(process_class, usage, help, version, main, CHECK_PC_IN_RANGE):
	Mark error, usage and version messages for translation with _.
	Avoid splitting up sentences.
	* jv-scan.c: Include "intl.h".
	(fatal_error, warning): Change parameter s to msgid.  Translate
	messages.
	(main): Call gcc_init_libintl.
	(usage, help, version): Mark error, usage and version messages for
	translation with _.  Avoid splitting up sentences.
	* jvgenmain.c: Include "intl.h".
	(main): Call gcc_init_libintl.
	(usage, main): Mark error messages for translation with _.
	* Make-lang.in (GCJH_OBJS, JVSCAN_OBJS, JCFDUMP_OBJS,
	JVGENMAIN_OBJS): Add intl.o.
	(java/jcf-dump.o, java/gjavah.o, java/jv-scan.o,
	java/jvgenmain.o): Update dependencies.

2004-02-08  Per Bothner  <per@bothner.com>

	* parse.y (resolve_qualified_expression_name):  In case of inaccessible
	class don't use not_accessible_field_error, which can get confused.

2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>

	Make-lang.in (po-generated):  Delete.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* Make-lang.in (java/decl.o, java/expr.o, java/parse.o):
	Depend on target.h.
	* decl.c: Include target.h.
	(start_java_method): Replace PROMOTE_PROTOTYPES with
	targetm.calls.promote_prototypes.
	* expr.c: Include target.h.
	(pop_arguments): Replace PROMOTE_PROTOTYPES with
	targetm.calls.promote_prototypes.
	* parse.y: Include target.h.
	(start_complete_expand_method): Replace PROMOTE_PROTOTYPES
	with targetm.calls.promote_prototypes.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* typeck.c: Update copyright.

2004-02-02  Tom Tromey  <tromey@redhat.com>

	* decl.c (java_init_decl_processing): Remove duplicate
	gnu/gcj/RawData.

2004-01-30  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (doc/gcj.dvi): Use $(abs_docdir).

2004-01-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* expr.c (build_field_ref): Move variable
	definition up.

2004-01-28  Andrew Haley  <aph@redhat.com>

	* expr.c (build_field_ref): Widen field offset.

2004-01-27  Andrew Haley  <aph@redhat.com>

	java/13273
	* parse.y (check_interface_throws_clauses): Make sure class_decl
	has been loaded.

2004-01-22  Jeff Sturm  <jsturm@one-point.com>

	PR java/13733
	* parse.y (patch_assignment): Don't modify lhs_type for
	reference assignments.

2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in: Replace $(docdir) with doc.
	(java.info, java.srcinfo, java.man, java.srcman): New rules.
	(java.install-man): Revamp rule.

2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (JAVA_INSTALL_NAME, JAVA_TARGET_INSTALL_NAME,
	GCJH_TARGET_INSTALL_NAME): Define via a immediate $(shell)
	instead of deferred backquote.

2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>

	* typeck.c (find_method_in_interfaces): Move variable
	definition up.

2004-01-16  Andrew Haley  <aph@redhat.com>

	PR java/13273:
	* typeck.c (shallow_find_method): New.
	(find_method_in_superclasses): New.
	(find_method_in_interfaces): New.
	(lookup_do): Rewrite.
	* java-tree.h (SEARCH_ONLY_INTERFACE): Delete.

	* jcf-parse.c (read_class): Save and restore output_class.
	* decl.c (java_expand_body): Set output_class from fndecl.

2004-01-15  Michael Chastain  <mec.gnu@mindspring.com>

	* class.c (gen_indirect_dispatch_tables): Fix string length
	calculations.

2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (parse.c, parse-scan.c): Always build in doc directory.
	(java.srcextra): Copy above back to source directory if requested.
	(po-generated): Delete reference to $(parsedir).
	(java/parse.o, java/parse-scan.o): Delete reference to $(parsedir).
	Use implicit rule.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	* lang.c (java_estimate_num_insns_1): Fix bug in MODIFY_EXPR cost
	estimation.

2004-01-09  Mark Mitchell  <mark@codesourcery.com>

	* java-tree.h (java_expand_expr): Change prototype.
	* expr.c (java_expand_expr): Add alt_rtl parameter.

2004-01-09  Andrew Haley  <aph@redhat.com>

	PR java/12755:
	* parse.y (java_fix_constructors):  Set output_class.
	(java_reorder_fields): Likewise.
	(java_layout_classes): Likewise.
	(java_expand_classes): Generate indirect dispatch tables.
	(java_expand_classes): Set output_class.
	(java_finish_classes): Likewise.
	* lang.c (java_init): Turn on always_initialize_class_p if we're
	using indirect dis[atch.
	(java_decl_ok_for_sibcall): Use output_class, not current_class.
	(java_get_callee_fndecl): Use class local atable.
	* jcf-parse.c
	(always_initialize_class_p): Decl moved to java-tree.h.
	(HANDLE_CLASS_INFO): Set output_class.
	(read_class): Likewise.
	(parse_class_file): Call gen_indirect_dispatch_tables.
	(parse_zip_file_entries): Set output_class.
	(java_parse_file): Set output_class.  Don't emit symbol tables.
	* java-tree.h (output_class): New.
	Remove global declarations for otable, atable, and ctable.
	(always_initialize_class_p): moved here from decl.c.
	(DECL_OWNER): New.
	(TYPE_ATABLE_METHODS, TYPE_ATABLE_SYMS_DECL, TYPE_ATABLE_DECL,
	TYPE_OTABLE_METHODS, TYPE_OTABLE_SYMS_DECL, TYPE_OTABLE_DECL,
	TYPE_CTABLE_DECL, TYPE_CATCH_CLASSES): New.
	(struct lang_type): Add otable_methods, otable_decl,
	otable_syms_decl, atable_methods, atable_decl, atable_syms_decl,
	ctable_decl, catch_classes, type_to_runtime_map.
	* expr.c (build_field_ref): Make otable, atable, and ctable class
	local rather than global.
	(build_known_method_ref): Likewise.
	(build_invokeinterface): Likewise.
	(java_expand_expr): Pass runtime type (rather than actual type) to
	expand_start_catch.
	* except.c (prepare_eh_table_type): Create TYPE_TO_RUNTIME_MAP for
	this class.  Look up each class in that map to delete duplicates.
	(expand_end_java_handler): Pass runtime type (rather than actual
	type) to expand_start_catch.
	* decl.c: (always_initialize_class_p): Decl moved to java-tree.h.
	(do_nothing): New.
	(java_init_decl_processing): Rearrange things.  Remove global
	declarations of otable, atable, and ctable.
	(java_init_decl_processing): Make lang_eh_runtime_type do_nothing.
	(java_expand_body): Set output_class.
	* constants.c (build_constant_data_ref): Use output_class, not
	current_class.
	(alloc_name_constant): Likewise.
	* class.c (gen_indirect_dispatch_tables): New.
	(build_class_ref): Generate hard reference to superclass, even if
	using indirect dispatch.
	(build_static_field_ref): Use class local atable.
	(make_class_data): Generate hard reference to superclass, even if
	using indirect dispatch.
	Generate symbolic references to interfaces when using indirect
	dispatch.
	(make_class_data): Emit otable, atable, and ctable.
	Make otable, atable, and ctable class local rather than global.
	(emit_catch_table): Make otable, atable, and ctable class local
	rather than global.

2003-12-25  Andrew Pinski  <pinskia@physics.uc.edu>

	* parse.y (catch_clause_parameter): Fix typo.

	PR java/13404
	* parse.y: (catch_clause_parameter): Return early if $3, aka
	formal_parameter, is null.

2003-12-20  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c: Remove uses of "register" specifier in
	declarations of arguments and local variables.
	* decl.c: Likewise.
	* expr.c: Likewise.
	* gjavah.c: Likewise.
	* jcf-dump.c: Likewise.
	* jcf-io.c: Likewise.
	* jcf-parse.c: Likewise.
	* jcf-write.c: Likewise.
	* keyword.h: Likewise.
	* parse.y: Likewise.
	* typeck.c: Likewise.
	* verify.c: Likewise.

2003-12-06  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (GCJ_CROSS_NAME): Delete.
	(java.install_common, java.install-man): Adjust for above.
	(java.uninstall): Likewise.

2003-12-03  Michael Koch  <konqueror@gmx.de>

	* class.c (make_class_data):
	Push field value to 'hack_signers' instead of 'signers'.
	* decl.c (java_init_decl_processing):
	Push field 'hack_signers' instead of 'signers'.

2003-12-03  Zack Weinberg  <zack@codesourcery.com>

	* lex.h: Check both HAVE_ICONV and HAVE_ICONV_H before
	including iconv.h.

2003-12-03  Ralph Loader  <rcl@ihug.co.nz>

	PR java/12374:
	* parse.y (qualify_ambiguous_name): Remove lots of broken
	field access processing - there's no need to do that here,
	because we have resolve_field_access.  Remove
	RESOLVE_EXPRESSION_NAME_P as it isn't used anywhere else.
	* java-tree.h: Remove RESOLVE_EXPRESSION_NAME_P as it isn't
	used.

2003-12-01  Jeff Sturm  <jsturm@one-point.com>

	Fix PR java/13237
	* parse.y (java_complete_lhs): Save location prior to patching
	CALL_EXPR.

2003-11-25  Mohan Embar  <gnustuff@thisiscool.com>

	PR java/12548
	* resource.c (write_resource_constructor): Append
	"_resource" to constructor identifier name.

2003-11-25  Jeff Sturm  <jsturm@one-point.com>

	Fix PR java/13183.
	* constants.c (cpool_for_class): New function.
	(outgoing_cpool): Remove global variable.
	(alloc_name_constant): Use cpool_for_class.
	(build_constants_constructor): Likewise.
	* decl.c (java_expand_body): Set current_class.
	* java-tree.h (outgoing_cpool) Remove declaration.
	(init_outgoing_cpool): Likewise.
	* jcf-parse.c (init_outgoing_cpool): Remove function.
	(parse_class_file): Don't call init_outgoing_cpool.
	* parse.y (java_complete_expand_methods): Don't call
	init_outgoing_cpool.  Don't save outgoing_cpool.
	(java_expand_classes): Don't restore outgoing_cpool.
	(java_finish_classes): Likewise.

2003-11-24  Mohan Embar  <gnustuff@thisiscool.com>

	* Make-lang.in: (java.install-common) Add
	symlink for $(target_noncanonical)-gcjh for
	native builds.

2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* Make-lang.in (java.extraclean): Delete.

2003-11-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* Make-lang.in (check-java): Add.

2003-11-19  Jeff Sturm  <jsturm@one-point.com>

	Fix PR java/13024.
	* except.c (prepare_eh_table_type): Allocate variable-sized
	buffer `buf' with alloca.

2003-11-17  Jeff Sturm  <jsturm@one-point.com>

	Fix PR java/12857.

	decl.c (java_init_decl_processing): Don't initialize
	class_not_found_type_node, no_class_def_found_type_node.

	java-tree.h (JTI_CLASS_NOT_FOUND_TYPE_NODE,
	JTI_NO_CLASS_DEF_FOUND_TYPE_NODE): Remove from java_tree_index.
	(class_not_found_type_node, no_class_def_found_type_node):
	Don't define.

	parse.y (build_dot_class_method_invocation): Add this_class
	argument.  Qualify method invocations to a different class.
	(create_new_parser_context): Initialize saved_data_ctx to 0.
	(java_parser_context_save_global): Initialize saved_data_ctx to 1.
	(build_dot_class_method): Don't load classes.  Register
	incomplete types.
	(build_incomplete_class_ref): Special cases for interfaces
	and inner classes.  Move build_dot_class_method call to here...
	(patch_incomplete_class_ref): ...from here.  Pass current_class
	to build_dot_class_method_invocation.
	(build_assertion): Pass class_type to
	build_dot_class_method_invocation.
	(encapsulate_with_try_catch): Handle EXPR_WITH_FILE_LOCATION node.

2003-11-17  Jeff Sturm  <jsturm@one-point.com>

	Fix PR java/12739.
	* java-tree.h (BLOCK_EMPTY_P): Define.
	* parse.y (java_complete_lhs): Check for empty blocks
	in TRY_FINALLY_EXPR case.

2003-11-17  Andrew Haley  <aph@redhat.com>

	* java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
	(struct lang_decl_var:freed): New variable.
	* decl.c (poplevel): Mark local vars that have gone out of scope.
	(push_jvm_slot): Don't use the RTL of a var that has gone out of
	scope.

2003-11-16  Jason Merrill  <jason@redhat.com>

	* Make-lang.in (java.tags): Create TAGS.sub files in each directory
	and TAGS files that include them for each front end.

2003-11-15  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (print_stub_or_jni): Pass `env' to FatalError.

2003-11-12  Jason Merrill  <jason@redhat.com>

	PR optimization/12547
	* lang.c (java_tree_inlining_walk_subtrees): Just walk
	BLOCK_EXPR_BODY directly.

2003-11-12  Andrew Haley  <aph@redhat.com>

	PR java/11045
	* parse.y (fold_constant_for_init): Check that we really do have a
	constant.

	PR java/11533
	* lang.c (merge_init_test_initialization): Clear DECL_INITIAL for
	init_test_decls being inlined.

	PR java/12890:
	* parse.y (do_resolve_class): Check return value from
	breakdown_qualified().

2003-11-11  Tom Tromey  <tromey@redhat.com>

	PR java/12915:
	* parse.y (merge_string_cste): Handle case where we have a
	pointer that happens to be zero, not null_pointer_node.

2003-11-10  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (classify_zip_file): Correctly compare
	filename_length against length of manifest file's name.

2003-11-08  Tom Tromey  <tromey@redhat.com>

	PR java/12894:
	* jcf-parse.c (classify_zip_file): Only skip MANIFEST.MF file.

2003-11-06  Andrew Haley  <aph@redhat.com>

	* expr.c (java_stack_swap): Make sure destination stack slots are
	of the correct type.

2003-11-03  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (dvi): Move targets to $(docobjdir).
	(gcj.dvi): Simplify rule and adjust target.
	(gcj.info): Simplify rule.
	(gcj.pod): New intermediate rule.
	(gcjh.pod): Likewise.
	(jv-scan.pod): Likewise.
	(jcf-dump.pod): Likewise.
	(gij.pod): Likewise.
	(jv-convert.pod): Likewise.
	(rmic.pod): Likewise.
	(rmiregistry.pod): Likewise.
	(gcj.1): Delete.
	(gcjh.1): Delete.
	(jv-scan.1): Delete.
	(jcf-dump.1): Delete.
	(gij.1): Delete.
	(jv-convert.1): Delete.
	(rmic.1): Delete.
	(rmiregistry.1): Delete.

2003-11-02  Jeff Sturm  <jsturm@one-point.com>

	Fixes PR java/12866.
	* parse.y (resolve_qualified_expression_name): Move test
	for outer field access methods from here...
	(check_thrown_exceptions) ...to here.

2003-11-01  Kelley Cook  <kcook@gcc.gnu.org>

	* .cvsignore: Delete.

2003-10-28  Frank Ch. Eigler  <fche@redhat.com>

	* verify.c (verify_jvm_instructions): Don't warn about legal
	eh binding regions generated for example by jdk 1.4.1.

2003-10-24  David S. Miller  <davem@redhat.com>

	* jcf-parse.c (jcf_parse): Fix args to fatal_error().

2003-10-22  Andrew Haley  <aph@redhat.com>

	* lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): New.
	(java_get_callee_fndecl): New.

	* jcf-parse.c (java_parse_file): Call emit_catch_table().

	* java-tree.h (ctable_decl): New.
	(catch_classes):  New.
	(java_tree_index): Add JTI_CTABLE_DECL, JTI_CATCH_CLASSES.

	* decl.c (java_init_decl_processing): Add catch_class_type.
	Add ctable_decl.
	Add catch_classes field.

	* class.c (build_indirect_class_ref): Break out from
	build_class_ref.
	(make_field_value): Check flag_indirect_dispatch.
	(make_class_data): Ditto.
	Tidy uses of PUSH_FIELD_VALUE.
	Add field catch_classes.
	(make_catch_class_record): New.

	* java-tree.h (PUSH_FIELD_VALUE): Tidy.

2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* jcf-write.c: Follow spelling conventions.
	* parse.y: Likewise.

2003-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* ChangeLog: Fix typos.
	* expr.c: Fix comment typos.
	* jcf-write.c: Likewise.
	* lang.c: Likewise.
	* lex.c: Likewise.
	* mangle.c: Likewise.
	* parse-scan.y: Likewise.
	* parse.y: Likewise.

2003-10-22  Tom Tromey  <tromey@redhat.com>

	* expr.c (expand_byte_code): Only warn about dead bytecode when
	extra_warnings is set.

2003-10-22  Bryce McKinlay  <bryce@mckinlay.net.nz>

	Fix for	PR java/12586.
	* mangle.c (find_compression_record_match): Don't iterate through
	package namespace elements unless they all match compression_table
	entries.

2003-10-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (info): Honor $(parsedir) and $(docobjdir).
	(generate-manpages): Likewise.
	(java.maintainer-clean): Likewise.
	(gcj.info): Likewise.
	(gcj.1): Likewise.
	(gcjh.1): Likewise.
	(jv-scan.1): Likewise.
	(jcf-dump.1): Likewise.
	(gij.1): Likewise.
	(jv-convert.1): Likewise.
	(rmic.1): Likewise.
	(rmiregistry.1): Likewise.
	(java.install-man): Likewise.
	(parse-scan.o): Move and define complete compile line.
	(parse.o): Likewise.
	(jcf-tree-inline.o): Move.

2003-10-20  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (info): Update dependencies.
	(java.install-info): Remove.
	($(srcdir)/java/gcj.info): Replace with ...
	($(docobjdir)/gcj.info): ... this.

2003-10-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Make-lang.in: Replace uses of $(target_alias) with
	$(target_noncanonical).

2003-10-09  Tom Tromey  <tromey@redhat.com>

	* decl.c (java_init_decl_processing): Declare signers field.
	* class.c (make_class_data): Set signers field.

2003-10-09  Jason Merrill  <jason@redhat.com>

	* parse.y (patch_assignment): Use make_node to create a BLOCK.
	* parse.h (BUILD_PTR_FROM_NAME): Use make_node to create a
	POINTER_TYPE.

2003-10-06  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (java.info): Replace with ...
	(info): ... this.
	(java.dvi): Replace with ...
	(dvi): ... this.
	(java.generated-manpages): Replace with ...

2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>

	* builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.

2003-10-01  Andrew Haley  <aph@redhat.com>

	* jcf-parse.c (java_parse_file): Write otable and atable.
	* java-tree.h (atable_methods): New.
	(atable_decl): New.
	(atable_syms_decl): New.
	(enum java_tree_index): Add JTI_ATABLE_METHODS, JTI_ATABLE_DECL,
	JTI_ATABLE_SYMS_DECL.  Rename JTI_METHOD_SYMBOL* to JTI_SYMBOL*.
	(symbol_*type): Rename method_symbol* to symbol*type.
	(emit_offset_symbol_table): Delete.
	(emit_symbol_table): New.
	(get_symbol_table_index): New.
	(atable_type): New.
	* expr.c (build_field_ref): Handle flag_indirect_dispatch.
	(build_known_method_ref): Likewise.
	(get_symbol_table_index): Rename from get_offset_table_index.
	Parameterize to allow re-use by differing types of symbol table.
	(build_invokevirtual): Pass table to get_offset_table_index.
	* decl.c (java_init_decl_processing): Push types and decls for
	atable and atable_syyms.
	* class.c (build_static_field_ref): Handle flag_indirect_dispatch.
	(make_class_data): Add new fields atable and atable_syms.
	(emit_symbol_table): Rename from emit_offset_symbol_table.
	Parameterize to allow re-use by different types of symbol table.
	(build_symbol_entry): Renamed from build_method_symbols_entry.

2003-09-30  Roger Sayle  <roger@eyesopen.com>

	* jcf-write.c (generate_bytecode_insns): Implement evaluate-once
	semantics for SAVE_EXPR, by caching the result in a temporary.

2003-09-28  Richard Henderson  <rth@redhat.com>

	* check-init.c (check_init): Save and restore input_location
	instead of file and line separately.
	* decl.c (java_expand_body): Likewise.
	* jcf-write.c (generate_bytecode_insns): Likewise.
	* parse.y (safe_layout_class): Likewise.
	* jcf-parse.c (read_class, parse_class_file): Likewise.
	(java_parse_file): Use %H for warning locator.

2003-09-28  Roger Sayle  <roger@eyesopen.com>

	* expr.c (java_check_reference): Use the semantics of COND_EXPRs
	with void-type branches instead of using a COMPOUND_EXPR.

2003-09-28  Jeff Sturm  <jsturm@one-point.com>

	* decl.c (java_optimize_inline, dump_function): Remove.
	* java-tree.h (java_optimize_inline): Remove declaration.
	* jcf-parse.c (java_parse_file): Assume flag_unit_at_a_time is set.
	* parse.y (source_end_java_method, java_expand_classes):
	Likewise.  Remove dead code.

2003-09-27  Roger Sayle  <roger@eyesopen.com>

	* lang.c (java_init_options): Set flag_evaluation_order.
	* expr.c (force_evaluation_order): Don't attempt to force
	evaluation order of binary operations using save_expr.
	* parse.y (java_complete_lhs): No longer need to call
	force_evaluation_order when constructing binary operators.

2003-09-27  Alexandre Petit-Bianco  <apbianco@redhat.com>
	    Bryce McKinlay  <bryce@mckinlay.net.nz>

	PR java/1333:
	* parse.y (not_accessible_field_error): New function.
	(resolve_expression_name): Check field access permissions.
	(resolve_qualified_expression_name): Use
	not_accessible_field_error.
	(resolve_qualified_expression_name): Likewise.

2003-09-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* class.c (build_utf8_ref): Test for HAVE_GAS_SHF_MERGE value.

2003-09-23  Roger Sayle  <roger@eyesopen.com>

	* jcf-write.c (generate_bytecode_insns): Optimize binary operations
	with equal operands without side-effects.

2003-09-22  Jeff Sturm  <jsturm@one-point.com>

	* decl.c (java_init_decl_processing): Don't emit otable decls
	if flag_indirect_dispatch is not set.

2003-09-21  Richard Henderson  <rth@redhat.com>

	* class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
	resource.c: Revert.

2003-09-21  Richard Henderson  <rth@redhat.com>

	* class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
	resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.

2003-09-20  Richard Henderson  <rth@redhat.com>

	* check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.

2003-09-18  Roger Sayle  <roger@eyesopen.com>

	* expr.c (java_truthvalue_conversion): Remove FFS_EXPR case.
	* check-init.c (check_init): Likewise.

2003-09-18  Roger Sayle  <roger@eyesopen.com>

	* jcf-write.c (generate_bytecode_insns): Add support for fconst_2.

2003-09-16  Andrew Haley  <aph@redhat.com>

	* jcf-write.c (generate_bytecode_insns): Add MIN_EXPR and MAX_EXPR.

2003-09-17  Ranjit Mathew  <rmathew@hotmail.com>

	Fixes PR java/9577
	* mangle.c (find_compression_record_match): Skip
	over a "6JArray" (the array template mangled string)
	IDENTIFIER_NODE.
	(mangle_array_type): Correct minor typo.
	(atms): Move definition to the beginning.

2003-09-16  Bryce McKinlay  <bryce@mckinlay.net.nz>

	* class.c (add_miranda_methods): Ensure super-interfaces are laid
	out. Fix for PR java/12254.

2003-09-11  Richard Henderson  <rth@redhat.com>

	* parse.y (source_end_java_method): Update for new
	cgraph_finalize_function argument.

2003-09-09  Richard Henderson  <rth@redhat.com>

	* parse.y (source_end_java_method): Update call to
	cgraph_finalize_function.

2003-09-03  Jeff Sturm  <jsturm@one-point.com>

	* decl.c (java_expand_body): New function.
	* expr.c (build_class_init): Set DECL_IGNORED_P.
	* java-tree.h (start_complete_expand_method,
	java_expand_body): Declare.
	* jcf-parse.c (cgraph.h): Include.
	(java_parse_file): Handle flag_unit_at_a_time.
	* lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING,
	LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Define.
	(java_estimate_num_insns): Use walk_tree_without_duplicates.
	(java_start_inlining): New function.
	* parse.h (java_finish_classes): Declare.
	* parse.y: Include cgraph.h.
	(block): Don't special-case empty block production.
	(craft_constructor): Set DECL_INLINE.
	(source_end_java_method): Handle flag_unit_at_a_time.
	Replace inline code with call to java_expand_body.
	(start_complete_expand_method): Remove static modifier.
	(java_expand_method_bodies): Patch function tree for
	class initialization and/or synchronization as needed.
	Don't begin RTL expansion yet.
	(java_expand_classes): Check flag_unit_at_a_time before
	calling finish_class.
	(java_finish_classes): New function.
	(java_complete_lhs): Ensure COMPOUND_EXPR has non-NULL type.
	(patch_assignment): Set DECL_CONTEXT on temporary variable.
	(emit_test_initialization): Set DECL_IGNORED_P.

2003-09-03  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (enum builtin_type): Delete unused enumeration.
	* Make-lang.in (java/builtins.o): Remove built-types.def dependency.

2003-08-28  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Extensions): Document gcjlib URLs.

2003-08-20  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Extensions): Added xref.
	(libgcj Runtime Properties): Document
	gnu.gcj.runtime.VMClassLoader.library_control.

2003-08-20  Andrew Haley  <aph@redhat.com>

	* except.c (prepare_eh_table_type): Use new encoding for exception
	handlers when using -fno-assume-compiled.

2003-08-13  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Invoking gij): Document -X and -?.

2003-08-13  Mohan Embar  <gnustuff@thisiscool.com>

	* Make-lang.in: Added missing win32-host.o to JAVA_OBJS,
	GCJH_OBJS, JCFDUMP_OBJS
	* win32-host.c: Removed the unnecessary and broken dependency
	on jcf.h

2003-08-11  Tom Tromey  <tromey@redhat.com>

	* parse.y (java_check_regular_methods): Typo fixes.  Call
	check_interface_throws_clauses.  Use
	check_concrete_throws_clauses.
	(check_interface_throws_clauses): New function.
	(check_concrete_throws_clauses): New function.
	(hack_is_accessible_p): New function.
	(find_most_specific_methods_list): Added FIXME.
	* typeck.c (lookup_do): Use `flags' argument to decide what to
	do.  Reimplemented.
	(lookup_argument_method_generic): New function.
	(lookup_argument_method2): Removed.
	* jcf.h (ACC_INVISIBLE): New define.
	* jcf-write.c (generate_classfile): Skip invisible methods.
	* class.c (add_miranda_methods): New function.
	(layout_class_methods): Use it.
	(get_access_flags_from_decl): Use ACC_INVISIBLE.
	* java-tree.h (METHOD_INVISIBLE): New define.
	(lang_decl_func) [invisible]: New field.
	(lookup_argument_method_generic): Declare.
	(SEARCH_INTERFACE): New define.
	(SEARCH_SUPER): Likewise.
	(SEARCH_ONLY_INTERFACE): Likewise.
	(SEARCH_VISIBLE): Likewise.
	(lookup_argument_method2): Removed declaration.

2003-08-05  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/11600:
	* parse.y (java_complete_lhs): See whether we're calling a method
	on an array.
	(check_thrown_exceptions): Added `is_array_call' argument;
	fixed `clone' checking; updated all callers.

2003-08-05  Steven Bosscher  <steven@gcc.gnu.org>

	* java-tree.h (DECL_ESTIMATED_INSNS): Remove (moved to tree.h).

2003-08-03  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (METHOD_TRANSIENT): Removed.
	* decl.c (pushdecl): Removed some dead code.
	* class.c (get_access_flags_from_decl): Can't have transient
	method.
	(add_method_1): Can't have a transient method.

2003-07-28  Andreas Jaeger  <aj@suse.de>

	* jvspec.c: Convert to ISO C90 prototypes.

2003-07-25  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (force_poplevels): Fix warning call.

2003-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* expr.c (expand_java_field_op): Don't use xxx_with_decl
	(expand_java_field_op): Likewise.
	* class.c (layout_class_method): Likewise
	(emit_register_classes): Likewise.
	* decl.c (pushdecl): Likewise.
	(poplevel): Likewise.
	(force_poplevels): Likewise.
	(give_name_to_locals): Likewise.
	* check-init.c (check_for_initialization): Likewise.

2003-07-24  Jason Merrill  <jason@redhat.com>

	* java-tree.h: Move boolean_type_node et al to the back end.

2003-07-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c java-tree.h jcf-write.c jvspec.c: Remove unnecessary
	casts.

2003-07-19  Neil Booth  <neil@daikokuya.co.uk>

	* lang.opt: Don't show -MD_ and -MDD_.

2003-07-18  Neil Booth  <neil@daikokuya.co.uk>

	* lang-options.h: Remove.
	* lang.opt: Add help text.

2003-07-15  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c: Remove the last argument to expand_assignment().

2003-07-09  Jan Hubicka  <jh@suse.cz>

	* java-tree.h (DECL_NUM_STMTS): Rename to...
	(DECL_ESTIMATED_INSNS): ... this.
	* lang.c (java_estimate_num_insns, java_estimate_num_insns_1):
	New static functions.
	(LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Define.
	* parser.y (add_stmt_to_compound): Do not account statements.

2003-07-08  Mark Wielaard  <mark@klomp.org>

	* gcj.texi: CNI now expands to Compiled Native Interface.

2003-07-08  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Make-lang.in (java/gcj.dvi): Use PWD_COMMAND.

2003-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* expr.c (expand_byte_code): Adjist emit_line_note call.

2003-07-06  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_handle_option): Don't handle filenames.

2003-07-02  Zack Weinberg  <zack@codesourcery.com>

	* jcf-path.c: Don't default-define PATH_SEPARATOR nor
	DIR_SEPARATOR.
	Use FILENAME_CMP.
	* jcf-write.c: Don't default-define DIR_SEPARATOR.
	* jcf.h: Delete COMPARE_FILENAMES definition.

2003-07-02  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_init_options): Update prototype.

2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (poplevel): Adjust define_label call.

2003-06-27  Zack Weinberg  <zack@codesourcery.com>

	* gjavah.c (flag_jni): Make non-static.
	* parse-scan.y (ctxp): Make non-static.

	* class.c (build_method_symbols_entry)
	* expr.c (get_offset_table_index)
	* jcf-parse.c (jcf_parse):
	Mark the definition static, matching the forward declaration.

2003-06-26  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_handle_option): Don't check for missing arguments.

2003-06-20  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (push_class): Use a location_t to save place.
	(emit_register_classes): Set input_location. Adjust
	expand_function_end call.
	* resource.c (write_resource_constructor): Likewise.
	* decl.c (end_java_method): Adjust expand_function_end call.
	* parse.y (source_end_java_method): Likewise.

2003-06-17  Robert Abeles  <rabeles@archaelogic.com>

	* lang.c (java_handle_option): Likewise.

2003-06-16  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_handle_option): Special-casing of optional
	joined arguments no longer needed.
	* lang.opt: Update switches that take optional argument.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* lang.opt: Declare Java.
	* lang.c (java_init_options): Update.

2003-06-15  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (version_flag): Rename to v_flag to avoid clash w/ toplev.h.

2003-06-14  Neil Booth  <neil@daikokuya.co.uk>

	* lang-specs.h: Rewrite -MD and -MMD to append an underscore.
	* lang.c (java_handle_option): -MD and -MMD have an underscore.
	* lang.opt: -MD and -MMD have an underscore.

2003-06-14  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (emit_register_classes): Adjust init_function_start
	call.
	* decl.c (complete_start_java_method): Likewise.
	* resource.c (write_resource_constructor): Likewise.

2003-06-14  Neil Booth  <neil@daikokuya.co.uk>

	* Make-lang.in: Update to use options.c and options.h.
	* lang.c: Include options.h not j-options.h.
	(java_handle_option): Abort on unrecognized option.
	(java_init_options): Request Java switches.

2003-06-11  Neil Booth  <neil@daikokuya.co.uk>

	* Make-lang.in: Handle mostlyclean.

2003-06-11  Tom Tromey  <tromey@redhat.com>

	* lang.c (java_handle_option): Update dependency_tracking for
	OPT_MF case.

	* lang.c (java_handle_option): OPT_fbootclasspath_ can take an
	empty argument.

2003-06-10  Andrew Haley  <aph@redhat.com>

	* resource.c (write_resource_constructor): Use expand_expr to
	generate the address of the label attached to a resource.
	* Make-lang.in (java/resource.o): Add expr.h

2003-06-10  Andrew Haley  <aph@redhat.com>

	* lang.c (LANG_HOOKS_DECL_OK_FOR_SIBCALL): New.
	(java_decl_ok_for_sibcall): New.

2003-06-09  Neil Booth  <neil@daikokuya.co.uk>

	* Make-lang.in (JAVA_OBJS, java/lang.o): Update.
	(java/j-options.c, java/j-options.h): New.
	* java-tree.h (resource_name, compile_resource_file,
	compile_resource_data): Constify.
	* jcf-write.c (jcf_write_base_directory): Similarly.
	* jcf.h (jcf_write_base_directory): Similarly.
	* lang.c: Include j-options.h.
	(cl_options_count, cl_options, string_option, java_decode_option,
	lang_f_options, lang_W_options, LANG_HOOKS_DECODE_OPTION,
	process_option_with_no): Remove.
	(resource_name): Constify.
	(LANG_HOOKS_HANDLE_OPTION): Override.
	(java_handle_option): New.
	(java_init): Don't call jcf_path_init.
	(java_init_options): Call jcf_path_init.
	* lang.opt: New.
	* resource.c (compile_resource_data, compile_resource_file): Constify.

2003-06-09  Nathan Sidwell  <nathan@codesourcery.com>

	* java-tree.h (DECL_FUNCTION_LAST_LINE): New.
	(struct lang_decl_func): Add last_line field.
	* parse.h (DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
	DECL_SOURCE_LINE_LAST): Remove.
	* parse.y (missing_return_error, finish_method_declaration,
	lookup_cl, start_artificial_method_body, source_end_java_method,
	start_complete_expand_method): Adjust.

2003-06-08  Tom Tromey  <tromey@redhat.com>

	* jvspec.c (jvgenmain_spec): Added `*' after fassume-compiled and
	fno-assume-compiled.

2003-06-08  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (define_builtin_type, builtin_types): Delete.
	(define_builtin): Rewritten to take just the built-in code,
	the function's name, type and fallback library function name.
	All built-ins used by Java are implicit and BUILT_IN_NORMAL.
	(initialize_builtins): Overhaul to define the GCC builtins
	used by gcj manually, providing the Java run-time's
	implementations as the fallback library function.

2003-06-08  Anthony Green  <green@redhat.com>

	* parse.y (patch_cast): Fix conversions from floating-point to
	integral types.

2003-06-08  Neil Booth  <neil@daikokuya.co.uk>

	* Make-lang.in: Update.
	* lang.c: Include opts.h. Define cl_options_count and cl_options.

2003-06-07  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_init_options): Update.

2003-06-05  Jan Hubicka  <jh@suse.cz>

	* Make-lang.in:  Add support for stageprofile and stagefeedback

2003-05-31  Roger Sayle  <roger@eyesopen.com>

	* lang.c (java_init_options): Prescribe wrap-around two's
	complement arithmetic overflow by setting flag_wrapv.

2003-05-29  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (cos_builtin, sin_builtin, sqrt_builtin): Delete.
	(builtin_record): Add an additional builtin_code field to
	record which GCC built-in corresponds to the Java function.
	(java_builtins):  Add new entries for atan, atan2, exp, log,
	pow and tan.
	(max_builtin, min_builtin, abs_builtin): Perform constant
	folding on the resulting tree.
	(java_build_function_call_expr): Likewise, perform constant
	folding on the resulting tree.
	(initialize_builtins): The NULL creators are now allowed in
	the java_builtins table, which is now terminated by an entry
	with builtin_code == END_BUILTINS.
	(check_for_builtin): Likewise.  If the matching creator is
	NULL, construct the call using java_build_function_call_expr
	directly with the decl for the corresponding builtin_code.

2003-05-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* win32-host.c: Normalize copyright boilerplate.

2003-05-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* parse.y (print_int_node): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.

2003-05-13  Zack Weinberg  <zack@codesourcery.com>

	* jcf-parse.c, jcf-write.c, lex.c: Replace all calls to
	fatal_io_error with calls to fatal_error; add ": %m" to the end of
	all the affected error messages.

2003-05-13  Richard Henderson  <rth@redhat.com>

	* class.c (layout_class_method): Set DECL_EXTERNAL.
	* decl.c (java_mark_decl_local, java_mark_class_local): New.
	* java-tree.h (java_mark_class_local): Declare.
	* jcf-parse.c (parse_class_file): Use it.
	* parse.y (java_expand_classes): Likewise.

2003-05-04  Nathan Sidwell  <nathan@codesourcery.com>

	* Make-lang.in (java/parse.o, java/parse-scan.o): Depend on input.h.
	* lex.h: #include input.h.
	* jv-scan.c (input_filename): Remove.

2003-05-02  Tom Tromey  <tromey@redhat.com>

	PR java/10491:
	* gjavah.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
	(handle_inner_classes): New function.

2003-05-01  Tom Tromey  <tromey@redhat.com>

	PR java/10459:
	* parse.y (finish_for_loop): Do nothing if update expression is a
	EXPR_WFL_NODE wrapping nothing.
	(java_complete_lhs) <COMPOUND_EXPR>: Likewise.

2003-05-02  Nathan Sidwell  <nathan@codesourcery.com>

	* lex.h (input_lineno): Remove declaration.
	* parse-scan.y: #include input.h.
	(input_filename): Remove declaration.
	(input_location): Add definition.
	(input_line): Remove definition.

2003-05-01  Nathan Sidwell  <nathan@codesourcery.com>

	* lex.h (lineno): Rename to ...
	(input_line): ... here
	* parse-scan.y (lineno): Rename to ...
	(input_line): ... here.
	(reset_report): Rename lineno to input_line.
	* check-init.c (check_init): Likewise.
	* class.c (push_class): Likewise.
	* decl.c (complete_start_java_method, end_java_method): Likewise.
	* expr.c (expand_byte_code): Likewise.
	* jcf-parse.c (give_name_to_class, parse_class_file): Likewise.
	* jcf-write.c (generate_bytecode_insns): Likewise.
	* lex.c (java_init_lex, java_allocate_new_line,
	do_java_lex): Likewise.
	* parse.h (YYNOT_TWICE): Likewise.
	* parse.y (empty_statement, expression_statement,
	java_pop_parser_context, java_parser_context_save_global,
	yyerror, register_fields, method_header, safe_layout_class,
	find_in_imports_on_demand, create_artificial_method,
	source_end_java_method, start_complete_expand_method,
	build_thisn_assign, java_complete_lhs,
	maybe_absorb_scoping_block): Likewise.

2003-04-20  Mohan Embar  <gnustuff@thisiscool.com>

	* jcf-io.c (find_class): use DIR_SEPARATOR instead of
	'/' when computing java source filename

2003-04-13  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (print_c_decl): Indentation fix.

2003-04-12  Zack Weinberg  <zack@codesourcery.com>

	* class.c (make_field_value, make_method_value, get_dispatch_table)
	(make_class_data, emit_offset_symbol_table)
	* constants.c (build_constants_constructor)
	* java-tree.h (START_RECORD_CONSTRUCTOR)
	* parse.y (maybe_build_array_element_wfl):
	Use build_constructor.

2003-04-10  Eric Blake  <ebb9@email.byu.edu>

	PR java/10253:
	* parse.y (string_convert_int_cst): Always use at least one digit
	in string conversion. Remove ASCII dependence.
	(merge_string_cste): Fix merging of 3-byte UTF-8 characters.

2003-03-16  Mohan Embar  <gnustuff@thisiscool.com>

	* Make-lang.in: added win32-host.c
	* jcf.h: defined macro JCF_OPEN_EXACT_CASE which
	resolves to open() on non-Win32 platforms and
	Win32-specific jcf_open_exact_case() on Win32
	* jcf-io.c (find_class): use JCF_OPEN_EXACT_CASE
	when trying .java and .class files
	* win32-host.c: added to repository. Defines
	Win32-specific jcf_open_exact_case()

2003-04-10  Andrew Haley  <aph@redhat.com>

	* jcf-write.c (struct jcf_partial): num_jsrs: new field.
	(maybe_free_localvar): Renamed from localvar_free.
	Add new arg, really.
	(generate_bytecode_insns): Set new variable, jsrs.
	Only free local vars if no jsr insns have been emittted.
	Call maybe_free_localvar, not localvar_free.

2003-03-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gcj.texi: Remove @ at start of file.

2003-03-25  Tom Tromey  <tromey@redhat.com>

	* parse.y (create_interface): Call CHECK_DEPRECATED.

2003-03-23  Zack Weinberg  <zack@codesourcery.com>

	* Make-lang.in: Link jcf-dump against $(LDEXP_LIB).

2003-03-21  Zack Weinberg  <zack@codesourcery.com>

	* javaop.h (jfloat, jdouble): Make them structures mirroring
	the bit fields of IEEE float and double respectively.
	(JFLOAT_FINITE, JFLOAT_QNAN_MASK, JFLOAT_EXP_BIAS,
	JDOUBLE_FINITE, JDOUBLE_QNAN_MASK, JDOUBLE_EXP_BIAS): New.
	(union Word, union DWord): Delete.
	(WORD_TO_FLOAT, WORDS_TO_DOUBLE): Update to match.

	* gjavah.c (java_float_finite, java_double_finite, F_NAN_MASK,
	D_NAN_MASK): Delete.
	(jni_print_float, jni_print_double): New.  Generate
	hexadecimal floating constants.
	(print_field_info): Use jni_print_float/double.

	* jcf-dump.c: Include math.h.  Use ldexp/frexp to assemble
	finite floating point numbers for output; special case
	non-finite floats.

2003-03-19  Nathanael Nerode  <neroden@gcc.gnu.org>

	* lang.c (java_dump_tree): Change return type from 'int' to 'bool'.
	Replace 0 and 1 with true and false in return statements.

2003-03-19  Tom Tromey  <tromey@redhat.com>

	* lex.c (do_java_lex): Renamed from java_lex.
	(java_lex): New function.
	Include timevar.h.

2003-03-13  Tom Tromey  <tromey@redhat.com>

	* parse.y (resolve_inner_class): Error if qualifier is a primitive
	type.

2003-03-04  Andrew Haley  <aph@redhat.com>

	* gjavah.c (is_first_data_member): New global variable.
	(print_c_decl): If it's the first data member, align it as the
	superclass.
	(process_file): Set is_first_data_member.

2003-03-11  Tom Tromey  <tromey@redhat.com>

	* parse.y (resolve_field_access): Initialize class if field is
	found in another static field.
	* expr.c (build_class_init): Don't optimize out initialization of
	implemented interface.

2003-03-11  Andrew Haley  <aph@redhat.com>

	* jcf-io.c (caching_stat): Initialize origsep to remove compiler
	warning.

2003-03-10  Ranjit Mathew  <rmathew@hotmail.com>

	* jcf-io.c (caching_stat): Account for both DIR_SEPARATOR
	and DIR_SEPARATOR_2 for a target.
	Correct minor typos.

	* jcf-write.c (make_class_file_name): Take both DIR_SEPARATOR
	and DIR_SEPARATOR_2 for a target into account.

2003-03-08  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_init): Update prototype, move code to java_post_options.
	(java_post_options): Similarly.

2003-03-05  Ranjit Mathew  <rmathew@hotmail.com>

	* jcf.h (COMPARE_FILENAMES): New macro similar to "strcmp" to
	compare file name components depending on the case-sensitivity
	or otherwise of the host file system.

	* jcf-path.c (add_entry): Use COMPARE_FILENAMES instead of
	"strcmp" to compare file name components.
	Use IS_DIR_SEPARATOR instead of comparing directly against
	DIR_SEPARATOR.
	(jcf_path_extdirs_arg): Use IS_DIR_SEPARATOR instead of
	comparing directly against DIR_SEPARATOR.

2003-03-04  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java.tags): New target.

2003-03-01  Roger Sayle  <roger@eyesopen.com>

	* java/builtins.c (builtin_type): Handle DEF_FUNCTION_TYPE_VAR_3.
	(initialize_builtins): Handle DEF_FUNCTION_TYPE_VAR_3.

2003-03-01  Tom Tromey  <tromey@redhat.com>

	* parse.y (jdep_resolve_class): Only check deprecation if we found
	a decl.

2003-02-28  Tom Tromey  <tromey@redhat.com>

	PR java/9695:
	* class.c (maybe_layout_super_class): Always pass a WFL to
	do_resolve_class.
	* parse.y (do_resolve_class): Updated comment to explain
	parameters.

2003-02-26  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (generate_classfile): Check whether class is
	deprecated before writing attribute count.

2003-02-25  Roger Sayle  <roger@eyesopen.com>

	* java/decl.c (java_init_decl_processing): Get soft_fmod_node from
	built_in_decls[BUILT_IN_FMOD] rather than define it ourselves.

2003-02-23  Tom Tromey  <tromey@redhat.com>

	* lang-options.h: Added -Wdeprecated.
	* gcj.texi (Warnings): Document -Wdeprecated.
	* java-tree.h (flag_deprecated): Declare.
	* lang.c (lang_W_options): Added deprecated.
	(flag_deprecated): New global.
	* chartables.h: Rebuilt.
	* gen-table.pl (process_one): Look at whitespace.
	(print_tables): Define LETTER_SPACE, LETTER_MASK.
	* parse.h (CLEAR_DEPRECATED): New macro.
	(CHECK_DEPRECATED_NO_RESET): New macro.
	* jcf-parse.c (handle_deprecated): New function.
	(HANDLE_DEPRECATED_ATTRIBUTE): New define.
	* jcf-reader.c (get_attribute): Handle Deprecated attribute.
	* parse.y (resolve_type_during_patch): Check deprecation.
	(jdep_resolve_class): Likewise.
	(process_imports): Likewise.
	(resolve_expression_name): Likewise.
	(check_deprecation): Strip arrays from decl.  Check
	flag_deprecated.
	(patch_method_invocation): Also check the particular constructor
	for deprecation.
	(register_fields): Use CHECK_DEPRECATED_NO_RESET in loop.
	* jcf-write.c (append_deprecated_attribute): New function.
	(generate_classfile): Generate deprecated attribute when
	appropriate.
	* lex.c (java_parse_doc_section): Return type now void.  Rewrote.
	(java_lex) [case '*']: Simplify logic.
	(java_start_char_p): Use LETTER_MASK.
	(java_part_char_p): Likewise.
	(java_space_char_p): New function.

2003-02-20  Nathan Sidwell  <nathan@codesourcery.com>

	Change base class access representation.
	* java/class.c (set_super_info): Don't set TREE_VIA_PUBLIC.
	(add_interface_do): Likewise.

2003-02-12  Ranjit Mathew  <rmathew@hotmail.com>

	* decl.c (java_init_decl_processing): Change
	soft_lookupjnimethod_node to reflect the change in
	signature of _Jv_LookupJNIMethod in libjava/jni.cc
	* expr.c (build_jni_stub): Calculate and pass the size
	on the stack of the arguments to a JNI function. Use
	new target macro MODIFY_JNI_METHOD_CALL to allow a
	target to modify the call to a JNI method.

2003-02-08  Roger Sayle  <roger@eyesopen.com>

	* jcf-io.c (java_or_class_file): Use libiberty's lbasename
	instead of basename to avoid compiler warnings on Tru64.

2003-02-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gcj.texi: Update to GFDL 1.2.

2003-01-31  Andrew Haley  <aph@redhat.com>

	* parse.y (java_expand_classes): Scan the whole class list looking
	for access methods that haven't yet been expanded.

2003-01-31 Adrian Bunk <bunk@fs.tum.de>

	Fix for java/4269:

	* jv-scan.c: Use HAVE_LANGINFO_CODESET instead of HAVE_NL_LANGINFO
	to fix bootstrap on sparc-unknown-netbsdelf1.5.
	* jcf-parse.c: Likewise.

2003-01-31  Mark Wielaard  <mark@klomp.org>

	* gjavah.c (throwable_p): Allocate 1 more byte for string.

2003-01-31  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (make_class): Use BINFO_ELTS.
	(set_super_info): Likewse.
	(add_interface_do): Likewise.

2003-01-30  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (read_class): Update identifier's class value if it
	changed during parsing.

2003-01-30  Loren James Rittle  <ljrittle@acm.org>

	* Make-lang.in (po-generated): Find the targets in $(parsedir).
	Propagate change to all other rules as required.
	(java/parse-scan.o): Add explicit dependency on
	$(parsedir)/java/parse-scan.c .

2003-01-29  Tom Tromey  <tromey@redhat.com>

	* parse.y (patch_assignment): Only transform the rhs of an
	assignment when compiling to native.

2003-01-28  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (generate_bytecode_conditional): Typo fixes.

2003-01-28  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_lex): Don't include UEOF as part of token.
	(java_read_unicode): Error if \u sequence prematurely terminated.

2003-01-27  Tom Tromey  <tromey@redhat.com>

	* parse.y (java_check_regular_methods): Check for construct after
	checking types in throws clause.

2003-01-24  Tom Tromey  <tromey@redhat.com>

	* class.c (build_static_field_ref): Only a String or numeric field
	can fold to a constant.

2003-01-23  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (parse_zip_file_entries): Overwrite trailing \0 of
	file name in resource buffer.

2003-01-23  Tom Tromey  <tromey@redhat.com>

	* expr.c (build_known_method_ref): Use method's context to find
	method table index.

2003-01-23  Tom Tromey  <tromey@redhat.com>

	* constants.c (set_constant_entry): Allocated cleared memory.

2003-01-22  Tom Tromey  <tromey@redhat.com>

	* java-tree.h: Don't use PARAMS.
	* resource.c: Add prototypes for all functions.
	(write_resource_constructor): Use `const char *' to avoid
	warning.

2003-01-22 Nathanael Nerode  <neroden@gcc.gnu.org>

	* jcf-parse.c (process_zip_dir): Remove unused variable.

2003-01-22  Tom Tromey  <tromey@redhat.com>

	* expr.c (build_invokeinterface): Abort if method's context is not
	an interface.

2003-01-22  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Input and output files): Mention non-class entries.
	* decl.c (java_init_decl_processing): Call
	init_resource_processing.
	* java-tree.h (compile_resource_data, write_resource_constructor,
	compile_resource_file, init_resource_processing): Declare.
	* config-lang.in (gtfiles): Added resource.c.
	* Make-lang.in (gt-java-resource.h): New target.
	(JAVA_OBJS): Added resource.o.
	(java/resource.o): New target.
	* resource.c: New file.
	* class.c (compile_resource_file): Moved to resource.c.
	(registerResource_libfunc): Likewise.
	(utf8_decl_list): Mark with GTY; now static.
	* jcf-parse.c (classify_zip_file): New function.
	(parse_zip_file_entries): Use it; compile .properties files.
	(process_zip_dir): Use classify_zip_file and compute_class_name.
	Don't write class name into zip directory.
	(java_parse_file): Call write_resource_constructor.
	(compute_class_name): New function.
	* jcf-io.c (read_zip_member): Reindented.

2003-01-21  Tom Tromey  <tromey@redhat.com>

	* class.c (supers_all_compiled): New function.
	(make_class_data): Use it.

2003-01-21  Tom Tromey  <tromey@redhat.com>

	* parse.y (method_header): Native method can't be strictfp.
	No method can be transient or volatile.

2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	Make-lang.in (jvspec.o-warn): Add -Wno-error.

2003-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* check-init.c: Fix comment typos.
	* class.c: Likewise.
	* constants.c: Likewise.
	* decl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* java-except.h: Likewise.
	* java-tree.h: Likewise.
	* javaop.h: Likewise.
	* jcf-dump.c: Likewise.
	* jcf-io.c: Likewise.
	* jcf-parse.c: Likewise.
	* jcf-write.c: Likewise.
	* lang.c: Likewise.
	* mangle.c: Likewise.
	* typeck.c: Likewise.
	* verify.c: Likewise.

2003-01-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (java/jcf-write.o): Depend on $(TM_P_H).
	* jcf-write.c: Include "tm_p.h".

2003-01-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-io.c (caching_stat): Cast the 3rd arg of scandir to void*.

2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (java_build_function_call_expr): Renamed from
	build_function_call_expr.  All callers changed.

	* Make-lang.in (java/jcf-parse.o): Depend on $(TM_P_H).
	* jcf-parse.c: Include tm_p.h.

	* jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
	warning.

2003-01-14  Tom Tromey  <tromey@redhat.com>

	* class.c (make_class_data): Check that super is compiled before
	building class reference to it.

2003-01-14  Andrew Haley  <aph@redhat.com>

	* decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
	varargs function -- correct.

2003-01-14  Andrew Haley  <aph@redhat.com>

	* decl.c (java_init_decl_processing): Temporarily back out previous patch.

2003-01-14  Andrew Haley  <aph@redhat.com>

	* decl.c (java_init_decl_processing): _Jv_NewMultiArray is a
	varargs function -- correct.

	* parse.y (patch_assignment): Copy the rhs of an assignment into a
	temporary if the RHS is a reference.

2003-01-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (keyword.h): Pass "-L ANSI-C" to gperf.
	* keyword.h: Regenerated.

	* All Files: Convert to ISO C style function definitions.

2003-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	* parse.y (check_pkg_class_access): ANSIfy definition.

2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* decl.c, parse-scan.y, parse.y: Don't cast return value of
	xmalloc et al.

	* class.c, gjavah.c, parse.y, verify.c: Don't use PTR.

2003-01-09  Geoffrey Keating  <geoffk@apple.com>

	Merge from pch-branch:

	2002-12-02  Geoffrey Keating  <geoffk@apple.com>

	* Make-lang.in (java/gjavah.o): Update dependencies.
	* gjavah.c: Include ggc.h.

	2002-08-16  Geoffrey Keating  <geoffk@redhat.com>

	* Make-lang.in (GCJH_OBJS): Add ggc-none.o.
	(JCFDUMP_OBJS): Add ggc-none.o.
	(java/jcf-dump.o): Depend on GGC_H.
	* jcf-reader.c (jcf_parse_constant_pool): Use ggc_alloc to allocate
	CPool substructures.
	* jcf-parse.c (process_zip_dir): Use ggc_alloc to allocate JCFs.
	* jcf-dump.c: Include ggc.h.

	2002-08-08  Geoffrey Keating  <geoffk@redhat.com>

	* jcf.h (union cpool_entry): New.
	(struct CPool): Use gengtype to mark.  Change field 'data' to be
	an array of unions.
	(struct JCF): Use gengtype to mark.
	(CPOOL_UINT): Update for new cpool_entry type.
	(CPOOL_USHORT1): Likewise.
	(CPOOL_USHORT2): Likewise.
	(CPOOL_FINISH): Use GC to free cpool subfields.
	* parse.h (struct parser_ctxt): Mark field current_jcf.
	* lex.c (java_init_lex): Use GC to allocate struct JCF.
	* jcf-parse.c (HANDLE_CONSTANT_Utf8): Update for new cpool_entry type.
	(main_jcf): Use gengtype to mark.
	(ggc_mark_jcf): Delete.
	(get_constant): Update for new cpool_entry type.
	(give_name_to_class): Likewise.
	(get_class_constant): Likewise.
	(init_outgoing_cpool): Use GGC to allocate struct CPool.
	(java_parse_file): Use GGC to allocate struct JCF.
	(init_jcf_parse): Don't call ggc_add_root.
	* jcf-reader.c (jcf_parse_constant_pool): Update for new
	cpool_entry type.
	* java-tree.h (current_jcf): Use gengtype to mark.
	(CPOOL_UTF): Update for new cpool_entry type.
	(outgoing_cpool): Use gengtype to mark.
	(struct lang_type): GC struct JCF and struct CPool.
	* config-lang.in (gtfiles): Add jcf.h.
	* constants.c (find_tree_constant): New.
	(set_constant_entry): Allocate cpool subfields using GGC.  Update
	for new cpool_entry type.
	(find_constant1): Update for new cpool_entry type.
	(find_constant2): Likewise.
	(find_utf8_constant): Use find_tree_constant.
	(find_class_or_string_constant): Remove unnecessary cast to jword.
	Update for new cpool_entry type.
	(count_constant_pool_bytes): Update for new cpool_entry type.
	(write_constant_pool): Likewise.
	(alloc_name_constant): Use find_tree_constant.
	(build_constants_constructor): Update for new cpool_entry type.

	2002-08-08  Geoffrey Keating  <geoffk@redhat.com>

	* parse.y (mark_parser_ctxt): Delete.
	(goal): Don't use ggc_add_root.
	(create_new_parser_context): Use GC to allocate struct parser_ctxt.
	(java_pop_parser_context): Let GC free parser_ctxt.
	(java_parser_context_resume): Likewise.
	* parse.h (struct parser_ctxt): Use gengtype to mark.
	(ctxp): Likewise.
	(ctxp_for_generation): Likewise.
	* lex.h (struct java_lc_s): Mark for gengtype.
	(java_lexer): Rearrange for gengtype.
	* config-lang.in (gtfiles): Add lex.h, parse.h.

2003-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* All Files: Remove PARAMS macro.

	* expr.c, gjavah.c, javaop.h, jcf-dump.c, jcf-io.c, jcf-reader.c,
	jcf-write.c, jcf.h, jv-scan.c: Don't rely on the `DEFUN', `AND' or
	`__STDC__' macros.

	* jv-scan.c, parse.y: Remove VPARAMS, VA_OPEN, VA_FIXEDARG and
	VA_CLOSE.

2003-01-09  Christian Cornelssen  <ccorn@cs.tu-berlin.de>

	* Make-lang.in (java.install-common, java.uninstall,
	java.install-info, java.install-man): Prepend $(DESTDIR)
	to destination paths in all (un)installation commands.
	(java.install-common): Rewrite $(LN) command to support
	DESTDIR with "ln" as well as with "ln -s".

2003-01-08  Nathanael Nerode  <neroden@gcc.gnu.org>

	* java-tree.h: Protect against multiple inclusion.

2003-01-07  Tom Tromey  <tromey@redhat.com>

	* class.c (add_assume_compiled): Don't adjust parent if we're
	already at the root of tree.

2003-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lang.c (dump_compound_expr): Prototype.

2003-01-03  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/8712:
	* expr.c (build_instanceof): Build an NE_EXPR, not a COND_EXPR,
	when simply checking against `null'.

2003-01-03  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Standard Properties): Document http.proxyHost and
	http.proxyPort.

	* gcj.texi (GNU Classpath Properties): Document new properties.

2003-01-02  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* java/jcf-reader.c, java/jvgenmain.c, java/keyword.gperf,
	java/lang-options.h, java/mangle.c, java/mangle_name.c,
	java/xref.c, java/zextract.c,java/zipfile.h: Fix copyright years.

2003-01-01  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* Make-lang.in, boehm.c, buffer.c,
	  buffer.h, builtins.c, class.c,
	  config-lang.in, constants.c,
	  convert.h, decl.c, except.c,
	  expr.c, java-except.h,
	  java-tree.h, javaop.def,
	  jcf-parse.c, jcf-write.c,
	  jv-scan.c, jvgenmain.c,
	  jvspec.c, keyword.gperf,
	  keyword.h, lang-options.h,
	  lang-specs.h, lang.c, lex.c,
	  lex.h, mangle.c, mangle_name.c,
	  parse-scan.y, parse.h, parse.y,
	  typeck.c, verify.c, xref.c,
	  xref.h: Replace "GNU CC" with
	  "GCC" in the copyright header.

	* check-init.c, gjavah.c, javaop.h,
	  jcf-depend.c, jcf-dump.c, jcf-io.c,
	  jcf-path.c, jcf-reader.c, jcf.h,
	  zextract.c, zipfile.h: These files are
	  "part of GCC". Also say "GCC" not "GNU CC".

2002-12-30  DJ Delorie  <dj@redhat.com>

	* Make-lang.in: Protect against texi2pod/pod2man failing.

2002-12-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gcj.texi: Use @copying.

2002-12-27  Mark Mitchell  <mark@codesourcery.com>

	* gjavah.c (print_name_for_stub_or_jni): Adjust call to
	print_cxx_classname.
	(print_cxx_classname): Add add_scope parameter.
	(print_class_decls): Do not emit a semicolon after the extern
	"Java" block.
	(process_file): Adjust calls to print_cxx_classname.

2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gcj.texi: Include Cover Texts in man page.

2002-12-23  Jeff Sturm  <jsturm@one-point.com>

	* class.c (build_static_field_ref): Check FIELD_FINAL.

	* constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF
	instead of current_constant_pool_data_ref.
	* java-tree.h (current_constant_pool_data_ref): Undefine.
	(JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove.
	* jcf-parse.c (init_outgoing_cpool): Don't initialize
	current_constant_pool_data_ref.

	* except.c (prepare_eh_table_type ): Use DECL_NAME of class type,
	not build_internal_class_name.

	* parse.y (patch_incomplete_class_ref): Always emit `class$' method.
	Use it when class ref isn't certain to be compiled.

2002-12-23  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gcj.texi: Include gcc-common.texi.
	* Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on
	$(srcdir)/doc/include/gcc-common.texi.

2002-12-22  Anthony Green  <green@redhat.com>

	* gcj.texi (Limitations): Add note about org.xml.sax and
	org.w3c.dom.

2002-12-20  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case
	where minimum case value is Integer.MIN_VALUE.
	Fixes PR java/8955.

2002-12-18  Andrew Haley  <aph@redhat.com>

	* parse.y (patch_invoke): Force evaluation order when `check' is
	set.  For PR libgcj/8945.

2002-12-16  Mark Mitchell  <mark@codesourcery.com>

	* gcj.texi: Change version number to 3.4.

2002-12-05  Ranjit Mathew <rmathew@hotmail.com>
	Andrew Haley <aph@redhat.com>

	* parse.y (source_end_java_method): Remove custom encoding of line
	numbers for a function decl before passing it to the back end.

2002-12-03  Andrew Haley  <aph@redhat.com>

	* class.c (make_class_data): New field, "chain".
	* decl.c (java_init_decl_processing): Likewise.

2002-12-02  Tom Tromey  <tromey@redhat.com>

	For PR java/8740:
	* parse.y (do_resolve_class): Handle qualified name via
	recursion.

2002-11-30  Zack Weinberg  <zack@codesourcery.com>

	* boehm.c, buffer.c, builtins.c, check-init.c, class.c,
	constants.c, decl.c, except.c, expr.c, gjavah.c, jcf-depend.c,
	jcf-dump.c, jcf-io.c, jcf-parse.c, jcf-path.c, jcf-write.c,
	jv-scan.c, jvgenmain.c, jvspec.c, lang.c, mangle.c, mangle_name.c,
	parse-scan.y, parse.y, typeck.c, verify.c, xref.c, zextract.c:
	Include coretypes.h and tm.h.
	* Make-lang.in: Update dependencies.

2002-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.

2002-11-25  Diego Novillo  <dnovillo@redhat.com>

	* jcf-reader.c: Don't expand JCF_readu4 inside the
	expansion of JCF_SKIP.

2002-11-25  Diego Novillo  <dnovillo@redhat.com>

	* jcf-reader.c: Don't expand JCF_readu4 inside the
	expansion of JCF_SKIP.

2002-11-22  Tom Tromey  <tromey@redhat.com>

	* parse.y (patch_binop): Cast right hand side of shift expression
	to `int'.  Fixes PR java/8676.

2002-11-22  Ranjit Mathew <rmathew@hotmail.com>
	    Andrew Haley <aph@redhat.com>

	* gcc/java/jcf-write.c (write_classfile): Remove target
	class file, if it exists, before renaming the temporary
	class file to it.

2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>

	* jvspec.c (lang_specific_spec_functions): New.

2002-11-18  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/7912:
	* expr.c (can_widen_reference_to): Allow cast of array to
	Cloneable or Serializable.
	* java-tree.h (java_lang_cloneable_identifier_node): Declare.
	(java_io_serializable_identifier_node): Likewise.
	* parse.y (java_lang_cloneable, java_io_serializable): Removed.
	(valid_ref_assignconv_cast_p): Use new identifier nodes.
	* lex.c (java_init_lex): Don't initialize java_lang_cloneable and
	java_io_serializable.
	* decl.c (java_init_decl_processing): Initialize
	java_lang_cloneable_identifier_node and
	java_io_serializable_identifier_node.
	(java_lang_cloneable_identifier_node): New global.
	(java_io_serializable_identifier_node): Likewise.

2002-11-14  Jens-Michael Hoffmann  <jensmh@gmx.de>

	* buffer.c: Remove unnecessary casts.
	* check-init.c: Likewise.
	* class.c: Likewise.
	* constants.c: Likewise.
	* decl.c: Likewise.
	* except.c: Likewise.
	* gjavah.c: Likewise.
	* jcf-io.c: Likewise.
	* jcf-parse.c: Likewise.
	* jcf-path.c: Likewise.
	* jvspec.c: Likewise.
	* lang.c: Likewise.
	* lex.c: Likewise.
	* verify.c: Likewise.

2002-11-06  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in
	a JNI header.

2002-11-05  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/6388.
	* lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while.
	* java-tree.h (enum java_tree_index): New values
	JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE.
	(decimal_int_max, decimal_long_max): New defines.
	* lex.c (yylex): Rewrote range checking.  Sign extend literals.
	(error_if_numeric_overflow): Rewrote range checking.
	* decl.c (java_init_decl_processing): Initialize decimal_int_max,
	decimal_long_max.

2002-11-02  Tom Tromey  <tromey@redhat.com>

	* java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.

	* class.c (make_method_value): Put class name, not signature, into
	`throws' field.  For PR java/8415.

2002-10-24  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Invoking gij): Document --showversion.
	(Standard Properties): java.library.path now set.

2002-10-23  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (decode_signature_piece): In JNI mode, print
	`jobjectArray' when array depth is nonzero.
	Fixes PR java/8296.

2002-10-15  Andrew Haley  <aph@redhat.com>

	* parse.y (patch_invoke): Call force_evaluation_order on a static
	arg list.
	(resolve_qualified_expression_name): Call force_evaluation_order
	on a arg list that is part of a Qualified Expression Name.

	* lang.c (dump_compound_expr): New.
	(java_dump_tree): New.

2002-10-20  Ranjit Mathew <rmathew@hotmail.com>

	* gcj.texi: Added item describing the GCJ runtime property
	"gnu.gcj.progname".

2002-10-15  Richard Henderson  <rth@redhat.com>

	* jcf-parse.c (get_constant): Fix type warning.

2002-10-15  Andrew Haley  <aph@redhat.com>

	* java-tree.h (java_inlining_merge_static_initializers): Declare.
	(java_inlining_map_static_initializers): Declare.

2002-10-14  Andrew Haley  <aph@redhat.com>

	* tree-inline.c (remap_block): All local class initialization
	flags go in the outermost scope.
	(expand_call_inline): Call java_inlining_map_static_initializers.
	(expand_call_inline): Call java_inlining_merge_static_initializers.
	* java/lang.c (merge_init_test_initialization): New.
	(java_inlining_merge_static_initializers): New.
	(inline_init_test_initialization): New.
	(java_inlining_map_static_initializers): New.

2002-10-11  Mark Wielaard  <mark@klomp.org>

	* gcj.texi (Compatibility): Add Limitations and Extensions section.

2002-10-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.

2002-10-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* parse.y (merge_string_cste): Add parentheses around & within |.

2002-10-08  Tom Tromey  <tromey@redhat.com>

	* parse.y (variable_declarator_id): Simplify error path for
	array declarator error.  For PR java/8003.

2002-10-08  Zack Weinberg  <zack@codesourcery.com>

	* gjavah.c, jcf-dump.c, jv-scan.c: Globally replace GCCBUGURL with
	bug_report_url.

2002-10-08  Andrew Haley  <aph@redhat.com>

	* parse.y (attach_init_test_initialization_flags): Check for
	error_mark_node.

2002-10-07  Anthony Green  <green@redhat.com>

	* parse.y (merge_string_cste): Fix bug in string concatenation.

2002-10-03  Michael Koch  <konqueror@gmx.de>

	* gcj.texi (Standard properties):
	Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit.

2002-10-02  Roger Sayle  <roger@eyesopen.com>

	PR optimization/6627
	* lang.c (java_init): If storing the vbit in function
	pointers, ensure that force_align_functions_log is atleast
	one to aid compatability with g++ vtables.

2002-10-01  Nathan Sidwell  <nathan@codesourcery.com>

	* jcf-dump.c (print_constant, case CONSTANT_float): Don't fall
	foul of type-based aliasing.

2002-09-30  Anthony Green  <green@redhat.com>

	* gcj.texi (Invoking jv-scan): Fix texinfo.

2002-09-28  Anthony Green  <green@redhat.com>

	* gcj.texi (Invoking jv-scan): Add --no-assert documentation.
	(Code Generation): Add -fno-assert documentation.
	* jv-scan.c (flag_assert): New global.
	(options): Add assert option.
	(help): Add --no-assert documentation.
	* parse-scan.y (flag_assert): New global.
	* lang.c (lang_f_options): Add -fassert/-fno-assert support.
	(flag_assert): New global.
	* java-tree.h (flag_assert): New global.
	* lex.c (java_lex): Obey flag_assert.
	* jvspec.c (jvgenmain_spec): Strip -fassert/-fno-assert when
	calling cc1.

2002-09-26  Andrew Haley  <aph@redhat.com>

	* expr.c (build_java_array_length_access): Check for null pointer.
	* expr.c (expand_java_arrayload): Likewise.

2002-09-21  Richard Henderson  <rth@redhat.com>

	* jcf-parse.c (get_constant): Decode from IEEE no matter
	what the target format.

2002-09-20  Kazu Hirata  <kazu@cs.umass.edu>

	* ChangeLog: Follow spelling conventions.
	* class.c: Likewise.
	* decl.c: Likewise.
	* expr.c: Likewise.
	* gjavah.c: Likewise.
	* java-tree.h: Likewise.
	* jcf-dump.c: Likewise.
	* jcf-parse.c: Likewise.
	* jvspec.c: Likewise.
	* lang.c: Likewise.
	* mangle.c: Likewise.
	* parse.y: Likewise.

2002-09-17  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_read_unicode_collapsing_terminators): Handle case
	where \r appears at EOF.  Fixes PR java/7950.

2002-09-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* jvspec.c (lang_specific_driver): Remove unused variable.

2002-09-16  Geoffrey Keating  <geoffk@apple.com>

	* java-tree.h (union lang_tree_node): Add chain_next option.

2002-09-16  Richard Henderson  <rth@redhat.com>

	* jcf-parse.c (get_constant): Runtime check for IEEE format;
	use new real.h interface.
	* jcf-write.c (find_constant_index): Use new real.h interface.
	* lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.

2002-09-15  Kazu Hirata  <kazu@cs.umass.edu>

	* lang.c: Follow spelling conventions.

2002-09-11  Per Bothner  <per@bothner.com>

	* parse.y (fold_constant_for_init):  If a VAR_DECL, convert numerical
	constant to the type of the field.
	(java_complete_tree):  Remove now-redundant code.

	* parse.y (fold_constant_for_init):  'null' is not a constant expr.

2002-09-03  Jesse Rosenstock  <jmr@ugcs.caltech.edu>

	For PR java/5794:
	* verify.c (verify_jvm_instructions) [OPCODE_jsr]: Only push the
	return label if a ret instruction for the jsr has been reached.

2002-09-09  Ranjit Mathew  <rmathew@hotmail.com>

	* parse.y (DIR_SEPARATOR): Don't define.
	(check_class_interface_creation): Use IS_DIR_SEPARATOR.

2002-08-28  Andrew Haley  <aph@redhat.com>

	* verify.c (verify_jvm_instructions): Allow exception handler
	inside code that is being protected, but generate a warning.
	* except.c (link_handler): Initialize `expanded' in new eh_range.
	(binding_depth, is_class_level, current_pc): Declare extern.

2002-09-01  Mark Wielaard <mark@klomp.org>

	* gcj.texi: Add chapter about system properties.
	Fixed some typos.

2002-08-26  Tom Tromey  <tromey@redhat.com>

	* parse.y (try_builtin_assignconv): Allow narrowing primitive
	conversion if RHS_TYPE is byte, short, or char.

2002-08-22  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Invoking gij): Document -cp and -classpath.

2002-08-21  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java/jcf-path.o): Use $(datadir), not
	$(prefix)/share.  For PR libgcj/7633.

	For PR java/6005 and PR java/7611:
	* lang.c (LANG_HOOKS_CAN_USE_BITFIELDS_P): New define.
	(java_can_use_bit_fields_p): New function.

2002-08-16  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Class Initialization): Mention class initialization of
	arrays.

2002-07-30  Andrew Haley  <aph@cambridge.redhat.com>

	* Make-lang.in (java-tree-inline.o): New.
	(JAVA_OBJS): Add java-tree-inline.o.
	* parse.y (source_end_java_method): Call java_optimize_inline.
	(java_expand_method_bodies): Save method's tree in
	DECL_SAVED_TREE.
	(add_stmt_to_compound): Keep track of the number of statments.
	* lang.c (java_init): Enable flag_inline_trees.
	(java_post_options): If flag_inline_functions is on, enable
	flag_inline_trees instread.
	(decl_constant_value): New.
	(java_tree_inlining_walk_subtrees): New.
	* java-tree.h (DECL_NUM_STMTS): New macro.
	(java_optimize_inline): Declare.
	* expr.c (java_expand_expr): Allow a BLOCK to return a value.
	Handle a LABEL_EXPR.
	* decl.c (build_result_decl): If we already have a DECL_RESULT
	don't make another.
	(dump_function): New.
	(java_optimize_inline): New.
	(dump_function): New.

2002-08-13  Jesse Rosenstock  <jmr@fulcrummicro.com>

	For PR java/7483:
	* parse.y (build_assertion): Invert return from
	desiredAssertionStatus.

2002-08-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* jcf-write.c (get_access_flags): Return correct access flags for
	private and protected inner classes.

2002-08-08  Nathan Sidwell  <nathan@codesourcery.com>

	* java/Make-lang.in (java.mostlyclean): Remove coverage files.

2002-08-05  Geoffrey Keating  <geoffk@redhat.com>

	* mangle_name.c: Don't include obstack.h twice.
	* xref.c: Don't include obstack.h.

2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* class.c: (permanent_obstack): Delete declaration.
	* constants.c: (permanent_obstack): Delete declaration.
	* except.c: (permanent_obstack): Delete declaration.
	* expr.c: (permanent_obstack): Delete declaration.
	* jcf-parse.c: (permanent_obstack): Delete declaration.
	(saveable_obstack): Delete declaration.
	* parse.h: (permanent_obstack): Delete declaration.
	* typeck.c: (permanent_obstack): Delete declaration.

2002-08-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	* gcj.texi (version-gcc): Increase to 3.3.

2002-07-22  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_lex): Check for `e' or `E' after 0.

2002-07-21  Richard Henderson  <rth@redhat.com>

	* lang.c (java_unsafe_for_reeval): New.
	(LANG_HOOKS_UNSAFE_FOR_REEVAL): New.

2002-07-21  Neil Booth  <neil@daikokuya.co.uk>

	* jcf-path.c (GET_ENV_PATH_LIST): Remove.
	(jcf_path_init): Use GET_ENVIRONMENT.

2002-07-10  Roger Sayle  <roger@eyesopen.com>
	    Zack Weinberg <zack@codesourcery.com>

	* builtins.c (initialize_builtins): Remove defines that
	handled C/C++ specific junk hereby removed from builtins.def.

2002-07-07  Neil Booth  <neil@daikokuya.co.uk>

	* lang.c (java_post_options): Update prototype.

2002-07-05  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (initialize_builtins): Ignore the additional
	parameter to DEF_BUILTIN.  Handle more C/C++ specific junk in
	the builtins.def file.

2002-07-01  Tom Tromey  <tromey@redhat.com>

	For PR libgcj/7073:
	* parse.y (patch_incomplete_class_ref): Handle VOID_TYPE
	specially.

2002-07-01  Roger Sayle  <roger@eyesopen.com>

	* java/decl.c (builtin_function): Accept additional parameter.
	(java_init_decl_processing): Pass an additional NULL_TREE
	argument to builtin_function.

2002-06-29  T.J. Mather  <tjmather@maxmind.com>

	* gcj.texi: Fixed gcj invocation example so that it compiles.

2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lex.c (java_init_lex): Avoid incorrect hardcoded constant 11.
	* parse.y (mark_parser_ctxt): Likewise.
	(check_modifiers, declare_local_variables): Avoid incorrect
	hardcoded constant 10.

	* lex.c (java_read_char): Avoid "comparison is always true"
	warning.

2002-06-25  Andreas Schwab  <schwab@suse.de>

	* expr.c (JSR): Avoid undefined operation on PC.

2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* decl.c (clear_binding_level): Const-ify.

2002-06-13  Akim Demaille  <akim@epita.fr>

	* parse.y (class_declaration, interface_declaration): Make sure
	all their rules have an action, in order to avoid meaningless `$$
	= $1' and their type clashes.

2002-06-11  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (generate_classfile): Use FIELD_SYNTHETIC.
	* parse-scan.y (statement_without_trailing_substatement): Added
	assert_statement.
	(assert_statement): New rule.
	* java-tree.h (struct lang_type) [assertions]: New field.
	(TYPE_USES_ASSERTIONS): New macro.
	(CLASS_USES_ASSERTIONS): Likewise.
	(FIELD_SYNTHETIC): New define.
	* lex.c (java_lval;): Added ASSERT_TK.
	* parse.y (ASSERT_TK): Added.
	(statement_without_trailing_substatement): Added assert_statement.
	(assert_statement): New rule.
	(build_assertion): New function.
	(maybe_generate_pre_expand_clinit): Create and initialize
	$assertionsDisabled.
	(lookup_package_type): Removed decl.
	* keyword.h: Rebuilt.
	* keyword.gperf (assert): New token.

2002-06-10  Akim Demaille  <akim@epita.fr>

	* parse.y (interface_type_list, class_member_declaration)
	(unary_expression_not_plus_minus): Remove duplicate %type.
	Whitespace changes.

2002-06-09  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in (java/lang.o): Use LANGHOOKS_DEF_H.

	* parse.y (method_header): Give error message in all cases.
	Fixes PR java/6865.

2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	Don't use RTL inlining. Fix for PR java/6820.
	* lang.c (LANG_HOOKS_POST_OPTIONS): Define.
	(flag_really_inline): New.
	(java_decode_option): Set flag_really_inline if -finline-functions
	is seen.
	(java_post_options): New function. Turn off inlining unless
	flag_really_inline is set.

2002-06-10  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* gjavah.c (throwable_p): Accept argument as either a classname or
	signature fragment. Create null-terminated classname string for super
	when calling itself recursively.
	(decode_signature_piece): Skip first character from class name
	signature when calling throwable_p.

2002-06-08  H.J. Lu  (hjl@gnu.org)

	* jcf-path.c (jcf_path_init): Allocate 1 more byte for string.

2002-06-04  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (perform_relocations): Optmize a goto to a goto.

2002-06-04  Michael Koch  <konqueror@gmx.de>

	* gcj.texi (Input Options): Fixed typo.

2002-06-04  Zack Weinberg  <zack@codesourcery.com>

	* java-tree.h, class.c, expr.c, jcf-parse.c, parse.y,
	typeck.c, verify.c: Remove all #if JAVA_USE_HANDLES blocks,
	all mention of CLASS_TO_HANDLE_TYPE or HANDLE_TO_CLASS_TYPE,
	and all now-pointless local variables.  Rename other local
	variables to reflect their not being handles.

	* java-tree.h, jcf-dump.c, jcf-io.c: Remove all
	#if JCF_USE_STDIO blocks.

	* parse.y: Add missing semicolon at end of rule.

2002-06-03  Geoffrey Keating  <geoffk@redhat.com>

	* check-init.c (attach_initialized_static_class): Delete, unused.
	* parse.y: Use htab_t instead of struct hashtable, update
	all uses.
	* java-tree.h: Include hashtab.h instead of hash.h.
	(struct lang_decl_func): Use htab_t, set up for gengtype.
	(struct init_test_hash_entry): Delete.
	(struct treetreehash_entry): New.
	(java_treetreehash_find): New
	(java_treetreehash_new): New prototype.
	(java_treetreehash_create): New prototype.
	(java_mark_tree): Delete prototype.
	(java_hash_hash_tree_node): Delete prototype.
	(java_hash_compare_tree_node): Delete prototype.
	(attach_initialized_static_class): Delete prototype.
	* expr.c (build_class_init): Update to use java_treetreehash
	functions.
	(java_expand_expr): Update to use htab_t.
	(emit_init_test_initialization): Likewise.
	* decl.c (java_mark_tree): Delete.
	* class.c (init_test_hash_newfunc): Delete.
	(java_hash_hash_tree_node): Delete.
	(java_hash_compare_tree_node): Delete.
	(add_method_1): Update to use java_treetreehash functions.
	(JAVA_TREEHASHHASH_H): New macro.
	(java_treetreehash_hash): New function.
	(java_treetreehash_compare): New function.
	(java_treetreehash_find): New function.
	(java_treetreehash_new): New function.
	(java_treetreehash_create): New function.
	* Make-lang.in (JAVA_TREE_H): Replace hash.h by HASHTAB_H.

	* Make-lang.in (java/parse.o): Depend on debug.h.
	* java-tree.h (struct lang_identifier): Use gengtype.
	(union lang_tree_node): New.
	(struct lang_decl_func): Use gengtype.
	(struct lang_decl_var): Likewise.
	(struct lang_decl): Likewise.
	* parse.y: Include debug.h.
	* lang.c (LANG_HOOKS_MARK_TREE): Delete.

	* lang.c (struct language_function): New dummy structure.

	* java-tree.h (MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): Set
	descriminator for DECL_LANG_SPECIFIC.
	(struct lang_decl_func): Rename from struct lang_decl.
	(enum lang_decl_desc): New.
	(struct lang_decl): Make it a union.  Update all the accessor macros.
	(struct lang_type): Use gengtype.
	* class.c (add_method_1): Set descriminator for DECL_LANG_SPECIFIC.
	* decl.c (java_dup_lang_specific_decl): All lang_decl structures
	are now the same size.
	(lang_mark_tree): Use gengtype to mark TYPE_LANG_SPECIFIC;
	use discriminator to mark DECL_LANG_SPECIFIC.

	* Make-lang.in (gt-java-builtins.h): New rule.
	(java/builtins.o): Add dependency on gt-<filename>.h.
	* builtins.c: Use gengtype for roots.
	(union string_or_tree): Use gengtype.
	(struct builtin_record): Use gengtype.
	* config-lang.in (gtfiles): Add builtins.c.

	* Make-lang.in (gt-java-class.h, gt-java-constants.h,
	gt-java-decl.h, gt-java-expr.h, gt-java-jcf-parse.h,
	gt-java-jcf-write.h, gt-java-lang.h, gt-java-mangle.h,
	gt-java-parse.h, gtype-java.h): Add rules to generate.
	(parse.o): Add dependency on gt-java-parse.h, gt-java.h.
	(class.o): Add dependency on gt-*.h.
	(constants.o): Likewise.
	(decl.o): Likewise.
	(expr.o): Likewise.
	(jcf-parse.o): Likewise.
	(jcf-write.o): Likewise.
	(lang.o): Likewise.
	* config-lang.in (gtfiles): New.
	* class.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
	* constants.c: Replace uses of ggc_add_* with GTY markers.
	Include gt-*.h.
	* decl.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
	* expr.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
	* java-tree.h: Replace uses of ggc_add_* with GTY markers.
	* jcf-parse.c: Replace uses of ggc_add_* with GTY markers.
	Include gt-*.h.
	* jcf-write.c: Replace uses of ggc_add_* with GTY markers.
	Include gt-*.h.
	* lang.c: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
	* mangle.c: Replace uses of ggc_add_* with GTY markers.  Include
	gt-*.h.
	* parse.y: Replace uses of ggc_add_* with GTY markers.  Include gt-*.h.
	Include gtype-java.h.

2002-06-02  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/5913:
	* parse.y (patch_binop): Call patch_string on op1.

2002-06-02  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/1343, PR java/6336:
	* parse.y (make_nested_class_name): Remove extraneous `else'; fix
	formatting.  Changed return type.
	(anonymous_class_counter): Moved to top of file.
	(maybe_make_nested_class_name): Append number to class name for
	function-local classes.

2002-05-28  Zack Weinberg  <zack@codesourcery.com>

	* decl.c, jcf-parse.c, parse.y, typeck.c: Include real.h.
	* Make-lang.in: Update dependency lists.

2002-05-18  Mark Mitchell  <mark@codesourcery.com>

	* gjavah.c (throwable_p): Do not free the name of the class after
	passing it to find_class.
	* java-tree.h (CLASS_BEING_LAIDOUT): Remove duplicate definition.
	* jcf-io.c (dirent.h): Include it.
	(fnmatch.h): Likewise.
	(compare_path): New function.
	(java_or_class_file): Likewise.
	(memoized_dirlist_entry): New type.
	(memoized_dirlist_lookup_eq): New function.
	(memoized_dirlists): New variable.
	(caching_stat): New function.
	(memoized_class_lookup_eq): New function.
	(memoized_class_lookups): Likewise.
	(find_class): Use memoized_class_lookups and caching_stat.
	* jcf.h (JCF_USE_SCANDIR): Define.
	* parse.y (java_expand_classes): Write the class files in reverse
	order.

2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Make-lang.in: Allow for PWDCMD to override hardcoded pwd.

2002-05-13  Mark Mitchell  <mark@codesourcery.com>

	* jcf-write.c (write_classfile): Unlink the temporary file if it
	cannot be renamed.  Use concat to build up the name of the
	temporary file.

2002-05-08  Mark Mitchell  <mark@codesourcery.com>

	* jcf-write.c (write_classfile): Write the file to a
	temporary file and then rename it.

2002-05-07  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (throwable_p): Use xstrdup, not strdup.

	Fix for PR java/1200:
	* gjavah.c (throwable_p): New function.
	(decode_signature_piece): Use it.  A `WeakReference' isn't the
	same as a `jweak'.
	Include hashtab.h.
	(gcjh_streq): New function.

2002-05-07  Andreas Jaeger  <aj@suse.de>

	* parse.y (finish_for_loop): Fix if statement.

2002-05-06  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/5941:
	* parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
	loop update expression.
	(java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
	* java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.

2002-05-04  Mark Wielaard  <mark@klomp.org>

	For PR java/6519:
	* parse.y (build_string_concatenation): Return just op1 only when op2
	is null and op1 is a STRING_CST, otherwise always construct a
	StringBuffer.

2002-04-27  Tom Tromey  <tromey@redhat.com>

	For PR java/6382:
	* parse.y (string_convert_int_cst): New function.
	(merge_string_cste): Use it.

2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* java-tree.h (java_parse_file): Update.
	(java_set_yydebug): Remove.
	* jcf-parse.c (yydebug): Remove.
	(java_set_yydebug): Die.
	(java_parse_file): Update.
	* lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.

2002-04-24  Tom Tromey  <tromey@redhat.com>

	For PR java/6425:
	* parse.y (qualify_ambiguous_name) [case CALL_EXPR]: Always choose
	EXPR_WFL_QUALIFICATION of qual_wfl.

2002-04-23  Per Bothner  <per@bothner.com>

	* expr.c (PRE_JSR):  Call NOTE_LABEL for return address.
	* java-tree.h (BCODE_RETURN_TARGET):  Removed - never set.
	(BCODE_TARGET):  Remove BCODE_RETURN_TARGET.

2002-04-23  Tom Tromey  <tromey@redhat.com>

	For PR java/6314:
	* jvspec.c (lang_specific_driver): Use --resource, not -R.  Also
	recognize `-fcompile-resource='.
	* gcj.texi (Invoking gcj): Use --resource, not -R.  Expanded text
	a bit.

2002-04-22  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-parse.c: (yyparse): Don't prepend "./" to relative
	paths. Fixes PR java/2791.

2002-04-19  Andrew Haley  <aph@redhat.com>

	* jcf-write.c (push_long_const): lo, hi: New variables.
	Use rshift_double to extract the high part of a 64-bit long.
	Use WORD_TO_INT to extract the low part.

	* jcf-parse.c (get_constant): CONSTANT_Integer: Use an unsigned
	HOST_WIDE_INT for num.  Use JPOOL_UINT to get it.
	CONSTANT_Double: Use JPOOL_UINT to get both halve of a double.

2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* typeck.c (incomplete_type_error): Remove.

2002-04-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* class.c (make_class_data): Set DECL_ALIGN on static class data,
	for hash synchronization.
	* expr.c (java_expand_expr): Set DECL_ALIGN on static array objects.
	* decl.c (java_init_decl_processing): Don't set TYPE_ALIGN for
	class_type_node.

2002-04-16  Mark Wielaard  <mark@klomp.org>

	* jcf-write.c (generate_bytecode_insns): Only write const_0 if not
	negative zero.

2002-04-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	Fix for PR java/6294:
	* parse.h (INNER_INTERFACE_MODIFIERS): Allow ACC_PRIVATE for inner
	interfaces.

2002-04-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	Fix for PR java/6085:
	* parse.y (patch_method_invocation): Always use build_access_to_thisn
	to get enclosing "this" argument for inner-class constructor
	invocation. Pass correct arguments to build_access_to_thisn.

2002-04-10  Andreas Jaeger  <aj@suse.de>

	* gcj.texi (Input Options): Fix extdirs patch.

2002-04-10  Anthony Green  <green@redhat.com>

	* jcf-path.c (jcf_path_init) : Clean up local extdirs declaration.

2002-04-09  Anthony Green  <green@redhat.com>

	* gcj.texi (Input Options): Add --extdirs documentation.
	* jcf-dump.c (OPT_extdirs): New macro.
	(options): Add extdirs option.
	(help): Describe --extdirs.
	(main): Handle OPT_extdirs.
	* gjavah.c (OPT_extdirs): New macro.
	(options): Add extdirs option.
	(help): Describe --extdirs.
	(main): Handle OPT_extdirs.
	* jcf-path.c (jcf_path_init): Add extdirs support.
	(jcf_path_extdirs_arg): New function.
	(extensions): New variable to hold extensions path entries.
	* jvspec.c: Remove -fextdirs= when compiling main().
	* lang.c (java_decode_option): Handle -fextdirs=.
	* jcf.h (jcf_path_extdirs_arg): Declare new function.
	* Make-lang.in: Compile jcf-path with version info for use in
	identifying the appropriate libgcj.jar.

2002-04-08  Tom Tromey  <tromey@redhat.com>

	For PR libgcj/5303:
	* .cvsignore: Added rmic.1 and rmiregistry.1.
	* gcj.texi (Top): Link to new nodes.
	(Invoking rmic): New node.
	(Invoking rmiregistry): Likewise.
	* Make-lang.in (java.generated-manpages): Added rmic.1 and
	rmiregistry.1.
	(java.maintainer-clean): Likewise.
	($(srcdir)/java/rmic.1): New target.
	($(srcdir)/java/rmiregistry.1): Likewise.
	(java.install-man): Handle rmic.1 and rmiregistry.1.

2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* gcj.texi (Invocation): Update JvAttachCurrentThread documentation.
	Add note about handling uncaught exceptions. Add an exception handler
	to example.

2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (resolve_qualified_expression_name): Clear "from_super" flag
	after using it to patch CALL_EXPR.

2002-04-08  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* gcj.texi (Invocation): Document CNI invocation API.

2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* expr.c (truthvalue_conversion): Rename.  Update.
	(expand_compare): Update.
	* java-tree.h (java_truthvalue_conversion): New.
	* lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.

2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* java-tree.h (java_mark_addressable): New.
	* lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	* typeck.c (mark_addressable): Rename, update.

2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* expr.c (build_java_binop): Update.
	* java-tree.h (java_signed_type, java_unsigned_type,
	java_signed_or_unsigned_type): Update.
	* lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	* parse.y (patch_binop): Update.
	* typeck.c (signed_or_unsigned_type, unsigned_type,
	signed_type): Update.

2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>

	* lang.c (LANG_HOOKS_PRINT_ERROR_FUNCTION): Redefine.
	(java_dummy_print): Remove.
	(lang_print_error): Rename.  Exit early if inhibiting output.
	(inhibit_error_printing_function): New.
	(java_init): Don't set hook.
	(lang_init_source): Use new boolean.

2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>

	* parse.y (do_resolve_class): Fix infinite recursion.

2002-03-29  Tom Tromey  <tromey@redhat.com>

	* parse.y (check_inner_circular_reference): Ignore incomplete
	types.

2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Make-lang.in (builtins.o): Update.
	* boehm.c (get_boehm_type_descriptor): Update.
	* builtins.c: Include langhooks.h.
	* decl.c (java_init_decl_processing): Update.
	* java-tree.h (java_type_for_mode, java_type_for_size): New.
	* lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.
	* typeck.c (type_for_mode, type_for_size): Update.

2002-03-29  Martin Kahlert  <martin.kahlert@infineon.com>

	* lex.c (java_new_lexer): Alias "646" to DEFAULT_ENCODING.

2002-03-28  Tom Tromey  <tromey@redhat.com>

	* except.c (expand_end_java_handler): If the handler type is NULL,
	use java.lang.Throwable.  Fixes PR java/5986.

2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>

	Fix for PR java/4715:
	* jcf-parse.c (parse_source_file_3): New function.
	(read_class): Call it.
	(java_parse_file): Likewise.

2002-03-28  Jan Hubicka  <jh@suse.cz>

	* java/lang.c (java_init_options): Set flag_trapping_math to 0.

2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (resolve_package): Initialize "decl".
	(lookup_package_type): Remove unused function.

2002-03-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	Fix for PR java/5993:
	* parse.y (resolve_package): Return the decl if resolution was
	successful. Don't special case "java.lang" and "java.lang.reflect"
	packages. Set type_name to the merged identifier.
	(resolved_qualified_expression_name): Print error using "name" if
	resolve_package returns NULL_TREE.

2002-03-27  Tom Tromey  <tromey@redhat.com>

	* expr.c (expand_invoke): Don't generate null pointer check if
	we're calling <init>.

2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* expr.c (java_lang_expand_expr): Rename java_expand_expr,
	fix prototype.
	* java-tree.h (java_lang_expand_expr): Similarly.
	* lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
	(java_init): Don't set hook.

2002-03-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	Fix for PR java/5850:
	* parse.y (lookup_field_wrapper): Call itself recursively for enclosing
	context if field was not found in the current scope.
	* expr.c (lookup_field): Don't look in enclosing contexts.

2002-03-26  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/5942:
	* parse.y (init_src_parse): Added sanity check.
	* parse.h (struct parser_ctxt) [modifier_ctx]: Array has 12
	elements, not 11.

2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>

	* decl.c (lang_mark_tree): Rename java_mark_tree.
	* java-tree.h (java_mark_tree): New.
	* java-lang.c (LANG_HOOKS_MARK_TREE): Redefine.

2002-03-25  Zack Weinberg  <zack@codesourcery.com>

	* lex.c: Change java_perform_atof to take normal parameters
	instead of a pointer to a parameter block.  Call it directly
	from java_lex.

2002-03-22  Mark Wielaard  <mark@klomp.org>

	Fix for PR java/5368:
	* parse.y (resolve_qualified_expression_name): Use decl not field_decl
	when printing error message.

2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* decl.c (maybe_build_cleanup): Remove.

2002-03-22  Tom Tromey  <tromey@redhat.com>

	Andrew Haley  <aph@cambridge.redhat.com>

	* expr.c (build_field_ref): Don't build a check if the field is a
	member of `this'.

2002-03-21  Eric Blake  <ebb9@email.byu.edu>

	Fix for PR java/6026:
	* lex.c (java_lex): Fix parsing of consecutive floats.

2002-03-21  Tom Tromey  <tromey@redhat.com>

	* parse.y (build_access_to_thisn): Stop when FROM is not an inner
	class.

2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cp-tree.h (pushdecl, pushlevel, poplevel, set_block,
	insert_block, getdecls, kept_level_p, global_bindings_p): New.

2002-03-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>

	* gcj.texi: @code{gcj} becomes @command{gcj}.
	@code{gcc} becomes @command{gcc}.
	GcjRaw changed to gnu.gcc.RawData.

2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* decl.c (start_java_method): Use new hook.
	* lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(java_init): Remove old hook.

2002-03-18  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* builtins.c (define_builtin): Do nothing if `type' is null.
	Fixes PR java/5876.

2002-03-18  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (parser_check_super_interface): Fix error message
	grammar/order.

2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-parse.c (get_constant): Delete unused variables.

2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>

	* java-tree.h (java_parse_file): New.
	* jcf-parse.c (yyparse): Rename java_parse_file.
	* lang.c (LANG_HOOKS_PARSE_FILE): Redefine.

2002-03-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (craft_constructor): Return the constructor decl.
	(java_expand_classes): Update comments.
	(lookup_method_invoke): Call fix_constructors immediately for
	anonymous class. Fixes PR java/5935.

2002-03-15  Anthony Green  <green@redhat.com>

	* jcf-parse.c (yyparse): Don't emit class registration
	constructor when compiling resource files.

2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lang.c (java_tree_code_type, java_tree_code_length,
	tree_code_name): Delete.
	(tree_code_type, tree_code_length, tree_code_name): Define.
	(java_init): Don't try to copy into the various tree_code
	arrays.

2002-03-12  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (get_constant) [CONSTANT_String]: String values are
	UTF-8, not UCS-2.  Fixes PR java/5923.

	* parse.y (qualify_ambiguous_name): Handle case where QUAL_WFL is
	a call_expr wrapped in a convert.  Fixes PR java/5848.

2002-03-12  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* jcf-write.c (write_classfile): Improve error strings.

2002-03-11  Eric Blake  <ebb9@email.byu.edu>

	* lex.c: Adjust comments to GNU standards.

2002-03-11  Eric Blake  <ebb9@email.byu.edu>

	Fix for PR java/5902:
	* lex.c (java_lex): Fix parsing of literals.

2002-03-11  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (patch_assignment): Wrap the right-hand-side with a save_expr
	to prevent it getting evaluated twice in the store checking case.
	* expr.c (build_java_arraystore_check): Unwrap SAVE_EXPR's when
	examining OBJECT.

2002-03-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* decl.c (java_init_decl_processing): Make sure class_type_node
	alignment is not less than 64 bits if hash synchronization is enabled.

2002-03-08  Per Bothner  <per@bothner.com>

	* parse.y (java_complete_lhs):  Check if patch_assignment
	returned an error-mark.

	* parse.y (try_builtin_assignconv):  Don't special-case zero.

2002-03-08  Per Bothner  <per@bothner.com>

	Fix for PR java/5812.
	* expr.c (build_java_jsr):  Take pc arguments, and do lookup_label
	here instead of in JSR macro.  Likewise with load_type_state call.
	Do the latter on if the return_pc has been verified (the jsr returns).
	(JSR):  Now just call build_java_jsr.

2002-03-07  Jeff Sturm  <jsturm@one-point.com>

	* java/Make-lang.in (JAVA_TARGET_INSTALL_NAME): Define.
	(java.install-common): Link native driver to
	JAVA_TARGET_INSTALL_NAME.

2002-03-05  David Billinghurst <David.Billinghurst@riotinto.com>

	* builtins.c(cos_builtin): method_return_type ATTRIBUTE_UNUSED
	* builtins.c(sin_builtin): Likewise
	* builtins.c(sqrt_builtin): Likewise

2002-03-03  Zack Weinberg  <zack@codesourcery.com>

	* java/expr.c, java/jcf-parse.c, java/lex.c:
	Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
	REAL_ARITHMETIC blocks unconditional.  Delete some further
	#ifdef blocks predicated on REAL_ARITHMETIC.

2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (init_class_processing): Use ARRAY_SIZE in lieu of
	explicit sizeof/sizeof.
	* decl.c (java_init_decl_processing): Likewise.
	* jcf-parse.c (init_jcf_parse): Likewise.
	* parse.y (init_src_parse): Likewise.

2002-03-02  Per Bothner  <per@bothner.com>

	Make --CLASSPATH by a synonym for --classpath and -classpath.
	Implement --bootclasspath.
	* jcf-path.c (classpath_u):  Rename static variable to classpath_user.
	(classpath_l):  Remove.
	(jcf_path_CLASSPATH_arg):  Remove.
	(jcf_path_bootclasspath_arg):  New function.
	(jcf_path_seal):  Simplify accordingly.

	* jcf.h (jcf_path_bootclasspath_arg):  New declarations.
	(jcf_path_CLASSPATH):  Remove declaration.
	* jvspec.c (jvgenmain_spec):  Also accept -fbootclasspath*.
	(lang_specific_driver):  Translate -bootclasspath.
	* lang-options.h:  Add --bootclasspath.  Update --CLASSPATH.
	* lang.c (decode_lang_options):  Do jcf_path_init first.
	Handle -fCLASSPATH same as -fclasspath.  Also process -fbootclasspath.
	* gjavah.c:  Also handle --bootclasspath.
	Handle --CLASSPATH as a synonum for --classpath.
	* jcf-dump.c: Likewise.

	"." is not part of system path, but is the default for --classpath.
	* jcf-path.c (jcf_path_init):  Don't add "." to sys_dirs.
	(jcf_path_seal):  Add "." if no CLASSPATH specified.

	* gcj.texi:  Document changes.

2002-03-01  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* expr.c (build_java_arraystore_check): Fix formatting.

2002-02-28  Alexandre Petit-Bianco  <apbianco@redhat.com>

	Fix for PR java/5758, java/5632:
	* jcf-parse.c (load_class): Renamed local variable, consider `.' an
	inner-class separator too.
	* parse.y (do_resolve_class): New local `decl_result.'
	Progressively build a name for what can have been loaded.

2002-02-28  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* expr.c (java_array_data_offset): Removed function.
	(JAVA_ARRAY_LENGTH_OFFSET): Removed macro.
	(build_java_array_length_access): Obtain "length" value using a
	COMPONENT_REF, instead of INDIRECT_REF and arithmetic.
	(build_java_arrayaccess): Correct comment. Access "data" using a
	COMPONENT_REF, and return an ARRAY_REF instead of an INDIRECT_REF.
	(build_java_arraystore_check): New function.
	(expand_java_arraystore): Use build_java_arraystore_check.
	* parse.y (patch_assignment): Simplify code to insert a store check
	when lvalue is an ARRAY_REF. Use build_java_arraystore_check.
	* check-init.c (check_init): Update to reflect that an array length
	access is now a COMPONENT_REF.
	* gcj.texi (Code Generation): Improve documentation of
	-fno-bounds-check. Add documentation for -fno-store-check.
	* java-tree.h (flag_store_check): Declare.
	(build_java_arraystore_check): Declare.
	* lang.c (flag_store_check): Initialize to 1.
	(lang_f_options): Add store-check option.
	* jvspec.c: Don't pass store-check option to jvgenmain.
	* lang-options.h: Add help string for -fno-store-check.

2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>

	* decl.c (copy_lang_decl): Rename java_dup_lang_specific_decl.
	* java-tree.h (java_dup_lang_specific_decl): New.
	* lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.

2002-02-27  Zack Weinberg  <zack@codesourcery.com>

	* builtins.c, decl.c: Delete traditional-mode-related code
	copied from the C front end but not used, or used only to
	permit the compiler to link.

2002-02-22  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/2369:
	* jvspec.c (verify_class_name): New function.
	(lang_specific_driver): Call it.
	(JAVA_START_CHAR_P): New macro.
	(JAVA_PART_CHAR_P): Likewise.

2002-02-22  Per Bothner  <per@bothner.com>

	* class.c:  Change vtable to be more compatible with g++ v3 abi.
	(get_dispatch_table):  Prepend offset-to-top (always 0) and
	type_info pointer (currently unimplemented hence NULL) to vtable.
	Specifically, prepend offset-to-top and typeinfo ptr (currently null).
	(make_class_data):  Variable dtable_start_offset is sizeof 2 pointers.
	Adjust vtable pointers by dtable_start_offse - i.e. skip new words.
	(build_dtable_decl):  Add declarations for new fields.

2002-02-20  Per Bothner  <per@bothner.com>

	* parse.y (patch_method_invocation): Set CAN_COMPLETE_NORMALLY on call
	to finit$ (otherwise generate_bytecode_insns drops it). However, we
	don't need to set it on the COMPOUND_EXPR - the caller does that.

2002-02-20  Nic Ferrier  <nferrier@tapsellferrier.co.uk>

	* gcj.texi: Option `--classpath' becomes `--CLASSPATH.'Option
	`--CLASSPATH' becomes `--classpath.'
	* gjavah.c: Likewise.
	* jcf-dump.c: Likewise.
	* lang-options.h: Likewise.
	* lang.c: Likewise.
	* jcf-path.c: Updated comment.
	(jcf_path_classpath_arg): Renamed `jcf_path_CLASSPATH_arg.'
	(jcf_path_CLASSPATH_arg): Renamed `jcf_path_classpath_arg.'
	* jcf.h (jcf_path_CLASSPATH_arg): Ditto.
	(jcf_path_CLASSPATH_arg): Ditto.
	(classpath_u): Updated leading comment.

2002-02-20  Per Bothner  <per@bothner.com>

	* builtins.c (check_for_builtin):  New function.
	(build_call_or_builtin):  Remove.
	* java-tree.h:  Update accordingly.
	* expr.c (expand_invoke):  Use build + check_for_builtin instead
	of build_call_or_builtin.
	* parse.y (patch_invoke):  Likewise.  This avoids needlessly creating
	a new CALL_EXPR node, which means we don't lose the CALL_USING_SUPER
	flag (which had caused jcf-write to incorrectly emit invokevirtual).

2002-02-17  Tom Tromey  <tromey@redhat.com>

	* java-tree.h (TYPE_STRICTFP): New macro.
	(struct lang_type) [strictfp]: New field.
	(CLASS_STRICTFP): New macro.
	(METHOD_STRICTFP): New macro.
	(struct lang_decl) [strictfp]: New field.
	* parse.y (method_header): Disallow strictfp constructor or
	abstract method.
	(STRICT_TK): Move before MODIFIER_TK.
	* parse.h (CLASS_MODIFIERS): Added ACC_STRICT.
	(METHOD_MODIFIERS): Likewise.
	(INTERFACE_MODIFIERS): Likewise.
	* jcf-write.c (get_access_flags): Likewise.
	* class.c (set_class_decl_access_flags): Recognize ACC_STRICT.
	(add_method_1): Likewise.
	(get_access_flags_from_decl): Likewise.
	* jcf-dump.c (print_access_flags): Print in standard order.  Also,
	recognize strictfp flag.
	* jcf.h (ACC_STRICT): New define.

2002-02-12  David Billinghurst <Davod.Billinghurst@riotinto.com>

	* class.c(build_utf8_ref): Move declaration of decl_size

2002-02-07  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Input Options): --CLASSPATH does not suppress system
	path.

2002-02-04  Anthony Green  <green@redhat.com>

	* class.c (build_utf8_ref): Put UTF-8 constants into merged
	sections if available.

2002-02-04  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (java_expand_classes): Fix typo in static field loop.

2002-02-02  Richard Henderson  <rth@redhat.com>

	* class.c (add_field): Mark static fields external.
	(build_class_ref): Remove redundant set.
	* parse.y (java_expand_classes): Mark static fields of classes
	to be compiled as local.
	* jcf-parse.c (parse_class_file): Likewise.

2002-02-02  Nic Ferrier  <nferrier@tapsellferrier.co.uk>

	* gcj.texi (About CNI): New node.

2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR java/5080
	* jcf-parse.c : Check for HAVE_LOCALE_H before using
	setlocale() with LC_CTYPE as a parameter.
	* jv-scan.c: Same.

2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
	Follow GNU Coding Standards for --version.

2002-01-28  Tom Tromey  <tromey@redhat.com>

	* expr.c (build_jni_stub): Ensure storage for `meth' is
	generated.
	* parse.y (java_complete_expand_methods): Set
	current_function_decl before building JNI stub.

2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>

	* gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
	BUILT_IN_SQRTF.

2002-01-22  Tom Tromey  <tromey@redhat.com>

	* decl.c (java_init_decl_processing): Use add_predefined_file.
	Predefine RawData.java.
	(predef_filenames): Removed.
	(java_init_decl_processing): Don't register predef_filenames.
	* jcf-parse.c (add_predefined_file): New function.
	(predefined_filename_p): Rewrote.
	(predefined_filename_p): No longer static.
	* decl.c (java_init_decl_processing): Call initialize_builtins.
	* Make-lang.in (JAVA_OBJS): Added builtins.o.
	(java/builtins.o): New target.
	* builtins.c: New file.
	* parse.y (patch_invoke): Use build_call_or_builtin.
	* java-tree.h (build_call_or_builtin): Declare.
	(initialize_builtins): Declare.
	(java_set_exception_lang_code): Removed unused declaration.
	(PREDEF_FILENAMES_SIZE): Removed.
	(java_tree_index): Added JTI_PREDEF_FILENAMES.
	(predef_filenames): New define.
	(add_predefined_file): Declare.
	(predefined_filename_p): Declare.
	* expr.c (expand_invoke): Use build_call_or_builtin.

2002-01-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* parse.y (patch_switch_statement): Fix format specifier.

2002-01-16  Tom Tromey  <tromey@redhat.com>

	More for PR java/5365:
	* gjavah.c (print_stub_or_jni): Cause exception to be thrown by
	default.
	(process_file): Generate include for
	java.lang.UnsupportedOperationExceptions.

2002-01-15  Andreas Jaeger  <aj@suse.de>

	* .cvsignore: Add man pages.

2002-01-15  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/5365:
	* gjavah.c (process_file): Turn class name into a file name.

2002-01-14  Matthias Klose  <doko@debian.org>

	* gcj.texi: Fix whitespace and formatting errors in the
	synopsis of the man pages. Update copyright.

2002-01-14  Tom Tromey  <tromey@redhat.com>

	For PR libgcj/5303:
	* Make-lang.in (java.install-man): Handle jv-convert man page.
	(java.generated-manpages): Added jv-convert.1.
	(java.uninstall): Remove jv-convert.1.
	(java.maintainer-clean): Likewise.
	($(srcdir)/java/jv-convert.1): New target.
	* gcj.texi (Top): Link to jv-convert node.
	(Individual utilities): Likewise.
	(Invoking jv-convert): New node.

2001-01-10  Jeff Sturm  <jsturm@one-point.com>
	    Martin Kahlert  <martin.kahlert@infineon.com>

	* jcf-parse.c (get_constant): Don't swap lo/hi for big
	endian targets when HOST_BITS_PER_WIDE_INT >= 64.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* class.c (compile_resource_file): Update copyright date.
	Constify filename parameter.
	(java-tree.h): Update copyright date.
	(compile_resource_file): Constify filename parameter.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* gcc/jcf-parse.c: Update copyright date.
	(yyparse): Constify resource_filename.

2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* parse.y (src_parse_roots): Don't needlessly zero init.

2001-12-31  Tom Tromey  <tromey@redhat.com>

	* parse.y (dump_java_tree): New function.
	(source_end_java_method): Call it.
	(end_class_declaration): Likewise.
	* lang.c (java_decode_option): Call dump_switch_p.

2001-12-28  Tom Tromey  <tromey@redhat.com>

	* gen-table.pl: Don't process characters after \uffff.  Added
	comment pointing to input file.

2001-12-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gen-table.pl: Const-ify output.  Document the location of a
	suitable unicode input file.

	* chartables.h: Regenerate.

2001-12-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* chartables.h: Const-ify.
	* gjavah.c (options): Likewise.
	* jcf-dump.c (options): Likewise.
	* jv-scan.c (options): Likewise.
	* lex.c (java_start_char_p, java_part_char_p): Likewise.
	* parse.y (binop_lookup): Likewise.

2001-12-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (keyword.h): Pass -C to gperf to const-ify
	the static arrays that are output.
	* jvspec.c (jvgenmain_spec): Make static.
	* keyword.gperf (struct java_keyword, java_keyword): Const-ify.
	* keyword.h: Regenerate.
	* lang.c (string_option, process_option_with_no, lang_f_options,
	lang_W_options): Const-ify.
	* lex.c (java_lex): Likewise.

2001-12-21  Richard Henderson  <rth@redhat.com>

	* boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Merge into ..
	(get_boehm_type_descriptor): ... here.  Arrange for the
	TREE_TYPE to get set properly.

2001-12-21  Richard Henderson  <rth@redhat.com>

	* class.c (compile_resource_file): Set TREE_PUBLIC on the constructor
	only if the target requires collect2.

	* class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.

2001-12-20  Tom Tromey  <tromey@redhat.com>

	For PR java/4509:
	* parse.y (java_complete_lhs) [COMPOUND_EXPR]: Correctly compute
	CAN_COMPLETE_NORMALLY for the node.
	* jcf-write.c (generate_bytecode_insns) [COMPOUND_EXPR]: Don't
	generate code for second branch if first branch can't complete
	normally.
	(generate_bytecode_insns) [LOOP_EXPR]: Don't generate `goto' to
	the loop head if the loop body can't complete normally.

2001-12-20  Tom Tromey  <tromey@redhat.com>

	For PR java/4766:
	* jcf-write.c (generate_bytecode_insns) [TRY_FINALLY_EXPR]: Handle
	case where `finally' clause can't complete normally.

2001-12-20  Tom Tromey  <tromey@redhat.com>

	Fixes PR java/5057:
	* parse.y (analyze_clinit_body): Added this_class parameter.
	Check for more cases where we must keep <clinit>.
	(maybe_yank_clinit): Cleaned up flow control.

2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* decl.c (java_init_decl_processing): Don't initialize
	finit_leg_identifier_node.
	* java-tree.h (java_tree_index): Remove JTI_FINIT_LEG_IDENTIFIER_NODE.
	(finit_leg_identifier_node): Remove.
	(ID_FINIT_P): Don't check for JTI_FINIT_LEG_IDENTIFIER_NODE.

2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* mangle.c (mangle_member_name): Don't special-case for
	NO_DOLLAR_IN_LABEL.
	* mangle_name.c (unicode_mangling_length): Likewise.
	(append_unicode_mangled_name): Likewise.
	* parse.y (make_nested_class_name): Remove dead NO_DOLLAR_IN_LABEL
	code.

2001-12-20  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* expr.c (build_java_array_length_access): Don't force null pointer
	check unless flag_check_references is set.

2001-12-20  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/3417:
	* parse.y (patch_assignment): Added special processing for
	`return'.
	(patch_return): Don't convert booleans to integers, and don't
	special-case `null'.

2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config-lang.in (diff_excludes): Remove.

2001-12-17  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcj.texi: Update link to GCC manual.

2001-12-17  Tom Tromey  <tromey@redhat.com>

	* parse.y (link_nested_class_to_enclosing): Removed useless
	statement.

2001-12-16  Tom Tromey  <tromey@redhat.com>

	* mangle.c (mangle_method_decl): Never emit `C2' constructor.
	Fixes PR java/5088.

2001-12-16  Joseph S. Myers  <jsm28@cam.ac.uk>

	* ChangeLog, Make-lang.in, class.c, expr.c, gcj.texi, java-tree.h,
	jcf-parse.c, jcf-write.c, lex.c, parse.h, parse.y, verify.c: Fix
	spelling errors.

2001-12-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lex.c (java_read_unicode, java_lex): Use hex_p/hex_value.

2001-12-16  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* decl.c (java_init_decl_processing): Build otable_type correctly.
	otable_decl is an otable_type.

2001-12-15  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* java-tree.h (otable_methods, otable_decl, otable_syms_decl,
	otable_type, otable_ptr_type, method_symbol_type,
	method_symbols_array_type, method_symbols_array_ptr_type): New
	field/global tree definitions.
	(flag_indirect_dispatch): New flag.
	* decl.c (java_init_decl_processing): Initialize new otable and
	otable_syms type nodes and decls. Add new field "index" to
	method_type_node.
	* class.c (build_method_symbols_entry): New function.
	(make_method_value): Set "index" to to method's vtable index for
	virtual methods when indirect-dispatch is not used.
	(make_class_data): For indirect-dispatch, don't emit the dtable_decl,
	and set vtable_method_count to -1. Set otable and otable_syms field
	if indirect-dispatch is used and there was something to put in them.
	(build_method_symbols_entry): New function.
	(emit_offset_symbol_table): New function.
	* expr.c (get_offset_table_index): New function.
	(build_invokevirtual): Build array reference to otable at the index
	returned by get_offset_table_index, and use the result as the vtable
	offset.
	(build_invokeinterface): Similar.
	* jcf-parse.c (yyparse): If indirect-dispatch, call
	emit_offset_symbol_table at the end of compilation, after all classes
	have been generated.
	* jvspec.c: Don't pass findirect-dispatch to jvgenmain.
	* lang.c (flag_indirect_dispatch): Define.
	(lang_f_options): Add indirect-dispatch flag.

2001-12-14  Matthias Klose  <doko@debian.org>

	* gcj.texi: Markup for man page generation. Document missing
	options printed by <tool> --help.
	Terminate description of gij's -ms option with a dot.
	* Make-lang.in ($(srcdir)/java/*.1): New targets.
	(java.generated-manpages java.install-man, java.uninstall,
	java-maintainer-clean) Updated.

2001-12-14  Hans Boehm  <Hans_Boehm@hp.com>

	* class.c (get_dispatch_table): Fix java vtable layout
	for TARGET_VTABLE_USES_DESCRIPTORS.
	* decl.c (java_init_decl_processing): Initialize
	alloc_no_finalizer_node, finalize_identifier_node.
	* expr.c (class_has_finalize_method): New function.
	(expand_java_NEW): Generate calls for finalizer-free allocation.
	(build_invokevirtual): Fix java vtable layout for
	TARGET_VTABLE_USES_DESCRIPTORS.
	* java-tree.h (enum java_tree_index): New entries:
	JTI_ALLOC_NO_FINALIZER_NODE, JTI_FINALIZE_IDENTIFIER_NODE.
	(alloc_no_finalizer_node, finalize_deintifier_node): New macros.
	(class_has_finalize_method): declare.
	(HAS_FINALIZER_P): New macro.
	* parse.y (patch_invoke): Generate calls for finalizer-free
	allocation.

2001-12-12  Matthias Klose  <doko@debian.org>

	* Make-lang.in: JAVA_INSTALL_NAME, JAVA_CROSS_NAME: Remove
	whitespace at end of line.

2001-12-11  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_init_lex): Define wfl_to_string as
	gnu.gcj.runtime.StringBuffer unless generating bytecode.

2001-12-11  Jeff Sturm  <jsturm@one-point.com>

	* class.c (make_method_value): Use null_pointer_node to
	represent empty exception table.

2001-12-10  Tom Tromey  <tromey@redhat.com>

	* check-init.c (check_init) [SWITCH_EXPR]: Use SWITCH_HAS_DEFAULT.

2001-12-10  Douglas B. Rupp  <rupp@gnat.com>

	* Make-lang.in (jvspec.o): Add $(OUTPUT_OPTION).

2001-12-09  Per Bothner  <per@bothner.com>

	* check-init.c (current_switch_has_default):  New static field.
	(check_init):  Case DEFAULT_EXPR: Set current_switch_has_default.
	Case SWITCH_EXPR:  Save/restore current_switch_has_default.  If no
	DEFAULT_EXPR seen, simulate a default alternative that copies state.

2001-12-09  Tom Tromey  <tromey@redhat.com>

	* check-init.c (check_init): Don't allow pre- or post- increment
	or decrement of final variable.
	(final_assign_error): Minor error message rewording.

2001-12-08  Tom Tromey  <tromey@redhat.com>

	* java-tree.h: Fixed typo.

	* gjavah.c (decompile_method): Don't decompile to `return this'
	for static methods.

	* gjavah.c (cxx_keywords): Re-sorted.
	* lex.c (cxx_keywords): Re-sorted.

	* gjavah.c (HANDLE_METHOD): Set `decompiled' before doing anything
	else.

	* gjavah.c (print_namelet): Clear subnamelets.
	(HANDLE_METHOD): Set `method_printed' earlier.

2001-12-07  Tom Tromey  <tromey@redhat.com>

	* lang.c (lang_f_options): Added
	optimize-static-class-initialization.
	(java_decode_option): Removed special case.

2001-12-07  Per Bothner  <per@bothner.com>

	* check-init.c (check_init):  Fix typo freeing memory twice.

2001-12-05  Per Bothner  <per@bothner.com>

	Restore support for static class initialization optimization.
	* java-tree.h (STATIC_CLASS_INIT_OPT_P): Re-enable.
	* check-init.c (check_int):  At end of BLOCK handle initialization
	blocks, which used to be done in java_complete_expand_method but did
	not handle the case where check_for_initialization might allocate
	more than a word of bits.
	* decl.c (lang_make_tree):  The smic field is now a tree.
	* expr.c (build_class_init):  Set DECL_FUNCTION_INIT_TEST_CLASS field.
	* java-tree.h (DECL_FUNCTION_INIT_TEST_TABLE):  New macro.

	* parse.y (emit_test_initialization):  Combine hash_lookup calls.

	* java-tree.h (DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND):
	Change from a hash table to a list.
	(struct_lang_decl):  Change field 'smic' to match.
	* class.c (add_method_1):  Initialize
	DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND to null list.
	* parse.y (adjust_init_test_initialization):  Removed - inlined into -
	(java_expand_method_bodies): -here, since 'smic' is now a list.
	(patch_invoke):  Add to 'smic' list, instead of hash_lookup.

	* check-init.c (WORD_SIZE):  Use BITS_PER_UNIT.

	* class.c (java_hash_compare_tree_node):  Fix casts.

2001-12-04  Per Bothner  <per@bothner.com>

	* check-init.c:   Handle definite unassignment to finals in addition
	to definite assignment.
	(loop_current_locals):  New field.
	(num_current_locals, int start_current_locals, num_current_words):
	Make static.
	(SET_P, CLEAR_P, SET_BIT):  Add needed but missing parentheses.
	(ASSIGNED_P, UNASSIGNED_P, SET_ASSIGNED, SET_UNASSIGNED,
	CLEAR_ASSIGNED, CLEAR_UNASSIGNED):  New macros.
	(get_variable_decl, check_final_reassigned):  New functions.
	(check_init, check_bool_init):  Modify as needed for checking finals.
	(check_for_initialization):  Take extra parameter and return void.
	Do extra start-up logic to check final fields for assignment.
	* parse.y (check_static_final_variable_assignment_flag,
	reset_static_final_variable_assignment_flag, check_final_assignment,
	check_final_variable_local_assignment_flag,
	reset_final_variable_indirect_assignment_flag,
	reset_final_variable_global_assignment_flag):  Remove functions.
	(java_complete_expand_methods, outer_field_access_fix,
	patch_assignment): Remove no-longer used logic.
	* java-tree.h (DECL_FIELD_FINAL_IUD):  Change usage and comments.
	* parse.y (register_fields, java_complete_tree):  Update accordingly.

	* check-init.c (ALLOC_WORDS/FREE_WORDS):  Use xmalloc/free, not alloca.
	(DECLARE_BUFFERS, RELEASE_BUFFERS, ALLOC_BUFFER, FREE_BUFFER):  New.
	(check_cond_init, check_bool2_init):  Use DECLARE_BUFFERS.

	* java-tree.h (STATIC_CLASS_INIT_OPT_P):  Temporarily turn off.

	* java-tree.h (DECL FINAL):  New bit-field.
	(METHOD_FINAL, FIELD_FINAL, CLASS_FINAL):  Define as DECL_FINAL.
	(LOCAL_FINAL_P):  Use DECL_FINAL rather than old LOCAL_FINAL.
	(DECL_INIT_CALLS_THIS):  New macro.
	(struct lang_decl):  New bit-field init_calls_this.
	(DECL_FUNCTION_ALL_FINAL_INITIALIZED, DECL_FIELD_FINAL_LIIC,
	DECL_FIELD_FINAL_IERR, LOCAL_FINAL, TYPE_HAS_FINAL_VARIABLE
	(DECL_BIT_INDEX):  Change to use pointer_alias_set since we now
	use it for both local variables and final fields.
	(struct lang_decl_var):  Remove bit-fields final_liic, final_ierr,
	and local_final.
	(struct lang_type):  Remove hfv bit-field.
	(check_for_initialization):  Change to return void.

	* java-tree.h (IS_ARRAY_LENGTH_ACCESS):  New macros.
	* expr.c (build_java_array_length_access):  Set IS_ARRAY_LENGTH_ACCESS.
	* check-init.c (final_assign_error):  New helper function.
	(check_final_reassigned, check_init):  Use it.
	(check_init):  Also check IS_ARRAY_LENGTH_ACCESS for ARRAY.length.

	* java-tree.h (struct lang_decl, struct lang_decl_var):  Change all
	bit-fields to unsigned.

2001-12-03  Per Bothner  <per@bothner.com>

	* parse.y (patch_binop):  Minor constant folding.

	* parse.y (build_current_thisn):  Shorter 'buffer'.

2001-12-03  Per Bothner  <per@bothner.com>

	* decl.c (complete_start_java_method):  Now generate TRY_FINALLY_EXPR
	instead of CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR.
	* jcf-write.c (generate_bytecode_insns):  Remove support for
	CLEANUP_POINT_EXPR and WITH_CLEANUP_EXPR as they are no longer used.
	* check-init.c (check_init):  Likewise.

2001-12-03  Per Bothner  <per@bothner.com>

	* verify.c (subroutine_nesting):  New function.
	(verify_jvm_instructions):  Use it to fix logic for checking that
	we're done with the current subroutine.

	* verify.c (verify_jvm_instruction): For OPCODE_checkcast and
	OPCODE_instanceof use POP_TYPE macro for better diagnostics.

2001-12-03  Per Bothner  <per@bothner.com>

	* jcf.h:  Fix obvious typo in comment.
	* typeck.c (build_null_signature):  Add comment.

2001-12-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* expr.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* jcf-io.c: Similarly.
	* jcf-parse.c: Similarly.
	* jv-scan.c: Similarly.
	* jvspec.c: Similarly.
	* mangle.c: Similarly.

2001-12-02  Tang Ching-Hui  <nicholas@cs.nthu.edu.tw>
	    Alexandre Petit-Bianco  <apbianco@redhat.com>

	* expr.c (build_java_arrayaccess): Call save_expr on array for
	correct evaluation order, modified comment, fixed indentation.
	* parse.y: (patch_assignment): Correctly extract the array base
	from the tree generate by build_java_arrayaccess, added comments.
	(patch_array_ref): Remove SAVE_EXPR on ARRAY_REF.
	Fixes PR java/3096, PR java/3803, PR java/3965.

2001-12-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* expr.c (expand_byte_code): Remove trailing periods from messages.
	* jcf-parse.c (load_class, jcf_parse): Similarly.
	* jcf-write.c (generate_classfile): Similarly.
	* lex.c (java_lex): Similarly.

2001-11-30  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* class.c (add_interface_do): Set BINFO_VPTR_FIELD.

2001-11-29  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Make-lang.in (java.generated-manpages): New dummy target.

2001-11-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
	ASM_FINAL_SPEC.
	(lang_specific_pre_link): Use set_input to set input_filename.
	Append `main' here.
	* jvgenmain.c (usage): Append literal `main' to CLASSNAME.
	(main): Fix definition.
	Strip `main' from classname.
	Fixes PR java/227.

2001-11-18  Roger Sayle <roger@eyesopen.com>

	* parse.h (java_expand_switch): Remove old prototype.

2001-11-18  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/1401:
	* jcf-write.c (generate_bytecode_insns) [binop]: Handle case where
	arg0 is null.
	(generate_bytecode_insns) [MODIFY_EXPR]: Handle `OP=' case
	correctly.

2001-11-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* lang.c (finish_parse): Rename to java_finish.
	(LANG_HOOKS_FINISH, java_finish): New.

2001-11-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* decl.c (init_decl_processing): Rename java_init_decl_processing.
	* java-tree.h: New prototype.
	* lang.c (java_init): Update prototype.  Combine with old init_parse.

2001-11-13  Tom Tromey  <tromey@redhat.com>

	* gjavah.c (method_signature): New global.
	(HANDLE_METHOD): Set it.
	(decompile_return_statement): New function.
	(decompile_method): Use it.
	(print_method_info): Removed `synth' argument.

2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* java-tree.h (java_set_yydebug): New.
	* jcf-parse.c (set_yydebug): Rename java_set_yydebug.
	* lang.c (LANG_HOOKS_SET_YYDEBUG): Override.
	(print_lang_decl, print_lang_type, print_lang_identifier,
	print_lang_statistics, lang_print_xnode): Remove.

2001-11-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* jcf-parse.c (init_lex): Remove.
	* lang.c (language_string, lang_identify): Remove.
	(struct lang_hooks): Constify.
	(LANG_HOOKS_NAME): Override.
	(init_parse): Update.

2001-11-08  Andreas Franck  <afranck@gmx.de>

	* Make-lang.in (JAVA_INSTALL_NAME, JAVA_CROSS_NAME): Handle
	program_transform_name the way suggested by autoconf.
	(java.install-common): Also transform auxiliary program names with
	program_transform_name.

2001-11-08  Tom Tromey  <tromey@cygnus.com>

	* parse.y (trap_overflow_corner_case): New rule.
	(unary_expression): Use it.
	* lex.c (java_init_lex): Don't set minus_seen.
	(yylex): Don't use minus_seen.  Communicate overflow to parser for
	it to handle.
	(error_if_numeric_overflow): New function.
	* parse.h (minus_seen): Removed field.
	(JAVA_RADIX10_FLAG): New define.

2001-11-07  Tom Tromey  <tromey@redhat.com>

	Patch for PR java/1414:
	* parse.y (case_label_list): New global.
	(goal): Register case_label_list with GC.
	(java_complete_lhs): Save new case on case_label_list.
	(patch_switch_statement): Check for duplicate case labels.

2001-11-07  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_assignment): Removed unused third argument.
	(java_complete_lhs): Removed unused third argument to patch_assignment.

2001-11-06  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* lang.c: Include langhooks-def.h.
	* Make-lang.in: Update.

2001-10-31  Zack Weinberg  <zack@codesourcery.com>

	* Make-lang.in: Replace $(INTL_TARGETS) with po-generated.

2001-10-29  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* mangle.c (find_compression_record_match): Don't match compression
	records for package name elements unless they occur at the start of
	the name. Fix for PR java/4717.

2001-10-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* expr.c (expand_java_field_op): Don't special-case references to
	java.lang.PRIMTYPE.TYPE.
	(build_primtype_type_ref): Removed.
	* java-tree.h (build_primtype_type_ref): Remove prototype.
	* parse.y (maybe_build_primttype_type_ref): Removed.
	(complete_function_arguments): Don't special-case references to
	java.lang.PRIMTYPE.TYPE.
	(patch_assignment): Likewise.
	(array_constructor_check_entry): Likewise.

2001-10-24  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* mangle.c (static tree compression_table): Fixed leading comment.
	* parse.h (struct parser_ctxt): Fixed field comment.
	* parse.y (check_pkg_class_access): New prototype, fixed leading
	comment, new parameter used to emit error only if passed as true.
	(parse_check_super): Pass extra argument to check_pkg_class_access.
	(do_resolve_class): Likewise.
	(process_imports): Likewise.
	(read_import_dir): Fixed indentation.
	(find_in_imports_on_demand): New local class_type_name. Local
	node_to_use deleted. while loop changed into for loop. Report
	multiple definition only for accessible classes. Improved error
	message.
	(start_complete_expand_method): Local `ptr' removed. DECL_ARGUMENTS
	assigned to parameter list, fixed indentation. while loop changed
	into for loop, restore TREE_CHAIN on local `tem' before the next
	iteration.

2001-10-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* lang.c (lang_get_alias_set): Deleted.

2001-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (jni_print_char): Fix thinko in last change.

	* gjavah.c (jni_print_char, decode_signature_piece): Use
	safe-ctype macros and/or fold extra calls into fewer ones.
	* lex.c (java_read_unicode, java_lex): Likewise.
	* lex.h (JAVA_START_CHAR_P, JAVA_PART_CHAR_P, JAVA_ASCII_DIGIT,
	JAVA_ASCII_HEXDIGIT, JAVA_ASCII_LETTER): Likewise.
	* mangle_name.c (append_unicode_mangled_name,
	unicode_mangling_length): Likewise.

2001-10-17  Richard Henderson  <rth@redhat.com>

	* Make-lang.in (java/lang.o): Depend on langhooks.h.

2001-10-15  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* lang.c (langhooks.h): Included.
	(LANG_HOOKS_INIT): Redefined.
	(LANG_HOOKS_INIT_OPTIONS): Likewise.
	(LANG_HOOKS_DECODE_OPTION): Likewise.
	(struct lang_hooks lang_hooks): New initialization.

2001-10-11  Per Bothner  <per@bothner.com>

	* parse.y (patch_synchronized_statement):  Use a TRY_FINALLY_EXPR
	rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
	The former is simpler, and jcf-write.c handles it better.
	(java_complete_lhs):  No longer need to handle CLEANUP_POINT_EXPR
	or WITH_CLEANUP_EXPR.
	* jcf-write.c:  Revert Alex's change from 2000-10-18.  It is no
	longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine.

	* parse.y (patch_if_else_statement):  If the condition is constant,
	optimize away the test.

2001-10-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_cast): Call patch_string on the first operand of
	the incoming node, update it if necessary. Fixes PR java/4510.

2001-10-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (find_as_inner_class): Don't disregard the enclosing scope
	when name qualifier matches a package name.

2001-10-08  Tom Tromey  <tromey@redhat.com>

	Fix for PR java/4489:
	* jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Always
	force a new label when computing `body_block'.

2001-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-io.c (format_uint): Const-ify.
	* lang.c (java_tree_code_type, java_tree_code_length): Likewise.
	* lex.c (java_get_line_col): Likewise.
	* parse.y (build_incdec): Likewise.

2001-10-05  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (register_incomplete_type): Set JDEP_SUPER to be given
	a NULL enclosing context if appropriate. Fixes PR java/4466.

2001-10-03  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_assignment): Use lvalue's original TYPE when
	building the final COMPOUND_EXPR.
	(try_reference_assignconv): Fixed leading comment.

2001-09-26  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (check_final_variable_indirect_assignment): For
	COMPOUND_EXPR, return only if finals were found initialized
	properly, if not, keep on checking.
	(check_final_variable_global_assignment_flag): New local
	error_found, set when appropriate and used to decide whether to
	report uninitialized finals. Fixed typo in comment.

2001-09-22  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* decl.c (init_decl_processing): Fixed typo in predef_filenames
	last three initializations. Fixes PR java/4360.

2001-09-21  Richard Henderson  <rth@redhat.com>

	* class.c (get_dispatch_table): Handle function descriptors.
	(build_dtable_decl): Likewise.
	* expr.c (build_invokevirtual): Likewise.

2001-09-20  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_method_invocation): Build class initialization
	when static finals are used to qualify method invocation.
	Fixes PR java/4366.

2001-09-19  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.h: (WFL_STRIP_BRACKET): Re-written using
	build_type_name_from_array_name.
	(STRING_STRIP_BRACKETS): New macro.
	* parse.y (build_type_name_from_array_name): New function.
	(array_creation_expression:): Accumulate []s instead of [s.
	(cast_expression:): Accumulate []s instead of [s after cast type
	name.
	(build_array_from_name): Local string deleted, use
	build_type_name_from_array_name.
	(build_unresolved_array_type): Accumulate []s instead of [s after
	type name.
	(register_fields): Fixed comment.
	(resolve_class): Local name, base deleted, new locals tname and
	array_dims. Use build_type_name_from_array_name. Use array_dims to
	build array type.
	(purify_type_name): Use STRING_STRIP_BRACKETS.

2001-09-18  Andreas Jaeger  <aj@suse.de>

	* parse.y: Use VA_OPEN/VA_CLOSE/VA_FIXEDARG throughout.
	* jv-scan.c: Likewise.

2001-09-17  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_method_invocation): Inner class creation context
	check not enforced within constructors. Fixes PR java/1873.

2001-09-16  Tom Tromey  <tromey@redhat.com>

	* jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Call
	NOTE_PUSH for single-case push.  Fixes PR java/4189.

2001-09-13  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* java-tree.h (TYPE_IMPORT_LIST): New macro.
	(TYPE_IMPORT_DEMAND_LIST): Likewise.
	(struct lang_type): New fields import_list and import_demand_list.
	* parse.y (java_complete_class): Initialize TYPE_IMPORT_LIST and
	TYPE_IMPORT_DEMAND_LIST with ctxp counterparts.
	(do_resolve_class): New local saved_enclosing_type, initialized,
	passed as parameter to find_in_imports and find_in_imports_on_demand.
	(find_in_imports): Added paramater enclosing_type, use its
	TYPE_IMPORT_LIST when applicable.
	(find_in_imports_on_demand): Added parameter enclosing_type, use
	its TYPE_IMPORT_DEMAND_LIST when applicable. Reorganized locals
	declaration and initialization.
	(fold_constant_for_init): Switch/restore current_class to the
	appropriate context.

2001-09-13  Mark Mitchell  <mark@codesourcery.com>

	* verify.c (verify_jvm_instructions): Fix typo.

2001-09-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* expr.c (expand_invoke): Const-ification.
	* parse.y (patch_method_invocation): Likewise.

2001-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (cxx_keywords): Const-ification.
	* keyword.gperf (java_keyword): Likewise.
	* lang.c (java_tree_code_name): Likewise.
	* lex.c (cxx_keywords): Likewise.
	* parse.y (java_parser_context_suspend, merge_string_cste): Likewise.

2001-09-11  Richard Henderson  <rth@redhat.com>

	* parse.h (ctxp_for_generation): Mark extern.

2001-09-10  Richard Henderson  <rth@redhat.com>

	* class.c (build_class_ref): Set DECL_EXTERNAL before make_decl_rtl.

2001-09-07  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* typeck.c (java_array_type_length, build_prim_array_type):
	Represent empty arrays by NULL index.

2001-09-06  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* java-tree.h (compile_resource_file): Grouped with other prototypes.
	* jvspec.c (lang_specific_driver): Removed unused local `ptr.'

2001-09-06  Anthony Green  <green@redhat.com>

	* class.c (O_BINARY): Define if necessary.
	(registerResource_libfunc): Declare.
	(init_class_processing): Initilize registerResource_libfunc.
	(compile_resource_file): New function.
	* java-tree.h (resource_name): Declare.
	(compile_resource_file): Declare.
	* jcf-parse.c (yyparse): Handle compiling java resource files.
	* lang.c (java_decode_option): Handle -fcompile-resource option.
	* jvspec.c (lang_specific_driver): Handle -R flag for compiling
	resource files.
	* gcj.texi (Code Generation): Add documentation for -R flag.

2001-09-05 Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-write.c (generate_classfile): Issue an error in case of
	field/initial value mismatch.
	* parse.y (analyze_clinit_body): Keep <clinit> if an array is
	being initialized and we're generating bytecode.
	(java_complete_lhs): In MODIFY_EXPR section: added comments,
	set DECL_INITIAL properly when appropriate.
	Fixes PR java/4230
	Fixes PR java/4204

2001-09-01  Per Bothner  <per@bothner.com>

	* parse.y (maybe_yank_clinit):  A field without an initializer is not
	relevant.  All initializers except static final and constant require
	<clinit>, regardless of flag_emit_class_files.

2001-08-31  Per Bothner  <per@bothner.com>

	* class.c (set_constant_value):  When not emitting class files, then a
	String ConstantValue is a utf8const_ptr_type.

2001-08-30  Per Bothner  <per@bothner.com>

	* jcf-write.c (generate_classfile):  Check that field is primitive
	or string before emitting ConstantValue attribute.

2001-08-30  Per Bothner  <per@bothner.com>

	* parse.y (resolve_qualified_expression_name):  If creating a
	COMPOUND_EXPR, set it's type correctly.

2001-08-30  Per Bothner  <per@bothner.com>

	* jcf-io.c (open_class):  Set filename field.

	* jcf-parse,c (parse_class_file):  Set current_function_decl
	for better error message when Code attribute is missing.

	* lang.c (put_decl_node, lang_print_error):  Re-arrange for
	better diagnostics, especially for constructors.

2001-08-30  Per Bothner  <per@bothner.com>

	* jcf-write.c (generate_classfile):  Don't write ConstantValue
	attribute if field is not final, for compatibility with jdk.

	* jcf-write.c (generate_classfile):  Convert ConstantValue values
	to correct type.  Work-around for front-end bug.
	* class.c (set_constant_value):  Error if constant has wrong type.

2001-08-30  Per Bothner  <per@bothner.com>

	* jcf-dump.c (print_constant):  Fix fencepost error so "Float" and
	"Double" are printed at verbosity 1.

	* jcf-dump.c (main):  Disable flag_print_attributes if --javap.

	* jcf-dump.c (SPECIAL_IINC):  Remove unneeded casts to long.

2001-08-30  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_assignment): Don't verify final re-assignment here.
	(java_complete_lhs): Verify assignments to finals calling
	patch_assignment. Verify re-assignments to finals before calling
	patch_assignment.

2001-08-29  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (java_complete_lhs): Allow final locals in CASE_EXPRs.
	Fixes PR java/1413

2001-08-28  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* lex.c (java_lex): new local found_hex_digits. Set and then used
	in test to reject invalid hexadecimal numbers.
	* parse.y (java_complete_tree): Prevent unwanted cast with
	initialized floating point finals.
	(patch_binop): Emit a warning when detecting a division by zero,
	mark result not constant, don't simplify non integer division.

2001-08-28  Per Bothner  <per@bothner.com>

	* jcf-write.c  (generate_bytecode_insns):  For increments and
	decrements just recurse to push constant.  Improvement on Mark's patch.

2001-08-28  Mark Mitchell  <mark@codesourcery.com>

	* jcf-write.c (generate_bytecode_insns): Generate an integer to
	real conversion for increments and decrements of reals.

2001-08-27  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_qualified_expression_name): Handle unresolved
	qualified expressions, prevent numerical qualifiers, fixed typo.
	Fixes PR java/4141

2001-08-24  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (check_deprecation): Handle TYPE_DECL in a special case,
	don't report anything but deprecated class when marked so. Handle
	VAR_DECL.
	(patch_method_invocation): Check deprecation on methods and types.
	(patch_binop): code becomes an enum tree_code, added default: to
	switch to handle that. Detect division by zero, try to fold and
	return before using a subroutine.

2001-08-23  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-parse.c (yyparse): Set magic to 0, don't issue error for a
	file smaller than 4 bytes.
	* parse.y (check_inner_circular_reference): New function.
	(check_circular_reference): Likewise.
	(array_initializer:): Accept {,}.
	(java_check_circular_reference): Rewritten using
	check_circular_reference and check_inner_circular_reference.
	(java_complete_expand_method): Unconditionally save and restore
	the unpurged exception list.
	(build_dot_class_method_invocation): Unmangle signature parameter.

2001-08-21  Tom Tromey  <tromey@redhat.com>

	* decl.c (init_decl_processing): Add `throws' field to method
	descriptor.
	* class.c (make_method_value): Compute `throws' field for method.

2001-08-22  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_inner_class): Keep local_enclosing to NULL if
	circularity is detected.
	(ctors_unchecked_throws_clause_p): Fixed leading comment.

2001-08-17  Richard Henderson  <rth@redhat.com>

	* class.c (emit_register_classes): Add align parameter to
	call to assemble_integer.

2001-08-16  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-parse.c (load_class): New locals saved and class_loaded. If
	loading a class_or_name fails, try considering an innerclass name
	and load the enclosing context.
	* parse.y (resolve_inner_class): New function.
	(find_as_inner_class): Added leading comment.
	(register_incomplete_type): Keep the current context as enclosing
	context for JDEP_FIELD dependencies.
	(do_resolve_class): Locals new_class_decl and super initialized to
	NULL. Call resolve_inner_class, explore the enclosing context
	superclass if necessary.
	Fixes PR java/4007

2001-08-16  Tom Tromey  <tromey@redhat.com>

	* jcf-dump.c (main): Updated for change to jcf_path_seal.
	* gjavah.c (main): Updated for change to jcf_path_seal.
	* lang.c (version_flag): New global.
	(java_decode_option): Recognize `-version'.
	(java_init): Update for change to jcf_path_seal.
	* jcf.h (jcf_path_seal): Added `print' argument.
	* jcf-path.c (jcf_path_seal): Added `print' argument.

2001-08-13  Zack Weinberg  <zackw@panix.com>

	* Make-lang.in (java/decl.o): Update dependencies.
	* decl.c: Include libfuncs.h, don't include toplev.h.

2001-08-12  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* decl.c (init_decl_processing): exception_type_node,
	class_not_found_type_node, and no_class_def_found_type_node
	initialized. predef_filenames augmented accordingly.
	instinit_identifier_node initialized.
	* java-tree.def (INSTANCE_INITIALIZERS_EXPR): Entry removed.
	* java-tree.h (enum java_tree_index): New entries
	JTI_EXCEPTION_TYPE_NODE, JTI_CLASS_NOT_FOUND_TYPE_NODE,
	JTI_NO_CLASS_DEF_FOUND_TYPE_NODE, JTI_INSTINIT_IDENTIFIER_NODE.
	(exception_type_node): New macro.
	(class_not_found_type_node): Likewise.
	(no_class_def_found_type_node): Likewise.
	(instinit_identifier_node): Likewise.
	(PREDEF_FILENAMES_SIZE): Adjusted.
	(TYPE_HAS_FINAL_VARIABLE): Fixed typo.
	(struct lang_type): Fixed typo in bitfield name.
	(DECL_INSTINIT_P): New macro.
	(ID_INSTINIT_P): Likewise.
	* jcf-write.c (generate_classfile): instinit$ bears the Synthetic
	attribute.
	* parse.y (encapsulate_with_try_catch): New function.
	(generate_instinit): Likewise.
	(build_instinit_invocation): Likewise.
	(ctors_unchecked_throws_clause_p): Likewise.
	(add_instance_initializer): Deleted.
	(build_instance_initializer): Likewise.
	(in_instance_initializer): Likewise.
	(check_method_redefinition): instinit$ not to be verified.
	(java_complete_expand_methods): Generate instinit$, simplified code.
	(build_dot_class_method): Eliminated unnecessary locals. Use
	encapsulate_with_try_catch, removed unnecessary code.
	(fix_constructors): New local iii. Use build_instinit_invocation.
	(patch_method_invocation): Added comment.
	(maybe_use_access_method): Don't consider instinit$.
	(find_applicable_accessible_methods_list): Shorten the search for
	instinit$ too.
	(java_complete_lhs): case INSTANCE_INITIALIZERS_EXPR removed.
	(patch_return): Use DECL_INSTINIT_P instead of in_instance_initializer.
	(patch_throw_statement): Likewise. Fixed typo.

2001-08-12  David Edelsohn  <edelsohn@gnu.org>

	Revert:
	2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
	* jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
	ASM_FINAL_SPEC.
	(lang_specific_pre_link): Use set_input to set input_filename.
	Append `main' here.
	* jvgenmain.c (usage): Append literal `main' to CLASSNAME.
	(main): Fix definition.
	Strip `main' from classname.
	Fixes PR java/227.

2001-08-11  Zack Weinberg  <zackw@panix.com>

	* lex.h: Don't include setjmp.h.  Don't define
	SET_FLOAT_HANDLER or prototype set_float_handler.

2001-08-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* expr.c (java_lang_expand_expr): Call `expand_end_bindings' and
	`poplevel' in the right order.

2001-08-09  Richard Henderson  <rth@redhat.com>

	* Make-lang.in (class.o): Depend on TARGET_H.
	* class.c (emit_register_classes): Use target hooks instead of
	assemble_constructor and assemble_destructor.

2001-08-08  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* check-init.c (flags.h): Include
	(check_init): Don't report uninitialized static class
	initialization flags, don't free bit index when doing static class
	initialization optimization.
	(check_for_initialization): Return type changed to `unsigned int.'
	(attach_initialized_static_class): New function.
	* class.c (add_method_1): Create the initialized static class
	table if necessary.
	(finish_class): Always emit deferred inline methods.
	* decl.c (emit_init_test_initialization): Moved to expr.c
	(complete_start_java_method): Don't traverse
	DECL_FUNCTION_INIT_TEST_TABLE.
	(lang_mark_tree): Mark hash tables in function decls.
	* expr.c (emit_init_test_initialization): Moved from decl.c.
	(build_class_init): Create LAG_DECL_SPECIFIC for the static class
	initialization flag, set DECL_CONTEXT and
	LOCAL_CLASS_INITIALIZATION_FLAG.
	(java_lang_expand_expr): Emit initialization code for static class
	initialized flags when entering block, if necessary.
	* gcj.texi (-fno-optimize-static-class-initialization): Documented.
	* java-tree.h (flag_optimize_sci): New global variable declaration.
	(DECL_FUNCTION_INITIALIZED_CLASS_TABLE): New macro.
	(DECL_FUNCTION_STATIC_METHOD_INVOCATION_COMPOUND): Likewise.
	(LOCAL_FINAL_P): Fixed typo in comment.
	(FINAL_VARIABLE_P): Likewise.
	(LOCAL_CLASS_INITIALIZATIO_FLAG): New macro.
	(LOCAL_CLASS_INITIALIZATIO_FLAG_P): Likewise.
	(struct lang_decl): New fields `ict', `smic' and `cif.'
	(check_for_initialization): New returned value for global.
	(attach_initialized_static_class): New global function.
	(STATIC_CLASS_INIT_OPT_P): New macro.
	* lang-options.h (-fno-optimize-static-class-initialization): New flag.
	* lang.c (java_decode_option): Handle
	`-fno-optimize-static-class-initialization'
	* parse.y (start_complete_expand_method): New function.
	(java_expand_method_bodies): Likewise.
	(attach_init_test_initialization_flags): Likewise.
	(adjust_init_test_initialization): Likewise.
	(emit_test_initialization): Likewise.
	(java_complete_expand_methods): Nullify abstract and native method
	bodies.
	(java_complete_expand_method): New locals `fbody', `block_body'
	and `exception_copy.' Reorganized: directly return on empty method
	bodies, call `start_complete_expand_method', remember definitely
	initialized static class in function, don't expand method bodies.
	(java_expand_classes): Call `java_expand_method_bodies' before
	`finish_class' when compiling to native.
	(resolve_expression_name): Use `orig' after building outer class
	field access.
	(patch_invoke): Remember static method invocations.

2001-08-06  Richard Henderson  <rth@redhat.com>

	* class.c (emit_register_classes): Pass a symbol_ref and priority
	to assemble_constructor.

2001-08-02  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* java-tree.h (all_class_filename): New macro.
	(enum java_tree_index): New enum `JTI_ALL_CLASS_FILENAME.'
	(BUILD_FILENAME_IDENTIFIER_NODE): Fixed leading comment. Link
	newly created IDENTIFIER_NODE to `all_class_filename.'

2001-08-01  Jeff Sturm  <jsturm@one-point.com>

	* java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE):
	Use ggc_add_tree_root to register roots.

2001-07-31  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* check-init.c (check_init): WITH_CLEANUP_EXPR node to use its
	second operand calling check_init.
	* decl.c (complete_start_java_method): Swaped second and third
	arguments while creating WITH_CLEANUP_EXPR node.
	* jcf-write.c (generate_bytecode_insns): Use second operand
	instead of third when handling WITH_CLEANUP_EXPR.
	* parse.y (java_complete_lhs): Expand second operand of
	WITH_CLEANUP_EXPR nodes.
	(patch_synchronized_statement): Swaped second and third arguments
	while creating WITH_CLEANUP_EXPR node.

2001-07-18  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (create_interface): Avoid cyclic inheritance report when
	syntax error encountered during class definition.
	Fixes PR java/2956

2001-08-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* jvspec.c (jvgenmain_spec): Cannot use %umain, breaks
	ASM_FINAL_SPEC.
	(lang_specific_pre_link): Use set_input to set input_filename.
	Append `main' here.
	* jvgenmain.c (usage): Append literal `main' to CLASSNAME.
	(main): Fix definition.
	Strip `main' from classname.
	Fixes PR java/227.

2001-07-18  Tom Tromey  <tromey@redhat.com>

	For PR java/2812:
	* lex.h: Use HAVE_ICONV, not HAVE_ICONV_H.
	* lex.c (java_new_lexer): Use ICONV_CONST.
	(java_read_char): Likewise.
	* Make-lang.in (jc1$(exeext)): Link against LIBICONV.
	(jv-scan$(exeext)): Likewise.

2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.h (INTERFACE_INNER_MODIFIERS): Disallow `private.'
	* parse.y (check_class_interface_creation): Allow `private' if the
	enclosing is not an interface.
	(create_interface): Interface tagged public if the enclosing
	context	is an interface.
	(create_class): Class tagged public if the enclosing context
	is an interface.
	Fixes PR java/2959

2001-07-17  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* class.c (push_class): Set DECL_SIZE to `integer_zero_node.'
	Fixes PR java/2665

2001-07-14  Tim Josling  <tej@melbpc.org.au>

	* check-init.c (check_init): Remove references to EXPON_EXPR.

2001-07-13  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (java_complete_lsh): Set CAN_COMPLETE_NORMALLY and unset
	TREE_CONSTANT_OVERFLOW of CASE_EXPR value.
	Fixes PR java/3602

2001-07-13  Tom Tromey  <tromey@redhat.com>

	* jvspec.c (jvgenmain_spec): Remove -ffilelist-file from cc1
	invocation.

2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_method_invocation): Don't override primary if one
	is already provided, but let this$<n> be built. Fixed comment.

2001-07-12  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (empty_statement:): Report empty statement error only
	when found at class declaration level.
	Fixes PR java/3635

2001-07-12  Tom Tromey  <tromey@redhat.com>

	* expr.c (expand_load_internal): New function.
	(LOAD_INTERNAL): Use it.

2001-07-11  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (verify_constructor_super): Compare anonymous class ctor
	args with `valid_method_invocation_conversion_p.'
	Fixes PR java/3285

2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* lang-specs.h: Forbit the use if `-femit-class-file{s}' without
	`-fsyntax-only.' Fixes PR java/3248

2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-io.c (find_class): Clarified error message. Fixes PR java/2603

2001-07-10  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): No `this' is fine if the
	current function is static. Fixes PR java/1970

2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (patch_method_invocation): Add enclosing context to ctor
	calls if necessary. Fixes PR java/2953

2001-07-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_package): Abort if qualified expression member
	isn't right.
	(qualify_ambiguous_name): Don't qualify as type if `this' in use.
	Fixes PR java/1391

2001-07-07  Zack Weinberg  <zackw@stanford.edu>

	* verify.c: Don't use // comments.

2001-07-05  Tom Tromey  <tromey@redhat.com>

	* lang.c (flag_assume_compiled): Removed.
	* java-tree.h (flag_assume_compiled): Removed.
	* lang-options.h: Removed -ffile-list-file, -fuse-boehm-gc,
	-fhash-synchronization, -fuse-divide-subroutine,
	-fcheck-references, -femit-class-file, -femit-class-files,
	-fassume-compiled.  Updated --encoding information.  Changed
	-foutput-class-dir to `-d'.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* jcf-parse.c (parse_class_file): Add lineno parameter to
	debug_start_source_file call.

2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcj.texi: Use gpl.texi.
	* Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Update
	dependencies and use doc/include in search path.

2001-07-03  Jeff Sturm  <jsturm@one-point.com>

	* parse.y (fix_constructors): Test if a CALL_EXPR invokes
	`this'.  If so, don't build instance initializers.

2001-07-03  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_expression_name): Improved error message for
	inner class cases. Fixes PR java/1958

2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>

	* lang.c: #include diagnostic.h
	(lang_print_error): Add a `diagnostic_context *' parameter.
	(java_dummy_print): Likewise.
	* Make-lang.in (JAVA_LEX_C): Depend on diagnostic.h

2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jcf-parse.c (gcc_mark_jcf): Test for a finished JCF.
	* jcf.h (typedef struct JCF): New bitfield `finished.'
	(JCF_FINISH): Set `finished.'
	(JCF_ZERO): Reset `finished.'
	Fixes PR java/2633

2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (class_body_declaration:): Don't install empty instance
	initializers.
	Fixes PR java/1314

2001-06-27  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* class.c (set_super_info): Call `set_class_decl_access_flags.'
	(set_class_decl_access_flags): New function.
	* java-tree.h (set_class_decl_access_flags): New prototype.
	* jcf-parse.c (handle_innerclass_attribute): Read and set access flags.
	(parse_class_file): New local `decl_max_locals.' Take wide types
	into account to compute DECL_MAX_LOCALS.
	* parse.y (type_import_on_demand_declaration:): Ignore duplicate
	imports on demand.

2001-06-22  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* zipfile.h: Use GCC_JCF_H instead of JCF_H.

2001-06-20  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* class.c (java_hash_tree_node): Fixed indentation in leading comment.
	* parse.y (do_resolve_class): Moved comments out to leading comment
	section. Removed local `start', New local `_ht' and
	`circularity_hash.'  Record `enclosing' in hash table and search
	it to detect circularity.  Use `enclosing' as an argument to
	`lookup_cl.' Free the hash table when done.

2001-06-19  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_read_char): Disallow invalid and overlong
	sequences.  Fixes PR java/2319.

2001-06-05  Jeff Sturm  <jsturm@one-point.com>

	* decl.c (create_primitive_vtable): Don't call make_decl_rtl.

2001-06-04  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* expr.c (force_evaluation_order): Match wrapped ctor calls, locate
	arguments accordingly.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcj.texi: Move contents to just after title page.

2001-06-01  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (type_literals:): Use `build_incomplete_class_ref' with
	builtin type.
	(patch_incomplete_class_ref): Build the class ref, build the class
	init if necessary, complete the tree.
	Fixes PR java/2605

2001-05-31  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (lookup_field_wrapper): Test `name' code.
	(resolve_qualified_expression_name): Test `qual_wfl' code.
	(qualify_ambiguous_name): Handle `CONVERT_EXPR', fixe indentation,
	handle `qual_wfl' by code.
	(maybe_build_primttype_type_ref): Test `wfl' code.

2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>

	* Make-lang.in ($(srcdir)/java/gcj.info): Added dependencies on
	fdl.texi.
	(java/gcj.dvi): Use TEXI2DVI instead of custom tex calls.  Create
	the dvi file in the java directory.

2001-05-25  Sam TH  <sam@uchicago.edu>

	* gen-table.pl javaop.h jcf.h lex.h,
	parse.h: Fix header include guards.

2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* jv-scan.c (version): Update copyright year.

2001-05-21  Per Bothner  <per@bothner.com>

	* jcf-parse.c (read_class):  If class is from .class or .zip file
	and it's already been read, don't push/pop parser context.

2001-05-18  Per Bothner  <per@bothner.com>

	* jvspec.c (lang_specific_pre_link):  Re-arrange the linker
	command line so the jvgenmain-generated main program comes first.

2001-05-15  Tom Tromey  <tromey@redhat.com>

	* class.c (build_utf8_ref): Don't generate identifier based on
	utf8const contents.

2001-05-12  Richard Henderson  <rth@redhat.com>

	* java-tree.def (JAVA_EXC_OBJ_EXPR): New.
	* expr.c (java_lang_expand_expr): Expand it.
	(process_jvm_instruction): Build JAVA_EXC_OBJ_EXPR instead of
	calling build_exception_object_ref.
	* parse.y (catch_clause_parameter): Likewise.
	(build_dot_class_method): Likewise.
	(try_reference_assignconv): Likewise.
	* check-init.c (check_init): Check JAVA_EXC_OBJ_EXPR not EXC_PTR_EXPR.
	* jcf-write.c (generate_bytecode_insns): Likewise.

2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (build_unresolved_array_type): Set
	EXPR_WFL_QUALIFICATION on the newly created wfl.
	Fixes PR java/2538. Fixes PR java/2535.

2001-05-07  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (fix_constructors): Removed unnecessary assignment to
	local. Moved assignment to `this$<n>', fixed comments and
	indentation.
	(build_wfl_wrap): Fixed indentation.
	Fixes PR java/2598, java/2579 and java/2658.

2001-05-03  Mo DeJong  <mdejong@redhat.com>

	* lex.c (java_new_lexer): Call iconv_close on temp handle used to
	check for byte swap.

2000-05-02  Jeff Sturm  <jsturm@one-point.com>

	* expr.c (build_class_init): Move MODIFY_EXPR
	outside of COND_EXPR.  Remove variable `call'.

2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* decl.c: NULL_PTR -> NULL.
	* jcf-write.c: Likewise.

2001-05-01  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in ($(srcdir)/java/gcj.info): Added `-I..'.
	(java/gcj.dvi): Added $(srcdir) to TEXINPUTS.
	* gcj.texi: Updated copyright text.  Include fdl.texi.
	(Top): Link to new node.

2001-05-01  Per Bothner  <per@bothner.com>

	* parse.h (REGISTER_IMPORT):  Use tree_cons instead of chainon.

2001-05-01  Per Bothner  <per@bothner.com>

	* parse.y (java_pop_parser_context):  The TREE_VALUE of a link in the
	import_list contains the name, not the TREE_PURPOSE.

2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-io.c (read_zip_member): Cast to long in comparison with
	signed value.

	* jvspec.c (lang_specific_driver): Initialize variables.

	* mangle.c (find_compression_record_match): Likewise.

	* typeck.c (build_null_signature): Provide static prototype.  Mark
	parameter with ATTRIBUTE_UNUSED.

	* verify.c (verify_jvm_instructions): Initialize variable.

2001-04-27  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* parse.y (do_resolve_class): Check for cyclic inheritance during
	inner class resolution.

2001-04-27  Per Bothner  <per@bothner.com>

	* parse.y (java_expand_classes):  Don't change ctxp_for_generation
	while iterating, since that could cause gc to lose stuff.

2001-04-26  Per Bothner  <per@bothner.com>

	Fix method search wrt scope of inner classes to match JLS2.
	* typeck.c (build_null_signature):  New static function.
	(has_method):  New function.  Uses build_null_signature and lookup_do.
	* java-tree.h (has_method):  New declaration.
	* parse.y (find_applicable_accessible_methods_list):  Do not search
	context of inner classes here.
	(patch_method_invocation):  Search scope, ie. current and outer clases,
	for method matching simple name, to find class.

2001-04-26  Per Bothner  <per@bothner.com>

	* jcf-write.c (generate_bytecode_insns case SWITCH_EXPR):
	Fix thinko:  If a single case, use if_icmpeq, not ifeq.

	* constants.c (find_methodref_with_class_index):  New function.
	(find_methodref_index):  Use find_methodref_with_class_index.
	* java-tree.h (find_methodref_with_class_index):  New declaration.
	* jcf-write.c (generate_bytecode_insns case CALL_EXPR):  Don't change
	DECL_CONTEXT, instead use new find_methodref_with_class_index function.
	If context changed from interface to class, don't use invokeinterface.

2001-04-25  Per Bothner  <per@bothner.com>

	* verify.c (verify_jvm_instructions):  For field instructions,
	check that field index is valid.  For invoke instructions, check that
	method index is valid.

2001-04-25  Alexandre Oliva  <aoliva@redhat.com>

	* config-lang.in (target_libs): Copy from $libgcj_saved.

2001-04-25  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* decl.c (init_decl_processing): Add new class "protectionDomain"
	field.
	* class.c (make_class_data): Set initial value for "protectionDomain".

2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jvspec.c (lang_specific_driver): Fix memory allocation
	deficit, by using concat in lieu of xmalloc/sprintf.

2001-04-20  Per Bothner  <per@bothner.com>

	Fixes to compile multiple .class files at once.
	* decl.c (init_decl_processing):  Don't set CLASS_LOADED_P.
	* java-tree.h (CLASS_PARSED_P):  New macro.
	(CLASS_LOADED_P):  Re-define to use TYPE_SIZE and CLASS_PARSED_P.
	* jcf-parse.c (jcf_parse_source):  Inline into read_class.
	(read_class):  Avoid some code duplication.
	Don't call JCF_FINISH for a .class file - might be needed later.
	(jcf_parse):  Don't call layout_class here.  Check/set CLASS_PARSED_P
	rather than CLASS_LOADED_P, since latter implies class laid out.
	(yyparse):  Do layout_class and JCF_FINISh here instead, in pass 2.
	* parse.y:  Don't need to set CLASS_LOADED_P for array types.

2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (java/boehm.o): Depend on toplev.h.

	* boehm.c: Include toplev.h.

2001-04-06  Tom Tromey  <tromey@redhat.com>
	    Alexandre Petit-Bianco  <apbianco@redhat.com>

	Fix for PR gcj/1404 and PR gcj/2332:
	* parse.y (build_array_from_name): If we use the type_wfl then
	accumulate dimensions from the original type as well.
	(build_unresolved_array_type): Don't modify TYPE_OR_WFL in place.

2001-04-06  Tom Tromey  <tromey@redhat.com>

	* parse.y (analyze_clinit_body): Return true if the second operand
	of a METHOD_EXPR is nonzero.

2001-04-06  Tom Tromey  <tromey@redhat.com>

	* Make-lang.in ($(srcdir)/java/parse-scan.c): Run bison from build
	directory.
	($(srcdir)/java/parse.c): Likewise.

2001-04-05  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* gcj.texi: Use `which-gcj' instead of `which-g77.'
	(version-gcc): Initialized.
	(which-gcj): Likewise.

2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* java-tree.h (struct lang_decl): New macro
	`DECL_FIXED_CONSTRUCTOR_P.' New field `fixed_ctor.'
	* parse.y (build_instance_initializer): New function.
	(add_instance_initializer): Use it.
	(java_fix_constructors): Set `current_class' before fix pass.
	(fix_constructors): Just return if already fixed. Move `super()'
	invocation ahead. Use `build_instance_initializer.'
	Fixes PR java/1315.

2001-04-04  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_qualified_expression_name): Pass field's
	DECL_CONTEXT to `not_accessible_p.'
	(not_accessible_p): Changed parameters order in `inherits_from_p'
	invocation.

2001-03-27  Andrew Haley  <aph@cambridge.redhat.com>

	* lang-options.h: Add flag_check_references.

2001-04-04  Per Bothner  <per@bothner.com>

	* java-tree.h (CONSTANT_VALUE_P):  New macro.
	* jcf-write.c (generate_classfile):  Use CONSTANT_VALUE_P.
	* parse.y (maybe_build_class_init_for_field):  New static function.
	(resolve_expression_name, resolve_field_access):  Use
	maybe_build_class_init_for_field instead of build_class_init
	This does not do the init if the field is compile-time-constant.
	(resolve_field_access):  Simplify.

	* parse.y (fold_constant_for_init):  Merge test into switch.

2001-04-03  Zack Weinberg  <zackw@stanford.edu>

	* Make-lang.in (buffer.o, check-init.o, class.o): Don't depend
	on gansidecl.h.
	* buffer.c, jvgenmain.c: Don't include gansidecl.h.

2001-04-02  Zack Weinberg  <zackw@stanford.edu>

	* expr.c (pop_type_0): Save the result of the first
	lang_printable_name call in a scratch buffer, so it
	won't be clobbered by the second call.

2001-03-30  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse-scan.y (array_type:): Rewritten.
	(type_declaration:): `empty_statement' replaces `SC_TK.'
	(class_member_declaration:): `empty statement' added.
	(method_body:): Simplified.
	(static_initializer:): Likewise.
	(primary_no_new_array:): Use `type_literals.'
	(type_literals:): New rule.
	(dims:): Set and update `bracket_count.'
	Fixes PR java/1074. Fixes PR java/2412.

2001-03-28  Hans Boehm  <boehm@acm.org>

	* boehm.c (PROCEDURE_OBJECT_DESCRIPTOR): Set to use `build_int_2.'
	(get_boehm_type_descriptor): Set type on returned value to be a
	pointer length integer.

2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* expr.c (pop_type_0): Call `concat' rather than building the
	string manually.
	(pop_type): Add format specifier in call to `error'.

	* parse.y (patch_method_invocation): Avoid casting away
	const-ness.

2001-03-28  Jeffrey Oldham  <oldham@codesourcery.com>

	* jvgenmain.c (do_mangle_classname): End string constant with '\0'.

2001-03-28  Richard Henderson  <rth@redhat.com>

	IA-64 ABI Exception Handling:
	* Make-lang.in (except.o): Don't depend on eh-common.h.
	* check-init.c (check_init): Handle EXC_PTR_EXPR.
	* decl.c (init_decl_processing) [throw_node]: No _Jv_Sjlj_Throw.
	[soft_exceptioninfo_call_node]: Remove.
	[eh_personality_libfunc, lang_eh_runtime_type]: New.
	(end_java_method): No emit_handlers.
	* except.c (java_set_exception_lang_code): Remove.
	(method_init_exceptions): Don't call it.
	(prepare_eh_table_type): No CATCH_ALL_TYPE.
	(build_exception_object_ref): New.
	(expand_end_java_handler): Update for except.h name changes.
	(emit_handlers, expand_resume_after_catch): Remove.
	* expr.c (java_lang_expand_expr): Update for except.h name changes.
	(process_jvm_instruction): Use build_exception_object_ref.
	* java-tree.h (JTI_SOFT_EXCEPTIONINFO_CALL_NODE): Remove.
	(soft_exceptioninfo_call_node): Remove.
	(build_exception_object_ref): Declare.
	* jcf-write.c (generate_bytecode_insns) [CALL_EXPR]: No
	soft_exceptioninfo_call_node.  Move processing ...
	[EXC_PTR_EXPR]: ... here.
	* parse.h (BUILD_ASSIGN_EXCEPTION_INFO): Remove dead code.
	* parse.y (catch_clause_parameter): Use build_exception_object_ref.
	(source_end_java_method): No java_set_exception_lang_code or
	emit_handlers.
	(build_dot_class_method): Use build_exception_object_ref.
	(try_reference_assignconv): Check EXC_PTR_EXPR not
	soft_exceptioninfo_call_node.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* java-tree.h (throw_node): Define as a single member of
	java_global_trees instead of a separate array.
	(JTI_THROW_NODE): New.
	* decl.c (throw_node): Don't declare.
	(init_decl_processing): Init a scalar throw_node.
	Don't register it for gc.
	* check-init.c (check_init): Reference scalar throw_node.
	* expr.c (build_java_athrow): Likewise.
	* jcf-write.c (generate_bytecode_insns): Likewise.
	* parse.h (BUILD_THROW): Likewise.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* decl.c (end_java_method): Do not save and restore
	flag_non_call_exceptions.
	* parse.y (source_end_java_method): Likewise.
	* lang.c (flag_exceptions): Don't declare.
	(java_init_options): Set flag_non_call_exceptions.  Set
	flag_exceptions here ...
	(java_init): ... not here.

2001-03-27  Richard Henderson  <rth@redhat.com>

	* expr.c, parse.h: Use USING_SJLJ_EXCEPTIONS instead of
	exceptions_via_longjmp.

	* lang.c (flag_new_exceptions): Don't declare it.
	(java_init_options): Or set it.

2001-03-27  Richard Henderson  <rth@redhat.com>

	* decl.c (end_java_method): Rename asynchronous_exceptions to
	flag_non_call_exceptions.
	* parse.y (source_end_java_method): Likewise.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in: Depend on $(SYSTEM_H), not system.h.

2001-03-26  Mark Mitchell  <mark@codesourcery.com>

	* parse.h (DECL_END_SOURCE_LINE): Don't rely on DECL_FRAME_SIZE.

2001-03-26  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (find_as_inner_class): Follow current package
	indications not to mistakingly load an unrelated class.

2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* constants.c (PUTN): Use memcpy, not bcopy.

	* lex.c (java_read_char): Use memmove, not bcopy.

	* parse.y (java_parser_context_resume): Use memcpy, not bcopy.

2001-03-23  Per Bothner  <per@bothner.com>

	* verify.c (verify_jvm_instructions):  Replace 3 pop_type by POP_TYPE
	macro for better error pin-pointing.
	* java-tree.h:  Fix typo in comment.

	* jcf-write.c (generate_bytecode_insns):  Changes to TRY_FINALLY_EXPR.
	Don't include jsr/goto in exception range.
	Check if start and end of exception range are the same (also TRY_EXPR).
	Don't emit jsr after try_block if CAN_COMPLETE_NORMALLY is false.
	However, do emit the following goto even if try_block is empty.
	Defer freeing exception_decl until after the finalizer, to make
	sure the local isn't reused in the finalizer.  Fixes PR java/1208.

	* parse.y (java_complete_lhs):  If the try-clause is empty, just
	return the finally-clause and vice versa.

2001-03-23  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* gcj.texi (Input Options): documented the check for attribute
	`gnu.gcc.gccj-compiled' and the `-fforce-classes-archive-check' flag.
	* java-tree.h (flag_force_classes_archive_check): Declared extern.
	* jcf-parse.c (HANDLE_GCJCOMPILED_ATTRIBUTE): New macro.
	(jcf_parse): Check for the right classes archive if necessary.
	* jcf-reader.c (get_attribute): Define `MATCH_ATTRIBUTE' and use it.
	(jcf_parse_fields): Fixed indentation.
	* jcf-write.c (append_gcj_attribute): New function.
	(generate_classfile): Compute the attribute count, invoke
	`append_gcj_attribute'.
	* jcf.h (typedef struct JCF): `seen_in_zip' and `java_source'
	turned into bit-fields. New bit-field `right_zip.'
	(JCF_ZERO): Set `right_zip' to zero.
	* lang-options.h (-fforce-classes-archive-check): Added flag.
	* lang.c (flag_force_classes_archive_check): New flag.
	(lang_f_options): New entry `force-classes-archive-check.'
	Fixes PR java/1213.

2001-02-07  Andrew Haley  <aph@redhat.com>

	* gcj.texi (Configure-time Options): Add -fcheck-references.
	* expr.c (build_java_indirect_ref): New function.
	(java_check_reference): New function.
	(build_java_array_length_access): Use build_java_indirect_ref to
	check for null references.
	(build_java_arrayaccess): Likewise.
	(build_get_class): Likewise.
	(build_field_ref): Likewise.
	(invoke_build_dtable): Likewise.
	(build_invokeinterface): Likewise.
	* lang.c (lang_f_options): Add flag_check_references.
	* jvspec.c (jvgenmain_spec): Add flag_check_references.
	* java-tree.h (flag_check_references): New variable.
	* lang.c (flag_check_references): Likewise.
	* parse.y (patch_invoke): Use java_check_reference.
	(patch_assignment): Allow for extra nesting in
	_Jv_CheckArrayStore.

2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* gjavah.c (cxx_keywords): Update from the definitive list in cp/lex.c.
	* lex.c (cxx_keywords): Likewise.

2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (qualify_ambiguous_name): Broaden `length'
	recognition. Help MODIFY_EXPR be resolved as expression names.
	Fixes PR java/2066. Fixes PR java/2400.

2001-03-21  Bryce McKinlay  <bryce@albatross.co.nz>

	* gjavah.c (process_file): Mark interface definitions with
	"__attribute__ ((java_interface))".

2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* class.c (layout_class): Fixed push_super_field's second
	argument. Fixes PR java/2333.
	(jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
	too early to lay innerclasses out.

2001-03-20  Tom Tromey  <tromey@redhat.com>
	    Alexandre Petit-Bianco <apbianco@redhat.com>

	* parse.y (patch_assignment): Handle the case of a SAVE_EXPR
	inside an array reference. Insertion of the array store check
	rewritten. Fixes PR java/2299.

2001-03-20  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_read_unicode): Only accept leading `u's.

2001-03-20  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (read_class): Initialize `class'.

2001-03-20  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* jcf_parse.c (jcf_parse): Eliminate unused variable.

2001-03-19  Mark Mitchell  <mark@codesourcery.com>

	* class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
	(layout_class): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* decl.c (builtin_function): Likewise.
	(give_name_to_locals): Likewise.

2001-03-19  Per Bothner  <per@bothner.com>

	* jcf-parse.c (load_inner_classes):  Check CLASS_LOADED_P
	before trying to load an inner class.

	Fixes to process to command-line .class files in two passes.
	* java-tree.h (JAVA_FILE_P, CLASS_FILE_P, ZIP_FILE_P):  New flags.
	(CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P):  Rename to ..
	(CLASS_FROM_CURRENTLY_COMPILED_P):  ... because it is more general now.
	* class.c (is_compiled_class):  Fix for renamed flag.
	* parse.y (maybe_create_class_interface_decl):  Likewise.
	* jcf-parse.c (yyparse):  Also set if compiling .class files.
	* jcf-parse.c (read_class);  Read current_class.
	(jcf_parse):  Make static.
	(load_inner_classes):  New function, with code moved from jcf_parse,
	because we need to inner classes after the command-line files are read.
	(yyparse):  Set finput to NULL when it doesn't need to be closed.
	Reduce use of main_jcf (basically only for archive) and
	use finput instead of main_jcf->read_state.
	Inline jcf_figure_file_type into yyparse.
	Set JAVA_FILE_P, CLASS_FILE_P, or ZIP_FILE_P on filename list name.
	Defer load_inner_classes and parse_class_file to a second pass,
	after we've correctly mapped command-line .clas fiels to classes.
	(jcf_figure_file_type):  Removed.
	* jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE):  Removed flags.
	(JCF_ZERO):  Also clear zipd field.
	* zipfile.h:  Conditionalize on JCF_H insread of JCF_ZIP.

2001-03-18  Matt Kraai  <kraai@alumni.carnegiemellon.edu>

	* jcf-parse.c (yyparse): Change ch from char * to char.

2001-03-19  Per Bothner  <per@bothner.com>

	* jvspec.c (lang_specific_driver):  Check for .zip and .jar files.
	Add constructed filelist-file at end, following -xjava.  Thus any .o
	and library files are not affected by the -xjava.  Also wrap
	explicit @FILE with -xjava and -xnone.

2001-03-19  Andrew Haley  <aph@cambridge.redhat.com>

	* class.c (build_static_field_ref): Call make_decl_rtl() after
	setting the DECL_EXTERNAL flag.

2001-03-17  Per Bothner  <per@bothner.com>

	* decl.c (clear_binding_level):  Fix initializer (broke 03-15).

	* jcf-write.c (generate_bytecode_insns):  Handle emitting iinc
	when result is is needed (target is STACK_TARGET).

	* parse.h (JDEP_SOLV):  Removed.
	* parse.y (register_incomplete_type):  Use JDEP_TO_RESOLVE instead.

	* parse.y (incomplete_class_list): Removed.
	(obtain_incomplete_type): Don't use or set incomplete_class_list.
	It doesn't work if resolve_class changes the name of an array type
	that is on the list and then someone else looks for the modified name.
	Also, seems liable to break when compiling multiple source files at
	once.  So the simplest is to just remove incomplete_class_list -
	it is only a minor space win and it is not even clear it saves time.

	* parse.y (resolve_class):  Remove unneeded promote_type.

2001-03-15  Per Bothner  <per@bothner.com>

	* java-tree.h (BLOCK_IS_IMPLICIT):  New flag.
	* parse.h (BLOCK_EXPR_ORIGIN):  Removed macro.
	* parse.y (declare_local_variables, maybe_absorb_scoping_blocks):
	Use BLOCK_IS_IMPLICIT rather than BLOCK_EXPR_ORIGIN.

	* jcf-parse.c (yyparse):  Set/reset input_filename for source file.
	* parse.y (java_expand_classes):  Likewise.

	* parse.y (expand_start_java_method):  Was only called once and had a
	misleading name, so inline in caller java_complete_expand_method.
	(enter_a_block):  Likewise inline in enter_block and remove.

	Remove junk from when gcc/java was created (by copying from C/C++).
	* decl.c (keep_next_level_flag, keep_next_if_subblocks):  Remove.
	(struct binding_level):  Remove fields keep, keep_if_subblocks,
	more_cleanups_ok, have_cleanups (which have never been used).
	(pushlevel, poplevel):  Remove related useless code.

	* class.c (make_class_data):  The class_dtable_decl (i.e. the
	vtable for Class) should be external, except when compiling Class.

	* jvspec.c (lang_specific_driver):  Fix -C handling.
	Check -save-temps to see if temp @FILE should be deleted.
	Follow-up to/fix for February 16 patch.

	* verify.c (verify_jvm_instructions):  Better error msgs for dup.
	(type_stack_dup):  Remove no-longer neded error check.

2001-03-15  Bryce McKinlay  <bryce@albatross.co.nz>

	* mangle.c (mangle_record_type): Rename 'from_pointer' argument
	to 'for_pointer'. If this type is for a pointer (argument) mangling,
	don't surround the element with 'N..E' if the type name is
	unqualified.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* class.c (build_static_field_ref): Use COPY_DECL_RTL,
	DECL_RTL_SET_P, etc.
	(make_method_value): Likewise.
	(get_dispatch_table): Likewise.

	* decl.c (push_jvm_slot): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.

2001-03-07  Tom Tromey  <tromey@redhat.com>

	* config-lang.in (lang_requires): Define.

2001-03-07  Brad Lucier  <lucier@math.purdue.edu>

	* typeck.c (convert): Check flag_unsafe_math_optimizations,
	not flag_fast_math.

2001-03-05  Per Bothner  <per@bothner.com>

	Fix a problem where rest_of_decl_compilation applied to
	class_dtable_decl causes problems because it was done too early,
	before output file was opened.
	* decl.c (init_decl_processing):  Remove init of class_dtable_decl.
	* class.c (class_dtable_decl):  Add macro - element of class_roots.
	(make_class_data):  Define class_dtable_decl.
	* java-tree.h (JTI_CLASS_DTABLE_DECL, class_dtable_decl):  Removed.

2001-03-01  Zack Weinberg  <zackw@stanford.edu>

	* java/class.c, java/decl.c, java/java-tree.h: Replace all
	uses of 'boolean' with 'bool'.

2001-03-01  Zack Weinberg  <zackw@stanford.edu>

	* lang-specs.h: Add zero initializer for cpp_spec field to all
	array elements.

2001-02-16  Per Bothner  <per@bothner.com>

	Handle compiling multiple input files at once, and @FILE syntax.
	* gcj.texi:  Updated documentation to match.
	* java-tree.h (flag_filelist_file, init_src_parse):  New declarations.
	* jcf-parse.c (parse_source_file):  Split into ...
	(parse_source_file_1):  New function - and:
	(parse_source_file_2):  New function.
	(yyparse):  On -ffilelist-file, open and scan named file.
	On first pass over files, only do parse_source_file_1.
	A new second pass calls parse_source_file_2 for each file to compile.
	(init_jcf_parse):  Call init_src_parse.
	* jvspec.c (INDIRECT_FILE_ARG):  New flag.
	(lang_specific_driver):  Support @FILELIST-FILE syntax, as well
	as multiple input file combined in one compilation.
	* lang-options.h:  Add -ffilelist-file
	* lang.c (flag_filelist_file):  New flag variable.
	(lang_f_options):  Handle -ffilelist-file.
	* lex.c (java_init_lex): Don't clear ctxp->incomplete_class.
	* parse.h (struct parse_ctxt):  Remove fields incomplete_class and
	gclass_list - use global fields of src_parse_roots instead.
	* parse.y (src_parse_roots):  New array.
	(incomplete_class_list, gclass_list):  New macros.
	(push_parser_context, java_pop_parser_context,
	java_parser_context_resume):  Don't fiddle with deleted fields.
	(various):  Use incomplete_class gclass_list and global macros
	instead of parse_ctxt fields - the lists are global.
	(init_src_parse):  New function.

2001-02-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* decl.c (set_block): Set NAMES and BLOCKS from BLOCK.

2001-02-20  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (check_inner_class_access): Moved declaration of local
	`enclosing_decl_type' to the right location.

2001-02-19  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (parser_check_super_interface): Don't call
	check_pkg_class_access for an inner interface.
	(parser_check_super): Don't call check_pkg_class_access for inner
	class.
	(do_resolve_class): Simplify enclosing type loop. Don't call
	check_pkg_class_access if CL and DECL are not set.
	(find_in_imports_on_demand): Set DECL if class_type needed to be
	loaded. Don't call check_pkg_class_access for an inner class.
	(check_inner_class_access): Rewritten to implement member access
	rules as per spec 6.6.1.
	(check_pkg_class_access): Handle the empty package correctly.
	(in_same_package): New function. Determine if two classes are in the
	same package.

2001-02-18  Bryce McKinlay  <bryce@albatross.co.nz>

	* typeck.c (build_java_array_type): Don't try to poke a public `clone'
	method into array types.
	* parse.y (patch_method_invocation): Bypass access check on clone call
	to array instance.

2001-02-15  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* expr.c (build_instanceof): Check for arrays when trying fold to
	false.

2001-02-15  Jim Meyering  <meyering@lucent.com>

	* Make-lang.in (java.install-common): Depend on `installdirs'.
	(java.install-info): Likewise.

2001-02-15  Bryce McKinlay  <bryce@albatross.co.nz>

	* Make-lang.in (jvspec.o): Modify rule to match that of cp/g++spec.o.

2001-02-14  Tom Tromey  <tromey@redhat.com>
	    Alexandre Petit-Bianco  <apbianco@cygnus.com>

	Fix for PR java/1261.
	* typeck.c (build_java_array_type): Add public `clone' method to
	arrays.
	* parse.y (resolve_qualified_expression_name): Use current_class
	when checking for inaccessibility.
	(patch_method_invocation): Fixed error message when accessibility
	denied.  Added `from_super' argument.

2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_class): Don't build a fake decl. Use the one
	already built.
	* typeck.c (build_java_array_type): Build and assign decl to array
	type.

2001-02-14  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (not_accessible_p): Changed leading comment. Added extra
	`where' argument. Use it to enforce protected access rules.
	(resolve_qualified_expression_name): Added extra argument to
	not_accessible_p.
	(patch_method_invocation): Use argument `primary' to provide
	not_accessible_p with an extra argument.
	(lookup_method_invoke): Added extra argument to not_accessible_p.
	(search_applicable_method_list): Likewise.

2001-02-13  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* parse.y (resolve_qualified_expression_name): Try to resolve as
	an inner class access only if `decl' is a TYPE_DECL.

2001-02-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (classdollar_identifier_node): Initialize.
	* java-tree.h (enum java_tree_index): New entry
	`JTI_CLASSDOLLAR_IDENTIFIER_NODE.'
	(classdollar_identifier_node): New macro.
	(ID_CLASSDOLLAR_P): Likewise.
	* parse.y (build_dot_class_method): Use `classdollar_identifier_node.'
	(build_dot_class_method_invocation): Likewise.
	(find_applicable_accessible_methods_list): `class$' can't be
	inherited.

2001-02-09  Raja R Harinath  <harinath@cs.umn.edu>

	* Make-lang.in (java/mangle_name.o): Add 'make' prereqs.

2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* Manke-lang.in (JVGENMAIN_OBJS): Added `errors.o'
	* jvgenmain.c (error): Reversed 2001-02-09 patch. `error' is now
	gone.

2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* mangle_name (append_unicode_mangled_name): Emit `_' or `U'
	outside of the `__U' sequence too.
	(unicode_mangling_length): Count `_' or `U' outside of the `__U'
	sequence too.

2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* jvgenmain.c (error): Reversed 2001-02-01 deletion.

2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Make-lang.in (JAVA_OBJS): Added java/mangle_name.o
	(JVGENMAIN_OBJS): Likewise.
	* java-tree.h (append_gpp_mangled_name): New prototype.
	* jcf-parse.c (ggc_mark_jcf): Argument now `void *.'
	Removed cast calling `gcc_add_root.'
	* jvgenmain.c (mangle_obstack): New global, initialized.
	(main): Use it.
	(do_mangle_class): Constify local `ptr.'
	Removed macro `MANGLE_NAME.' Removed cast in `for.' Call
	append_gpp_mangle_name and update `count' if necessary.
	Use `mangle_obstack.'
	* mangle.c (append_unicode_mangled_name): Removed.
	(append_gpp_mangled_name): Likewise.
	(unicode_mangling_length): Likewise.
	(mangle_member_name): Return type set to `void.'
	(mangle_field_decl): Don't append `U' in escaped names.
	(mangle_method_decl): Likewise.
	(mangle_member_name): Just use `append_gpp_mangled_name.'
	* mangle_name.c: New file.

2001-02-07  Per Bothner  <per@bothner.com>

	* check-init.c (check_init):  Fix TRY_FINALLY_EXPR logic.

	* check-init.c (check_init):  Don't call done_alternative after
	processing loop code, as a LOOP_EXPR never terminates normally.

2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcj.texi: Change sources.redhat.com reference to gcc.gnu.org.

2001-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (HANDLE_SYNTHETIC_ATTRIBUTE): Don't handle field
	DECLs.

2001-02-06  Tom Tromey  <tromey@redhat.com>

	* lex.c (java_new_lexer): Longer error message.

2001-02-05  Jeff Sturm  <jeff.sturm@commerceone.com>
	    Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* typeck.c (build_prim_array_type): Added leading comment.
	(build_java_array_type): Moved locals out of
	block. Always create the `data' field, fixed alignment to match
	C++.

2001-02-04  Tom Tromey  <tromey@redhat.com>

	* expr.c (java_lang_expand_expr): Don't bother recomputing
	`length'.  Use rest_of_decl_compilation, not make_decl_rtl.
	Fixes PR java/1866.

2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (process_imports): Save the original name of the import
	for better error report.

2001-02-04  Bryce McKinlay  <bryce@albatross.co.nz>

	* Make-lang.in (jvspec.o): Add DRIVER_DEFINES to the list
	of macros used when compiling jvspec.c.
	* jvspec.c (lang_specific_driver): Link with the shared
	libgcc by default.

2001-02-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* check-init.c (check_init): Call internal_error instead of fatal.
	* expr.c (java_lang_expand_expr): Likewise.
	* jcf-parse.c (get_constant): Likewise.
	* mangle.c (java_mangle_decl): Likewise.
	* parse.y (make_nested_class_name, java_complete_lhs): Likewise.
	(operator_string): Likewise.
	* check-init.c (check_init): Call abort instead of fatal.
	* class.c (build_class_ref): Likewise.
	* constants.c (write_constant_pool): Likewise.
	* decl.c (start_java_method): Likewise.
	* expr.c (push_type, java_stack_pop, java_stack_swap): Likewise.
	(java_stack_dup, encode_newarray_type): Likewise.
	(build_java_array_length_access): Likewise.
	(build_java_check_indexed_type, expand_java_pushc): Likewise.
	(build_java_soft_divmod, build_invokeinterface): Likewise.
	* java-tree.h (INNER_CLASS_P): Likewise.
	* jcf-parse.c (parse_signature, get_name_constant): Likewise.
	(give_name_to_class, get_class_constant): Likewise.
	* jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
	(find_constant_index, generate_bytecode_conditional): Likewise.
	(generate_bytecode_insns, perform_relocations): Likewise.
	* lex.c (java_unget_unicode, java_lex): Likewise.
	* mangle.c (mangle_type, mangle_record_type): Likewise.
	(mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
	(finish_mangling): Likewise.
	* parse.h (MARK_FINAL_PARMS): Likewise.
	* parse.y (pop_current_osb, unreachable_stmt_error): Likewise.
	(obtain_incomplete_type, java_complete_class): Likewise.
	(java_check_regular_methods, java_complete_expand_method): Likewise.
	(cut_identifier_in_qualified, check_deprecation): Likewise.
	(patch_invoke, find_applicable_accessible_methods_list): Likewise.
	(java_complete_lhs, lookup_name_in_blocks): Likewise.
	(check_final_variable_indirect_assignment, build_unaryop): Likewise.
	* typeck.c (set_local_type, parse_signature_type): Likewise.
	(parse_signature_string, build_java_signature): Likewise;
	(set_java_signature): Likewise.
	* verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.
	* class.c (add_method): Call fatal_error instead of fatal.
	(build_static_field_ref): Likewise.
	* expr.c (build_known_method_ref, expand_invoke): Likewise.
	* jcf-parse.c (get_constant, jcf_parse): Likewise.
	* lex.c (java_new_new_lexer): Likewise.
	* jv-scan.c (main): Likewise.
	(fatal_error): Renamed from fatal.
	* jcf-parse.c (yyparse): Call fatal_io_error instead of
	pfatal_with_name.
	* jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
	(yyparse): Likewise.
	* jcf-write.c (make_class_file_name, write_classfile): Likewise.
	* lex.c (java_get_line_col): Likewise.
	* jcf-parse.c (load_class): Make errors non-fatal.
	* lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.

2001-02-01  Bryce McKinlay  <bryce@albatross.co.nz>

	* jvgenmain.c (class_mangling_suffix): Remove unused string.
	(error): Remove unused function.
	(main): Don't use "__attribute__ alias" on generated class symbol.

2001-01-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last
	argument.
	* parse.y (finish_method_declaration): Code accounting for WFLed
	method DECL_NAMEs deleted.
	(check_abstract_method_definitions): Likewise.
	(resolve_type_during_patch): Layout resolved type.
	* typeck.c (lookup_do): Removed unused local.

2001-01-30  Bryce McKinlay  <bryce@albatross.co.nz>

	* java-tree.h: Remove JTI_INTEGER_NEGATIVE_ONE_NODE.
	* decl.c (init_decl_processing): Use integer_minus_one_node, not
	integer_negative_one_node.
	* expr.c (build_java_binop): Likewise.

2001-01-24  Jeff Sturm  <jeff.sturm@commerceone.com>

	* zextract.c (read_zip_archive): Read file_offset before writing
	zipd and consequently clobbering the header contents.

2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* expr.c: Likewise.
	* parse.y: Likewise.

2001-01-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* ChangeLog (2001-01-21): Fixed typo.
	* class.c (layout_class_method): Code accounting for WFLed
	method DECL_NAMEs deleted.
	* constant.c (find_methodref_index): Likewise.
	* decl.c (lang_mark_tree): Mark `wfl' field in struct lang_decl.
	* java-tree.h (DECL_FUNCTION_WFL): New macro.
	(struct lang_decl): New field `wfl'.
	(java_get_real_method_name): Prototype deleted.
	* mangle.c (mangle_method_decl): Code accounting for WFLed
	method DECL_NAMEs deleted.
	* parse.h (GET_METHOD_NAME): Macro deleted.
	* parse.y (reset_method_name): Deleted.
	(method_header): Set DECL_FUNCTION_WFL.
	(check_abstract_method_header): Code accounting for WFLed method
	DECL_NAMEs deleted.
	(java_get_real_method_name): Deleted.
	(check_method_redefinition): Code accounting for WFLed method
	DECL_NAMEs deleted. Use DECL_FUNCTION_WFL.
	(java_check_regular_methods): Likewise.
	(java_check_abstract_methods): Likewise.
	(java_expand_classes): Don't call `reset_method_name.'
	(search_applicable_method_list): Use DECL_NAMEs instead of
	GET_METHOD_NAME.
	* typeck.c (lookup_do): Code accounting for WFLed method
	DECL_NAMEs deleted.

2001-01-25  Richard Earnshaw  <rearnsha@arm.com>

	* lex.c (java_read_char): Check for EOF from getc first.

2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class): Don't lay the superclass out if it's
	already being laid out.
	* jcf-parse.c (handle_innerclass_attribute): New function.
	(HANDLE_INNERCLASSES_ATTRIBUTE): Invoke
	handle_innerclasses_attribute.
	(jcf_parse): Don't load an innerclasses if it's already being
	laid out.
	* jcf-write.c (append_innerclass_attribute_entry): Static
	`anonymous_name' and its initialization deleted. `ocii' and `ini'
	to be zero for anonymous classes.

2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (set_constant_value): Set DECL_FIELD_FINAL_IUD if
	necessary.
	* jcf-parse.c (set_source_filename): Use
	MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC if necessary.

2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (build_jni_stub): Set DECL_CONTEXT on `meth_var' so it
	gets a unique asm name.

2001-01-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (HANDLE_END_METHODS): Nullify current_method.
	(HANDLE_START_FIELD): Invoke MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
	if necessary.
	(HANDLE_SYNTHETIC_ATTRIBUTE): New macro.
	* jcf-reader.c (get_attribute): Handle `Synthetic' attribute.
	* parse.y (lookup_package_type_and_set_next): Deleted.
	(resolve_package): Removed unnecessary code.
	(find_applicable_accessible_methods_list): `finit$' can't be
	inherited.
	* verify.c (pop_argument_types): Added missing prototype.

2001-01-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* config-lang.in: Disable java by default.

2001-01-23  Tom Tromey  <tromey@redhat.com>

	* gcj.texi (Copying): New node.
	Added copyright information.

2001-01-21  Per Bothner  <per@bothner.com>

	Various fixes to allow compiling a compressed .jar/.zip archive.
	* zipfile.h (struct ZipFileCache):  Replace by struct ZipFile.
	(struct ZipFile):  Add fields name and next (from  ZipFileCache).
	(struct ZipDirectory):  New field zipf points to owning ZipFile.
	* jcf.h (struct ZipDirectory):  Add forward declaration.
	(struct JCF):   Declare zipd field to have type struct ZipDirectory.
	Remove seen_in_zip and zip_offset fields.
	(JCF_SEEN_IN_ZIP):  New macro.
	* zextract.c (read_zip_archive):  Set ZipDirectory's zipf field.
	* jcf-io.c:  Change all ZipFileCache to ZipFile.
	(read_zip_member):  New function.
	(open_in_zip):  Call read_zip_member.
	* jcf-parse.c (find_in_current_zip):  Remove function.
	(read_class):  Merge in find_in_current_zip functionality.
	Call read_zip_member if needed.
	(parse_zip_file_entries):  Use read_zip_member.
	(process_zip_dir):  Update for removed and added JCF fields.
	(jcf_figure_file_type):  Re-use, don't copy initial ZipFile struct.

2001-01-21  Per Bothner  <per@bothner.com>

	Minor optimization of static ggc roots.
	* jcf-parse.c (parse_roots):  New static field.
	(current_field, current_method, current_file_list):  Replace by macros
	naming fields of parse_roots.
	(init_jcf_parse):  Combine 3 ggc_add_tree_root calls to 1.
	* class.c (class_roots):  New static field.
	(registered_class, fields_ident, info_ident, class_list):
	New macros naming fields of parse_roots.
	(build_static_field_ref):  Don't register roots here.
	(layout_class):  Static field list replaced by macro class_list.
	(init_class_processing):  Call ggc_add_tree_root for 4 roots.
	Initialize fields_ident and info_ident here.

2001-01-21  Per Bothner  <per@bothner.com>

	* jcf-parse.c (ggc_mark_jcf):  New function.
	(init_jcf_parse):  Register current_jcf as ggc root.

2001-01-21  Per Bothner  <per@bothner.com>

	* lang.c (put_decl_node):  Print method's name.

2001-01-21  Per Bothner  <per@bothner.com>

	* verify.c (VERIFICATION_ERROR_WITH_INDEX):  New macro.
	(verify_jvm_instructions):  Use it, for better error messages on loads.

2001-01-21  Per Bothner  <per@bothner.com>

	* verify.c (merge_type_state):  Still may have to merge even if
	LABEL_VERIFIED (label).

2001-01-21  Per Bothner  <per@bothner.com>

	* parse.y (method_header):  Don't set the DECL_NAME of a FUNCTION_DECL
	to a EXPR_WITH_FILE_LOCATION - that is just too fragile and wrong.

2001-01-19  Per Bothner  <per@bothner.com>

	* expr.c (pop_type_0):  Only return object_ptr_type_node on mismatch
	if expeting an interface type.  Refines Tom's change of 2000-09-12.

2001-01-18  Per Bothner  <per@bothner.com>

	* gcj.texi (Input Options): Mention .java files.

2001-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lang-options.h (-Wunsupported-jdk11): Removed.
	* lang.c (flag_not_overriding): Deleted.
	(flag_static_local_jdk1_1): Likewise.
	(lang_W_options): Removed "unsupported-jdk11" entry.
	* parse.y (java_check_methods): Removed dead code.

2001-01-17  Tom Tromey  <tromey@redhat.com>

	Changes suggested by Per Bothner:
	* gcj.texi (Input Options): Don't mention input files.
	(Code Generation): Updated --main information.
	(Invoking jcf-dump): Mention that --javap is incomplete.
	From Alexandre Petit-Bianco:
	(Warnings): Don't mention -Wunsupported-jdk11.
	My stuff:
	(Compatibility): Mention JDK 1.2-ness of libraries.
	(Resources): Mention resources used when writing gcj.

2001-01-17  Tom Tromey  <tromey@redhat.com>

	* gcj.texi: New file.
	* Make-lang.in ($(srcdir)/java/gcj.info): New target.
	(java.info): Depend on gcj.info.
	(java/gcj.dvi): New target.
	(java.dvi): Depend on gcj.dvi.
	(java.install-info): Wrote.

2001-01-16  Jeff Sturm  <jeff.sturm@appnet.com>

	* expr.c (java_lang_expand_expr): Use TREE_SYMBOL_REFERENCED after
	having called make_decl_rtl.

2001-01-14  Per Bothner  <per@bothner.com>

	Various patches to emit better messages on verification errors.
	* expr.c (push_type_0):  Return error indication on stack overflow,
	instead of callinfg fatal.
	(push_type):  Now just call push_type_0 (nd fatal on overflow).
	(pop_type_0):  Return detailed error message (in a char** argument).
	(pop_type):  If pop_type_0 fails, print error message.
	(pop_argument_types):  Moved to verify.c.
	* verify.c (pop_argument_types):  Moved from expr.c.
	Return a (possible) error message, rather than void.
	(POP_TYPE, POP_TYPE_CONV, PUSH_TYPE, PUSH_PENDING):  New macros.
	(verify_jvm_instruction):  Use new macros, improving error messages.
	For case OPCODE_astore use object_ptr_type_node.
	* java-tree.h (TYPE_UNDERFLOW, TYPE_UNEXPECTED):  New macros.
	(pop_type_0, push_type_0, pop_argument_types):  Update accordingly.

	* parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
	constant, return body without wrapper.  (Improves constant folding.)
	* lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.

2001-01-13  Per Bothner  <per@bothner.com>

	* expr.c (expand_java_field_op):  Assigning to a final field outside
	an initializer does not violate JVM spec, so should be warning, not
	error.  (Sun's verifier does not complain - though MicroSoft's does.)

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gjavah.c (version), jcf-dump.c (version): Update copyright year
	to 2001.

2001-01-11  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (resolve_expression_name): Permit instance variables from
	enclosing context in super constructor call.
	(resolve_qualified_expression_name): Permit enclosing class's qualified
	"this" in super constructor call.

2001-01-10  Mark Mitchell  <mark@codesourcery.com>

	* class.c (build_utf8_ref): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(build_class_ref): Likewise.
	(build_static_field_ref): Likewise.
	(get_dispatch_table): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* constants.c (build_constant_data_ref): Likewise.
	* decl.c (builtin_function): Likewise.
	(create_primitive_vtable): Likewise.
	* expr.c (build_known_method_def): Likewise.
	(build_jni_stub): Likewise.
	(java_lang_expand_expr): Likewise.

2001-01-10  Tom Tromey  <tromey@redhat.com>

	* jvspec.c (jvgenmain_spec): Omit -fencoding from cc1 invocation.

2001-01-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (lang_printable_name_wls): New prototype.
	* lang.c (put_decl_name): Removed dead code. Use DECL_CONTEXT
	rather than `current_class' to print type name. Don't prepend type
	names when printing constructor names.
	(lang_printable_name_wls): New function.
	* jcf-parse.c (jcf_parse_source): Pass NULL `file' argument to
	`build_expr_wfl', alway set EXPR_WFL_FILENAME_NODE.
	* parse.y (patch_method_invocation): Message tuned for constructors.
	(not_accessible_p): Grant `private' access from within
	enclosing contexts.

2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	All files with updated copyright when applicable.
	* Make-lang.in (JVGENMAIN_OBS): Removed java/mangle.o.
	* class.c (mangle_class_field): Function removed.
	(append_gpp_mangled_type, mangle_static_field, mangle_field): Likewise.
	(utf8_cmp, cxx_keyword_p): Moved to lex.c.
	(build_class_ref): Call `java_mangle_class_field' instead of
	`mangle_class_field.'
	(build_dtable_decl): Rewritten to call `java_mangle_vtable.'
	(layout_class): Call `java_mangle_decl' instead of
	`mangle_static_field.'
	(cxx_keywords): Initialized static array moved to `lex.c.'
	(layout_class_method): Changed leading comment. Simplified to
	call `java_mangle_decl.' Local `ptr' moved in for loop body.
	* decl.c (lang_mark_tree): Mark field `package_list.'
	* java-tree.h (TYPE_PACKAGE_LIST): New macro.
	(struct lang_type): New field `package_list.'
	(unicode_mangling_length): Prototype removed.
	(append_gpp_mangled_name, append_gpp_mangled_classtype,
	emit_unicode_mangled_name): Likewise.
	(cxx_keyword_p): New prototype.
	(java_mangle_decl, java_mangle_class_field,
	java_mangle_class_field_from_string, java_mangle_vtable): Likewise.
	* jcf-parse.c (jcf_parse_source): Constify `file' argument to
	`build_expr_wfl.'
	* jvgenmain.c (main_method_prefix): Global variable removed.
	(main_method_suffix): Likewise.
	(do_mangle_classname): New function.
	(main): Call it. Format changed to accommodate new mangling scheme.
	* lex.c: (utf8_cmp): Conditionally prototyped.
	(cxx_keywords): Moved from class.c, conditionally defined.
	(utf8_cmp, cxx_keyword_p): Likewise.
	* mangle.c (obstack.h, ggc.h): Included.
	(mangle_field_decl): New function.
	(mangle_method_decl, mangle_type, mangle_pointer_type,
	mangle_array_type, mangle_record_type,
	find_compression_pointer_match, find_compression_array_match,
	find_compression_record_match,
	find_compression_array_template_match, set_type_package_list,
	entry_match_pointer_p, emit_compression_string, init_mangling,
	finish_mangling, compression_table_add, mangle_member_name): Likewise.
	(mangle_obstack): New global.
	(MANGLE_RAW_STRING): New macro.
	(unicode_mangling_length): Turned static.
	(append_unicode_mangled_name): Renamed from
	`emit_unicode_mangled_name.'  Turned static. `mangle_obstack'
	replaces `obstack', removed from the parameter list.
	(append_gpp_mangled_name): Turned static. `mangle_obstack'
	replaces parameter `obstack', removed from the parameter list. Call
	`append_unicode_mangled_name' instead of `emit_unicode_mangled_name.
	(append_gpp_mangled_classtype): Removed.
	(compression_table, compression_next): New static variables.
	* parse.y (temporary_obstack): Extern declaration removed.

2001-01-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_binop): Compute missing type in error situations.

2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>

	* class.c (make_class_data): Push initial value for "arrayclass".
	* decl.c (init_decl_processing): Add new class field "arrayclass".

2001-01-05  Bryce McKinlay  <bryce@albatross.co.nz>

	From patha@softlab.ericsson.se:
	* parse.y (switch_label): Use build, not build1, to construct
	DEFAULT_EXPR.

2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* lang.c (lang_decode_option): Change -MA to -MP.
	* jcf-depend.c (jcf_dependency_add_target, jcf_dependency_set_target):
	Update to new prototype; do quote targets.
	(jcf_dependency_write): Update.

2000-12-22  Bryce McKinlay  <bryce@albatross.co.nz>

	Shorten primitive array allocation path:
	* decl.c (init_decl_processing): Use _Jv_NewPrimArray not _Jv_NewArray
	to create new primitive arrays.
	* expr.c (build_newarray): If generating native code, call
	soft_newarray_node with a reference to the primitive TYPE identifier
	instead of type_value.

2000-12-17  Bryce McKinlay  <bryce@albatross.co.nz>

	Fix for PRs gcj/312 and gcj/253:
	* parse.y (valid_ref_assignconv_cast_p): Load classes for source and
	dest if they arn't already.
	* class.c (layout_class): Call maybe_layout_super_class on
	superinterfaces also, but only if compiling from bytecode.

	Fix for PR gcj/373:
	* parse.y (create_class): Set ACC_STATIC if class is declared in an
	interface.

2000-12-15  Tom Tromey  <tromey@redhat.com>

	* jcf-parse.c (jcf_parse_source): Set wfl_operator if not already
	set.

2000-12-14  Andrew Haley  <aph@redhat.com>

	* boehm.c (mark_reference_fields): Change test to correctly detect
	bitmap overflow.

2000-12-15  Andreas Jaeger  <aj@suse.de>

	* config-lang.in (lang_dirs): Added.

2000-12-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (end_artificial_method_body): Fixed undefined behavior.
	Credits go to rth for finding it.

2000-12-13  Mike Stump  <mrs@wrs.com>

	* parse.y (check_static_final_variable_assignment_flag): Fix spelling.

2000-11-07  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (JAVA_LEX_C): Added chartables.h.
	* lex.c (java_ignorable_control_p): Removed.
	(java_letter_or_digit_p): Removed.
	(java_start_char_p): New function.
	(java_read_char): Return `int', not `unicode_t'.  Changed
	callers.
	(java_read_unicode): Likewise.
	(java_read_unicode_collapsing_terminators): Likewise.
	(java_get_unicode): Likewise.
	(java_new_lexer): Initialize hit_eof.
	(java_parse_end_comment): Take `int' argument.
	(java_parse_doc_section): Likewise.
	(java_parse_escape_sequence): Don't allow backlash-newline.
	Return `int'.
	* lex.h (JAVA_DIGIT_P): Removed.
	(_JAVA_LETTER_OR_DIGIT_P): Removed.
	(_JAVA_IDENTIFIER_IGNORABLE): Removed.
	(JAVA_START_CHAR_P): Renamed from JAVA_ID_CHAR_P.
	(JAVA_PART_CHAR_P): New macro.
	(UEOF): Now -1.
	(JAVA_CHAR_ERROR): Now -2.
	(java_lexer): New field `hit_eof'.
	* chartables.h: New file.
	* gen-table.pl: new file.

2000-11-20  Tom Tromey  <tromey@cygnus.com>
	    Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_lhs): Only allow compound assignment of
	reference type if type is String.

2000-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Make-lang.in (java/jcf-path.o:): libgcj.jar replaces libgcj.zip.
	jcf-path.c: Likewise.

2000-12-09  Anthony Green  <green@redhat.com>

	* zipfile.h (ZipDirectory): Declare size, uncompressed_size,
	filestart and filename_length as int values.

2000-12-07  Mo DeJong  <mdejong@redhat.com>

	* jcf-io.c (find_class): Correct the logic that tests to see if a
	.java file is newer than its .class file. The compiler was
	incorrectly printing a warning when file mod times were equal.

2000-12-07  Zack Weinberg  <zack@wolery.stanford.edu>

	* jvgenmain.c: Use ISPRINT not isascii.

2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (end_artificial_method_body): Fixed typo.

2000-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_method_invocation): Pick the correct enclosing
	context when creating inner class instances.
	Fixes gcj/332.

2000-11-26  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gjavah.c (version), jcf-dump.c (version), jv-scan.c (version):
	Update copyright year to 2000.

2000-11-23  Anthony Green  <green@redhat.com>

	* jcf-parse.c (init_jcf_parse): Register current_file_list root.
	Move current_file_list out of yyparse and make it static.

	* expr.c: Declare quick_stack and tree_list_free_list as static
	(init_expr_processing): Register quick_stack and
	tree_list_free_list roots.

2000-11-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (build_outer_field_access): New local `decl_ctx', use
	it. Check for field's context and current class immediate outer
	context inheritance.
	(outer_field_access_p): Consider fields inherited from the last
	enclosing context.
	(build_access_to_thisn): Stop at the last enclosing context if
	necessary.
	Fixes gcj/367.

2000-11-23  J"orn Rennecke <amylaar@redhat.com>

	* Make-lang.in (jvspec.o): Depend on $(CONFIG_H).

2000-11-22  Bryce McKinlay  <bryce@albatross.co.nz>

	* jcf-parse.c (get_constant): Call UT8_CHAR_LENGTH on `utf8', not the
	scratch buffer.

2000-11-20  Tom Tromey  <tromey@cygnus.com>

	* jv-scan.c (help): Document --complexity.
	(options): Added --complexity.
	(flag_complexity): New global.
	(main): Call `report'.
	* parse-scan.y (complexity): New global.
	(if_then_statement, if_then_else_statement,
	if_then_else_statement_nsi, switch_block_statement_group,
	while_expression, do_statement, for_begin, continue_statement,
	throw_statement, catch_clause, finally, method_invocation,
	conditional_and_expression, conditional_or_expression,
	conditional_expression): Update complexity.
	(reset_report): Reset complexity.
	(report): New function.

2000-11-20  Tom Tromey  <tromey@cygnus.com>

	* lex.c (yylex): Added STRICT_TK case.
	* parse.y (STRICT_TK): Added.
	* parse-scan.y (STRICT_TK): Added.
	* Make-lang.in ($(srcdir)/java/keyword.h): Added missing `\' and
	`;'.  Use 4, not 3, with -k option.  Correctly rename resulting
	file.
	* keyword.h: Rebuilt.
	* keyword.gperf (strictfp): Added.

2000-11-20  Tom Tromey  <tromey@cygnus.com>

	* lex.c (yylex): Recognize floating point constants with leading
	0.

2000-11-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* java-tree.h (cyclic_inheritance_report): Constify.
	* parse.y (cyclic_inheritance_report): Likewise.

2000-11-17  Zack Weinberg  <zack@wolery.stanford.edu>

	* parse.y (goal): Remove call to ggc_add_string_root.

2000-11-16  Zack Weinberg  <zack@wolery.stanford.edu>

	* jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
	Create string in scratch buffer, then pass to build_string.

2000-11-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* parse.y (issue_warning_error_from_context): Add
	ATTRIBUTE_PRINTF.

2000-11-11  Anthony Green  <green@redhat.com>

	* jcf-parse.c (process_zip_dir): Add finput parameter.
	(jcf_figure_file_type): Call process_zip_dir with appropriate
	argument.

2000-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* decl.c (copy_lang_decl): Use memcpy, not bcopy.
	* jcf-parse.c (jcf_figure_file_type): Likewise.

2000-11-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* parse.y (create_new_parser_context): Use memset () instead of
	bzero ().

2000-11-08  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (process_file): Only include gcj/cni.h when generating
	CNI stubs.

2000-11-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* expr.c (note_instructions), jcf-io.c (find_class), jcf-parse.c
	(init_outgoing_cpool), lex.c (java_init_lex): Use memset ()
	instead of bzero ().

2000-11-05  Tom Tromey  <tromey@cygnus.com>

	* lex.h (JAVA_FLOAT_RANGE_ERROR): Typo fix.
	* lex.c (IS_ZERO): New define.
	(java_perform_atof): Error on floating point underflow.

2000-11-04  Tom Tromey  <tromey@cygnus.com>

	* lex.c (java_parse_escape_sequence): Only read two octal
	characters if the first one is greater than 3.  Don't allow
	"octal" numbers to include the digits 8 or 9.

2000-11-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Make-lang.in (java.distdir): Remove.

2000-11-03  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (java.dvi): New target.
	Partial fix for PR other/567.

	* lang-options.h: Mention -Wout-of-date.
	* jcf-dump.c (flag_newer): New global.
	* gjavah.c (flag_newer): New global.
	* jcf-io.c (find_class): Only warn when flag_newer set.
	* lang.c (flag_newer): New global.
	(struct string_option): New declaration.
	(lang_W_options): New global.
	(process_option_with_no): New function.
	(lang_decode_option): Use it.

	* class.c (cxx_keyword_p): Accept keywords with trailing `$'s.
	* gjavah.c (cxx_keyword_subst): Handle any number of trailing
	`$'.

	* lex.h (_JAVA_IDENTIFIER_IGNORABLE): New macro.
	(JAVA_ID_CHAR_P): Also try java_ignorable_control_p.
	* lex.c (java_read_unicode): Removed `term_context' argument.
	Recognize any number of `u' in `\u'.
	(java_read_unicode_collapsing_terminators): New function.
	(java_get_unicode): Use it.
	(java_lineterminator): Removed.
	(yylex): Produce error if character literal is newline or single
	quote.  Return if eof found in middle of `//' comment.  EOF in
	`//' comment is only an error if pedantic.
	(java_ignorable_control_p): New function.
	(java_parse_end_comment): Return if eof found in middle of
	comment.
	Include flags.h.
	* jv-scan.c (pedantic): New global.

2000-10-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (outer_field_access_p): Inherited fields aren't
	consider outer fields.
	(maybe_build_thisn_access_method): Use
	PURE_INNER_CLASS_TYPE_P instead of INNER_CLASS_TYPE_P.
	(resolve_expression_name): Trigger an error if a static field
	is being accessed as an outer field.

2000-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Make-lang.in (LIBGCJ_ZIP_FILE): Define with `$(prefix)'.
	Fixes gcj/365.

2000-10-27  Zack Weinberg  <zack@wolery.stanford.edu>

	* Make-lang.in: Move all build rules here from Makefile.in,
	adapt to new context.  Wrap all rules that change the current
	directory in parentheses.  Expunge all references to $(P).
	When one command depends on another and they're run all at
	once, use && to separate them, not ;.  Add OUTPUT_OPTION to
	all object-file generation rules.  Delete obsolete variables.

	* Makefile.in: Delete.
	* config-lang.in: Delete outputs= line.

2000-10-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_method_invocation): NULLify this_arg when already
	inserted.
	(maybe_use_access_method): Handle call to methods unrelated to the
	current class. Fixed comment.
	Fixes gcj/361.

2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
	scope.

2000-10-24  Tom Tromey  <tromey@cygnus.com>

	* lex.c (java_new_lexer): Initialize new fields.  Work around
	broken iconv() implementations.
	(java_read_char): Swap bytes if required.  Use fallback decoder if
	required.
	(byteswap_init, need_byteswap): New globals.
	(java_destroy_lexer): Only close iconv handle if it is in use.
	* lex.h (java_lexer): New fields read_anything, byte_swap,
	use_fallback.
	Made out_buffer unsigned.

2000-10-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (register_incomplete_type): Include JDEP_FIELD as a case
	where an enclosing context can be set on the jdep.
	(do_resolve_class): Fixed identation.

2000-10-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (NEED_PEEK_ATTRIBUTE, NEED_SKIP_ATTRIBUTE): Define

	* jcf-reader.c (peek_attribute, skip_attribute): Only define
	when requested.

	* parse.h (yyerror): If JC1_LITE, mark with ATTRIBUTE_NORETURN.

	* verify.c (CHECK_PC_IN_RANGE): Cast result of stmt-expr to void.

2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (OP1): Update `last_bc'.
	(struct jcf_block): Fixed indentation and typo in comments.  New
	field `last_bc'.
	(generate_bytecode_insns): Insert `nop' if `jsr' immediately
	follows `monitorenter'.
	* parse.y (patch_synchronized_statement): New local `tmp'. Call
	`patch_string'.
	Fixes gcj/232.

2000-10-16  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (lang_specific_driver): Recognize -MF and -MT.
	* lang-specs.h: Added %{MA}, %{MF*}, %{MT*}.
	* lang-options.h: Added -MA, -MT, -MF..
	* lang.c (lang_decode_option): Recognize -MA, -MT, -MF.
	(DEPEND_TARGET_SET): New macro.
	(DEPEND_FILE_ALREADY_SET): Likewise.
	(init_parse): Handle new flags.
	* jcf.h (jcf_dependency_print_dummies): Declare.
	* Make-lang.in (s-java): Added mkdeps.o.
	* Makefile.in (BACKEND): Added mkdeps.o.
	(../gcjh$(exeext)): Added mkdeps.o.
	(../jcf-dump$(exeext)): Added mkdeps.o.
	* jcf-depend.c: Include mkdeps.h.
	(struct entry, dependencies, targets, MAX_OUTPUT_COLUMNS,
	add_entry): Removed.
	(jcf_dependency_reset): Rewrote.
	(dependencies): New global.
	(jcf_dependency_set_target): Rewrote.
	(jcf_dependency_add_target): Likewise.
	(jcf_dependency_add_file): Likewise.
	(munge): Removed.
	(print_ents): Removed.
	(jcf_dependency_write): Rewrote.
	(print_dummies): New global.
	(jcf_dependency_print_dummies): New function
	(jcf_dependency_write): Call deps_dummy_targets if required.

2000-10-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* gjavah.c (add_class_decl): Removed unused variables `tname',
	`tlen' and `name_index'.
	* java-tree.h (BUILD_FILENAME_IDENTIFIER_NODE): New macro.
	* jcf-parse.c (jcf_parse_source): Use it and set EXPR_WFL_FILENAME
	in `wfl_operator' with value.
	(yyparse): Use BUILD_FILENAME_IDENTIFIER_NODE.
	(jcf_figure_file_type): Fixed identation.
	* lex.c (java_get_line_col): Use EOF. Tuned `^' placement.
	* parse.y (analyze_clinit_body): New function.
	(static_initializer:): Reset `current_static_block'.
	(java_parser_context_restore_global): Set EXPR_WFL_FIILENAME_NODE in
	`wfl_operator' with new value.
	(lookup_cl): Use EXPR_WFL_FILENAME.
	(maybe_yank_clinit): Handle bogus <clinit> bodies, call
	analyze_clinit_body.
	(build_outer_field_access): Access to this$<n> built from
	current_class, not its outer context.
	(build_access_to_thisn): Fixed leading comment. Tidied things up.
	(resolve_qualified_expression_name): Handle `T.this' and `T.this.f()'.
	(patch_method_invocation): Use `is_static_flag' when already
	initialized.
	(patch_newarray): Removed assignment in ternary operator.

2000-10-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* except.c (free_eh_ranges): Don't free `whole_range'.

2000-10-15  Anthony Green  <green@redhat.com>

	* decl.c (init_decl_processing): Call init_class_processing before
	anything else.

2000-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Fixed leading comment. Use
	LOCAL_FINAL_P.
	* decl.c (push_jvm_slot): Use MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
	(give_name_to_locals): Likewise.
	(lang_mark_tree): Handle FIELD_DECL. Register `am' and `wfl'
	fields in lang_decl_var.
	* java-tree.h (DECL_FUNCTION_SYNTHETIC_CTOR,
	DECL_FUNCTION_ALL_FINAL_INITIALIZED): New macros.
	(FIELD_INNER_ACCESS): Removed ugly cast, macro rewritten.
	(FIELD_INNER_ACCESS_P, DECL_FIELD_FINAL_IUD, DECL_FIELD_FINAL_LIIC,
	DECL_FIELD_FINAL_IERR, DECL_FIELD_FINAL_WFL): New macros.
	(LOCAL_FINAL): Rewritten.
	(LOCAL_FINAL_P, FINAL_VARIABLE_P, CLASS_FINAL_VARIABLE_P
	MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC): New macros.
	(struct lang_decl): Fixed comments. Added `synthetic_ctor' and
	`init_final' fields.
	(struct lang_decl_var): Fixed leading comment. Added `am', `wfl',
	`final_uid', `final_liic', `final_ierr' and `local_final' fields.
	(TYPE_HAS_FINAL_VARIABLE): New macro.
	(struct lang_type): Added `afv' field.
	* parse.y (check_static_final_variable_assignment_flag): New function.
	(reset_static_final_variable_assignment_flag): Likewise.
	(check_final_variable_local_assignment_flag): Likewise.
	(reset_final_variable_local_assignment_flag): Likewise.
	(check_final_variable_indirect_assignment): Likewise.
	(check_final_variable_global_assignment_flag): Likewise.
	(add_inner_class_fields): Use LOCAL_FINAL_P.
	(register_fields): Handle local finals and final variables.
	(craft_constructor): Set DECL_FUNCTION_SYNTHETIC_CTOR.
	(declare_local_variables): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
	(source_start_java_method): Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC
	on local finals.
	(java_complete_expand_methods): Loop to set
	TYPE_HAS_FINAL_VARIABLE. Call
	`reset_final_variable_local_assignment_flag' and
	`check_final_variable_local_assignment_flag' accordingly before
	and after constructor expansion. Call
	`reset_static_final_variable_assignment_flag'
	before expanding <clinit> and after call
	`check_static_final_variable_assignment_flag' if the
	current_class isn't an interface. After all methods have been
	expanded, call `check_final_variable_global_assignment_flag' and
	`check_static_final_variable_assignment_flag' if the current class
	is an interface.
	(maybe_yank_clinit): Fixed typo in comment.
	(build_outer_field_access_methods): Removed old sanity check. Use
	FIELD_INNER_ACCESS_P. Call MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC.
	Don't create access methods for finals.
	(resolve_field_access): Use `CLASS_FINAL_VARIABLE_P'.
	(java_complete_tree): Likewise. Reset DECL_FIELD_FINAL_IUD if
	existing DECL_INIT has been processed.
	(java_complete_lhs): Likewise.
	(check_final_assignment): Filter input on `lvalue''s TREE_CODE.
	Test for COMPONENT_REF to get to the FIELD_DECL. Implemented new
	logic.
	(patch_assignment): Use LOCAL_FINAL_P.
	(fold_constant_for_init): Reset DECL_FIELD_FINAL_IUD if
	DECL_INITIAL is nullified.
	Fixes gcj/163.

2000-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (parse.c, parse-scan.c): Create atomically.

	* Makefile.in (parse.c, parse-scan.c): Likewise.

2000-10-12  Mark Mitchell  <mark@codesourcery.com>

	* class.c (temporary_obstack): Remove.
	(make_class): Don't mess with obstascks.
	(push_class): Likewise.
	(set_super_info): Likewise.
	(add_method_1): Likewise.
	(add_method): Likewise.
	(add_field): Likewise.
	(build_utf8_ref): Likewise.
	(build_class_ref): Likewise.
	(build_static_field_ref): Likewise.
	(finish_class): Likewise.
	(push_super_field): Likewise.
	(layout_class): Likewise.
	(layout_class_methods): Likewise.
	(init_class_processing): Likewise.
	* constants.c (get_tag_node): Likewise.
	(build_constant_data_ref): Likewise.
	* decl.c (ggc_p): Remove.
	(copy_lang_decl): Use ggc_alloc.
	(complete_start_java_method): Don't mess with obstacks.
	(start_java_method): Likewise.
	(end_java_method): Likewise.
	* except.c (link_handler): Use xmalloc.
	(free_eh_ranges): New function.
	(method_init_exceptions): Use it.
	(add_handler): Use xmalloc.
	(expand_start_java_handler): Don't mess with obstacks.
	(prepare_eh_table_type): Likewise.
	(expand_end_java_handler): Likewise.
	* expr.c (push_value): Likewise.
	(create_label_decl): Likewise.
	(build_jni_stub): Likewise.
	(java_lang_expand_expr): Likewise.
	(note_instructions): Use xrealloc.
	(java_push_constant_from_pool): Don't mess with obstacks.
	(process_jvm_instruction): Likewise.
	* java-tree.h (cyclic_inheritance_report): Remove duplicate
	declaration.
	* jcf-parse.c (get_constant): Don't mess with obstacks.
	(read_class): Likewise.
	(jcf_parse): Likewise.
	* lex.c (expression_obstack): Remove.
	(java_lex): Don't use obstack_free.
	* parse.h (exit_java_complete_class): Don't mess with obstacks.
	(MANGLE_OUTER_LOCAL_VARIABLE_NAME): Adjust.
	(MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): Likewise.
	(MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STRING): Likewise.
	* parse.y (gaol): Add more GC roots.
	(add_inner_class_fields): Adjust calls to MANGLE_* macros.
	(lookup_field_wrapper): Likewise.
	(obtain_incomplete_type): Don't mess with obstacks.
	(build_alias_initializer_parameter_list): Adjust calls to MANGLE_*
	macros.
	(craft_constructor): Don't mess with obstacks.
	(safe_layout_class): Likewise.
	(java_complete_class): Likewise.
	(source_end_java_method): Likewise.
	(build_outer_field_access_methods): Likewise.
	(build_outer_method_access_method): Likewise.
	(maybe_build_thisn_access_method): Likewise.
	(build_dot_class_method_invocation): Likewise.
	(java_complete_tree): Likewise.
	(java_complete_lhs): Likewise.
	(do_merge_string_cste): Likewise.
	(patch_string_cst): Likewise.
	(array_constructor_check_entry): Likewise.
	* typeck.c (build_java_array_type): Likewise.
	(parse_signature_string): Likewise.
	(build_java_signature): Likewise.

2000-10-12  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/356:
	* gjavah.c (add_class_decl): Don't special-case inner classes.
	(add_namelet): Likewise.

2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>

	* java-tree.h: Constify current_encoding.
	* lang.c: Constify current_encoding.

2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>

	* jvgenmain.c (class_mangling_suffix): Omit `.'.
	(main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.

2000-10-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
	patch. Fixes gcj/340.

2000-10-10  Tom Tromey  <tromey@cygnus.com>

	* lex.c (java_new_lexer): Initialize out_first and out_last
	fields.
	* lex.h (java_lexer): Added out_buffer, out_first, out_last.

2000-10-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (pop_current_osb): New function.
	(array_type:): Use `dims:', changed actions
	accordingly. Suggested by Anthony Green.
	(array_creation_expression:): Used pop_current_osb.
	(cast_expression:): Likewise.
	(search_applicable_method_list): Fixed indentation.

2000-10-08  Anthony Green  <green@redhat.com>

	* parse.y (array_type_literal): Remove production.
	(type_literals): Refer to array_type, not array_type_literal.

2000-10-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	Patch contributed by Corey Minyard.
	* decl.c (check_local_named_variable): New function.
	(tree check_local_unnamed_variable): Likewise.
	(find_local_variable): Splitted. Call check_local_{un}named_variable.

2000-10-07  Anthony Green  <green@redhat.com>

	* class.c (layout_class): Handle case where superclass can't be
	layed out yet.

2000-10-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (keyword.h): Refer to GNU FTP site for updated
	gperf.

2000-10-05  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (jvgenmain_spec): Added `-fdollars-in-identifiers'.
	* jvgenmain.c (class_mangling_prefix): Removed.
	(class_mangling_suffix): New global.
	(main): Use it.
	* gjavah.c (cxx_keyword_subst): Mangle C++ keywords by appending
	`$'.
	(print_method_info): Handle overrides for static and final
	methods.
	(process_file): Generate declaration for class object field.
	* class.c (cxx_keywords): New array.
	(utf8_cmp): New function.
	(cxx_keyword_p): New function.
	(layout_class_method): Mangle C++ keywords by appending `$'.
	(mangle_field): New function.
	(mangle_class_field): Use mangle_field.  Mangle class name as
	`class$'.
	(mangle_static_field): Use mangle_field.

2000-10-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (find_local_variable): Removed uncessary type check and
	fixed range check typo. From Corey Minyard.

2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (give_name_to_locals): New local `code_offset'. Call
	`maybe_adjust_start_pc'.
	* expr.c (note_instructions): New function.
	(expand_byte_code): Don't collect insn starts here.
	(peek_opcode_at_pc): New function.
	(maybe_adjust_start_pc): Likewise.
	* java-tree.h (maybe_adjust_start_pc): Declare.
	(note_instructions): Likewise.
	* jcf-parse.c (parse_class_file): Call `note_instructions'.

2000-09-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (field_access:): Fixed indentation.
	(qualify_ambiguous_name): Properly qualify `this.a[b].c'.

2000-09-07  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/307:
	* parse.y (patch_binop): Use JNUMERIC_TYPE_P, not
	JPRIMITIVE_TYPE_P, for arithmetic operators.
	(patch_method_invocation): Indentation fix.
	(try_builtin_assignconv): Handle boolean specially.  Fixed typo.
	(valid_builtin_assignconv_identity_widening_p): Handle boolean.
	(do_unary_numeric_promotion): Cleaned up code.
	(valid_cast_to_p): Handle boolean correctly.

2000-09-27  Tom Tromey  <tromey@cygnus.com>

	* lex.c (java_read_unicode): Reset bs_count when finished with
	`\u' sequence.

2000-10-01  Mark Mitchell  <mark@codesourcery.com>

	Convert to GC.
	* Make-lang.in (s-java): Don't depend on ggc-callbacks.o.
	* Makefile.in (BACKEND): Don't include ggc-callbacks.o.
	(typeck.o): Depend on ggc.h.
	* class.c (add_method_1): Use GC functions for allocation.
	(init_class_processing): Register roots.
	* decl.c (ggc_p): Set to 1.
	(pending_local_decls): Make it static.
	(push_jvm_slot): Use GC functions for allocation.
	(init_decl_processing): Register roots.
	(give_name_to_locals): Use GC functions for allocation.
	(lang_mark_tree): New function.
	* java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Use GC
	functions for allocation.
	* jcf-parse.c (jcf_parse_source): Use ggc_strdup.
	* lex.c (java_lex): Use build_string, rather than replicating it
	inline.
	* parse.y (goal): Add more roots.
	(mark_parser_ctxt): New function.
	* typeck.c: Include ggc.h.

2000-09-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (maybe_yank_clinit): Also keep <clinit> if its body
	contains something else than MODIFY_EXPR.

2000-09-23  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (JAVA_SRCS): Include java-tree.h.
	* Makefile.in (parse.o): Depend on ggc.h.
	(class.o): Likewise.
	(constants.o): Likewise.
	(decl.o): Likewise.
	(expr.o): Likewise.
	(jcf-parse.o): Likewise.
	(jcf-write.o): Likewise.
	(mangle.o): Likewise.
	* class.c: Include ggc.h.
	(build_static_field_ref): Register GC roots.
	(layout_class): Likewise.
	(init_class_processing): Likewise.
	* constants.c: Include ggc.h.
	(current_constant_pool_data_ref): Remove.
	(tag_nodes): Move it to ...
	(get_tag_node): ... here.  Register GC roots.
	* decl.c: Include ggc.h.  Remove many global tree definitions.
	(throw_node): Define.
	(java_global_trees): Likewise.
	(predef_filenames): Make the size a constant.
	(init_decl_processing): Adjust accordingly.
	(init_decl_processing): Call init_jcf_parse.  Register GC roots.
	* expr.c: Include ggc.h.
	(init_expr_processing): Register GC roots.
	(build_invokeinterface): Likewise.
	* java-tree.h: Replace extern tree declarations with macros.
	(java_global_trees): New variable.
	(java_tree_index): New enumeration.
	(init_jcf_parse): Declare.
	* jcf-parse.c: Include ggc.h.
	(current_class): Remove declaration.
	(main_class): Likewise.
	(all_class_list): Likewise.
	(predefined_filename_p): Adjust for constant size of
	predef_filenames.
	(init_jcf_parse): New function.
	* jcf-write.c: Include ggc.h.
	(generate_classfile): Register GC roots.
	(append_synthetic_attribute): Likewise.
	(append_innerclass_attribute_entry): Likewise.
	* lang.c: Include ggc.h.
	(lang_print_error): Register GC roots.
	* parse.h (struct parser_ctxt): Rename fields to avoid conflicts
	with macros.
	* parse.y: Include ggc.h.
	(wfl_operator): Remove.
	(goal): Register GC roots.
	(java_pop_parser_context): Adjust for new field names.
	(java_parser_context_save_global): Likewse.
	(java_parser_context_restore_global): Likewise.
	(java_parser_context_suspend): Likewise.
	(java_parser_context_resume): Likewise.
	(verify_constructor_circularity): Register GC roots.
	(lookup_cl): Likewise.
	(java_reorder_fields): Likewise.
	(build_current_this): Likewise.
	(class_in_current_package): Likewise.
	(argument_types_convertible): Likewise.
	(patch_cast): Rename wfl_op parameter to avoid macro conflicts.

2000-09-14  Tom Tromey  <tromey@cygnus.com>

	* lex.h: Use HAVE_ICONV_H, not HAVE_ICONV.

2000-09-13  Tom Tromey  <tromey@cygnus.com>

	* jcf-parse.c: Include <locale.h>.
	* jv-scan.c: Include <locale.h>.

2000-09-12  Tom Tromey  <tromey@cygnus.com>

	* expr.c (pop_type_0): Return `Object' if trying to merge two
	interface types.
	* verify.c (merge_types): Don't return `TYPE_UNKNOWN' for
	interface types; `Object' is always a valid supertype.

2000-09-12  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/33:
	* jv-scan.c (help): Document --encoding.
	(options): Added `encoding' entry.
	(OPT_ENCODING): New define.
	(main): Handle --encoding.
	Include <langinfo.h> if nl_langinfo exists.
	* lang-options.h: Document --classpath, --CLASSPATH, --main, and
	--encoding.
	* jcf-parse.c Include <langinfo.h> if we have nl_langinfo.
	(parse_source_file): Correctly call java_init_lex.  Added `finput'
	argument.  Use nl_langinfo to determine default encoding.
	* java-tree.h (current_encoding): Declare.
	* parse.y (java_parser_context_restore_global): Don't restore
	`finput'.
	(java_parser_context_save_global): Don't set `finput' field.
	(java_pop_parser_context): Don't restore `finput'.  Free old lexer
	if required.
	* lang.c (current_encoding): New global.
	(lang_decode_option): Recognize `-fencoding='.
	(finish_parse): Don't close finput.
	* parse.h (struct parser_ctxt): Removed `finput' and
	`unget_utf8_value' fields.  Added `lexer' field.
	(java_init_lex): Fixed declaration.
	* lex.c (java_new_lexer): New function.
	(java_destroy_lexer): Likewise.
	(java_read_char): Added `lex' argument.  Handle iconv case.
	(java_read_unicode): Added `lex' argument.  Count backslashes in
	lexer structure.
	(java_init_lex): Added `finput' and `encoding' arguments.  Set
	`lexer' field in ctxp.
	(BAD_UTF8_VALUE): Removed.
	(java_lex): Handle seeing UEOF in the middle of a string literal.
	* lex.h: Include <iconv.h> if HAVE_ICONV defined.
	(java_lexer): New structure.
	(UNGETC): Removed.
	(GETC): Removed.
	(DEFAULT_ENCODING): New define.
	(java_destroy_lexer): Declare.

2000-09-12  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/343:
	* lex.c (java_init_lex): Initialize java_io_serializable.
	* parse.y (java_io_serializable): New global.
	(valid_ref_assignconv_cast_p): An array can be cast to
	serializable.

2000-09-10  Zack Weinberg  <zack@wolery.cumb.org>

	* decl.c, expr.c: Include defaults.h if not already included.
	Don't define the *_TYPE_SIZE macros.

2000-09-09  Geoffrey Keating  <geoffk@cygnus.com>

	* typeck.c (build_java_array_type): Correct first parameter
	in ADJUST_FIELD_ALIGN invocation.

2000-09-06  Tom Tromey  <tromey@cygnus.com>

	* lang-specs.h: Also recognize `-femit-class-files'.

2000-09-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* verify.c (merge_types): Load the types to merge if necessary.

2000-09-02  Anthony Green  <green@redhat.com>

	* jcf-io.c: Include zlib.h.
	(open_in_zip): Read compressed class file archives.
	* zipfile.h (ZipDirectory): Add uncompressed_size and
	compression_method fields.
	* zextract.c (read_zip_archive): Collect file compression info.

2000-08-15  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (do_resolve_class): Also explore superclasses of
	intermediate enclosing contexts when searching for inner classes.

2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (variable_declarator_id:): Better error message.
	(expression_statement:): Use YYNOT_TWICE.
	(cast_expression:): Likewise.
	(assignment:): Likewise.

2000-08-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (do_merge_string_cste): New locals. Create new
	STRING_CSTs each time, use memcpy. Fixes gcj/311.

2000-08-07  Hans Boehm  <boehm@acm.org>

	* boehm.c (mark_reference_fields): Set marking bits for all words in
	a multiple-word record.
	(get_boehm_type_descriptor): Use the procedure marking descriptor for
	java.lang.Class.

2000-08-31  Mike Stump  <mrs@wrs.com>

	* Make-lang.in (jc1$(exeext), gcjh$(exeext), jv-scan$(exeext),
	jcf-dump$(exeext)): Make parallel safe.

2000-08-29  Zack Weinberg  <zack@wolery.cumb.org>

	* jcf-parse.c (set_source_filename): Constify a char *.
	* jcf-write.c (append_innerclasses_attribute,
	make_class_file_name): Constify a char *.  Don't recycle a
	variable for an unrelated purpose.
	* parse.y: (build_alias_initializer_parameter_list): Constify a char *.
	(breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.

2000-08-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (can_widen_reference_to): Fixed indentation.
	* java-tree.h (CLASS_METHOD_CHECKED_P): Added leading comment.
	* parse.y: `finit$' replaces `$finit$' in comments.
	(try_builtin_assignconv): Fixed leading comment.

2000-08-25  Greg McGary  <greg@mcgary.org>

	* gjavah.c (cxx_keyword_subst): Use ARRAY_SIZE.

2000-08-24  Greg McGary  <greg@mcgary.org>

	* lang.c (lang_decode_option): Use ARRAY_SIZE.
	* parse.y (BINOP_LOOKUP): Likewise.

2000-08-22  Andrew Haley  <aph@cygnus.com>

	* javaop.h (WORD_TO_INT): Mask lower 32 bits of a jword before
	sign extending. Fixes gcj/321.
	* jcf-parse.c (get_constant): Mask lower 32 bits of a jint before
	combining to make a jlong. Fixes gcj/321.

2000-08-21  Nix  <nix@esperi.demon.co.uk>

	* lang-specs.h: Do not process -o or run the assembler if
	-fsyntax-only.

2000-08-16  Andrew Haley  <aph@cygnus.com>

	* typeck.c (build_java_array_type): Rewrite code to do array
	alignment.  Take into account back-end macros when aligning array
	data.  Remove setting of TYPE_USER_ALIGN; Java doesn't allow the
	user to set alignment. Fixes gcj/252 and 160.

2000-08-09  Tom Tromey  <tromey@cygnus.com>

	* parse.y (check_abstract_method_definitions): Now return `int'.
	Check implemented interfaces.  Fixes PR gcj/305.

	* parse.y (patch_switch_statement): Disallow `long' in switch
	expressions.  Fixes PR gcj/310.

2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (finit_leg_identifier_node): New global.
	(init_decl_processing): Use `finit$' to initialize
	finit_identifier_node. Use `$finit$' to initialize
	finit_leg_identifier_node.
	* expr.c (expand_java_field_op): Use ID_FINIT_P.
	* java-tree.h (finit_identifier_node): Changed attached comment.
	(finit_leg_identifier_node): New declaration.
	(ID_FINIT_P): Take finit_identifier_node and
	finit_leg_identifier_node into account. This is a backward
	compatibility hack.

2000-08-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_conditional): Re-installed lost
	Jan 6 2000 patch.
	(generate_bytecode_insns): Check `nargs' before emitting it.
	* verify.c (merge_type_state): Fixed typo.
	* ChangeLog: Fixed typo in some jcf-write.c entries mentioning
	generate_bytecode_{conditional,insns}.

2000-08-13  Anthony Green  <green@redhat.com>

	* check-init.c (check_init): Add case for BIT_FIELD_REF (required
	for -pg builds).

2000-08-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (maybe_layout_super_class): Fixed indentation.
	* java-tree.h (CLASS_METHOD_CHECKED_P): New macro.
	(java_check_methods): New function declaration.
	* jcf-parse.c (get_constant): Let `char_len' go up to 3. Use `str'
	instead of `str_ptr'.
	* jcf-write.c (generate_bytecode_insns): Emit number the of args
	of a `invokeinterface' at the right time.
	* parse.h (WFL_STRIP_BRACKET): New macro.
	(SET_TYPE_FOR_RESOLUTION): Use it.
	* parse.y (build_unresolved_array_type): Reuse `type_or_wfl'.
	(check_class_interface_creation): Don't check for cross package
	innerclass name clashes.
	(method_header): Behave properly if MDECL is `error_mark_node'.
	(method_declarator): Return `error_mark_node' if bogus current
	class.
	(resolve_class): Apply WFL_STRIP_BRACKET on `cl' if necessary.
	(resolve_and_layout): New local `decl_type', set and used. Call
	java_check_methods.
	(java_check_methods): New method.
	(java_layout_classes): Use it.
	(resolve_qualified_expression_name): No EH check necessary in
	access$<n>.
	(java_complete_lhs): Use VAR_DECL's DECL_INITIAL when evaluating
	`case' statement.
	(patch_assignment): Set DECL_INITIAL on integral final local.

2000-08-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (flag_extraneous_semicolon): New extern.
	* lang-options.h: (-Wextraneous-semicolon): New option.
	* lang.c (flag_redundant): Fixed typo in leading comment.
	(flag_extraneous_semicolon): New global.
	(lang_decode_option): Set `flag_extraneous_semicolon' when
	-Wall. Decode `-Wextraneous-semicolon'.
	* parse.y (type_declaration:): Removed `SC_TK' hack, added
	`empty_statement' rule.
	(class_body_declaration): Likewise.
	(method_body:): Accept `;' as a method body.
	(static_initializer:): Removed `SC_TK' hack.
	(constructor_block_end:): Likewise.
	(empty_statement:): Report deprecated empty declaration. Fixes
	gcj/295

2000-08-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (build_dot_class_method_invocation): Changed parameter
	name to `type'. Build signature from `type' and convert it to a
	STRING_CST if it's an array.
	(patch_incomplete_class_ref): `build_dot_class_method_invocation'
	to use `ref_type' directly.

2000-08-06  Ovidiu Predescu  <ovidiu@cup.hp.com>

	* lang-options.h: Added a comma after the last element to avoid
	syntax errors when other languages define additional options.

2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>

	* Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
	* Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
	(jc1): Link with $(BACKEND).
	(jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).

2000-08-02  Zack Weinberg  <zack@wolery.cumb.org>

	* jvspec.c: Adjust type of second argument to
	lang_specific_driver, and update code as necessary.

	* class.c (build_dtable_decl): Initialize dummy.

2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (maybe_yank_clinit): When generating bytecode: non empty
	method bodies not to rule out discarding `<clinit>'; don't use
	<clinit> to initialize static fields with constant initializers.

2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* gjavah.c (print_method_info): Added `synth' parameter. Skip
	synthetic methods.
	(method_synthetic): New global.
	(HANDLE_METHOD): Recognize synthetic method and tell
	`print_method_info' about it.
	(HANDLE_END_METHOD): Do not issue an additional `;\n' if we're
	processing a synthetic method.
	* jcf-reader.c (skip_attribute): New function.
	( skip_attribute): Likewise.

2000-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (build_outer_field_access): Fixed comments.
	(fix_constructors): Emit the initialization of this$<n> before
	calling $finit$.
	(resolve_qualified_expression_name): Build an access to `decl' if
	necessary.

2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (curent_class): Non longer const.
	(inner_qualifier, inner_qualifier_length): Deleted.
	(current_class_length): New global.
	(bracket_count): Fixed typo in leading comment.
	(anonymous_count): New global.
	(class_instance_creation_expression:): Handle anonymous classes.
	(anonymous_class_creation:): New rule.
	(push_class_context): Rewritten.
	(pop_class_context): Likewise.
	(INNER_QUALIFIER): Macro deleted.
	(report_class_declaration): call `push_class_context' when
	entering the function. `fprintf' format modified not to use
	INNER_QUALIFIER.
	(report_class_declaration): Assign `package_name' and
	`current_class' to NULL separately.

2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (build_invokeinterface): Call layout_class_methods on
	target interface.

2000-07-27  Tom Tromey  <tromey@cygnus.com>
	    Anthony Green  <green@cygnus.com>
	    Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (make_class_data): Create vtable for abstract classes.
	(get_dispatch_table): Changed to cope with abstract classes.

2000-07-27  Tom Tromey  <tromey@cygnus.com>

	* parse.y (patch_method_invocation): Don't reverse the argument
	list when dealing with anonymous class constructors. Fixed typo in
	comment.

2000-07-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (build_alias_initializer_parameter_list): Reverse
	crafted list when building aliases for anonymous class
	constructors.

2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (jdep_resolve_class): Don't bother checking potential
	innerclass access if `decl' is NULL.
	(find_in_imports_on_demand): TREE_PURPOSE of `import' contains the
	WFL.

2000-07-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.c: Remove (again.)

2000-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (find_as_inner_class): Removed 2000-07-19 patches.
	* jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Local `decl' moved
	outside the `if' statement, alias to innerclass removed, `decl'
	used to mark the class complete.

2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (simple_name:): Fixed typo in error message.

2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_lhs): LOOP_EXPR:, SWITCH_EXPR: the node
	or its first operand can be error marks.

2000-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (SET_TYPE_FOR_RESOLUTION): Use GET_CPC.
	* parse.y (method_header): Likewise.

2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (process_imports): Consider that one might be trying to
	import an innerclass. Fixes gcj/254

2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (find_as_inner_class): Handle the case where the
	enclosing context of an innerclass has been loaded as bytecode.

2000-07-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (simple_name:): Reject `$' in type names.
	(resolve_type_during_patch): Use `type' as a second
	argument to resolve_no_layout. Fixes gcj/257.

2000-07-18  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (find_most_specific_methods_list): Select the only
	non-abstract method even if max has been set.
	Fixes gcj/285, gcj/298.

2000-07-18  Jeff Sturm  <jeff.sturm@appnet.com>

	* lang-specs.h: Added %(jc1) to java compiler options.

2000-07-14  Zack Weinberg  <zack@wolery.cumb.org>

	* .cvsignore: New file.

2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (not_accessible_p): Access granted to innerclasses
	(indirectly) extending the reference type. Fixes gcj/249.

2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_method_invocation): Fixed comment.
	(maybe_use_access_method): Build this$<n>s to the context of the
	target method, or a type that extends it. Fixes gcj/242.

2000-07-13  Mark Mitchell  <mark@codesourcery.com>

	* parse.c: Remove.

2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (fold_constant_for_init): Avoid bullish conversion.

2000-07-13  Tom Tromey  <tromey@cygnus.com>

	* lang-specs.h: Added %{I*}.

2000-07-13  Zack Weinberg  <zack@wolery.cumb.org>

	* lang-specs.h: Use the new named specs.  Remove unnecessary braces.

2000-07-12  Mark Mitchell  <mark@codesourcery.com>

	* parse-scan.c: Remove.

2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (set_super_info): Handled protected inner classes.
	(common_enclosing_context_p): Bail early if arguments aren't both
	inner classes.
	(get_access_flags_from_decl): Handle private and protected inner
	classes.
	* java-tree.h (TYPE_PROTECTED_INNER_CLASS): New macro.
	(CLASS_PROTECTED): Likewise.
	(struct lang_type): New bitfield `poic'.
	* parse.y (jdep_resolve_class): Call check_inner_class_access on
	inner classes only.
	(check_inner_class_access): Renamed arguments, added
	comments. Handles protected inner classes (fixes gcj/225)
	(not_accessible_p): Fixed comments. Avoid handling inner classes.

2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Verify qualified
	access to `this'. Fixes gcj/239.

2000-07-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_classfile): Don't install ConstantValue
	for null pointers.

2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Handle inner class
	access. Fixes gcj/256.

2000-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_classfile): Properly install the
	ConstantValue attribute and the initial value constant pool index
	on string constants.
	* parse.y (java_complete_lhs): Keep DECL_INITIAL when emitting
	class files.

2000-07-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (BUILD_PTR_FROM_NAME): Surround with a do/while
	construct.
	* parse.y (find_as_inner_class): Fixed typo.
	(do_resolve_class): Explore enclosing contexts when searching for
	innerclasses. Removed curly brackets around BUILD_PTR_FROM_NAME.
	(check_inner_class_access): Check `decl' which can be null in case
	of previous errors.

2000-07-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (java_debug_context): Declared `extern'.
	(safe_layout_class): Likewise.
	* parse.y (resolve_field_access): Field must be `static' in order
	to be replaced by its initial value. Added comments.
	(find_applicable_accessible_methods_list): Fixed typo.
	(find_most_specific_methods_list): Methods found in innerclasses
	take over methods founds in the enclosing contexts.
	(java_complete_tree): Loosen restrictions on the type of DECLs
	that can be replaced by their initialization values.
	(valid_ref_assignconv_cast_p): Removed call to `enclosing_context_p'.

2000-07-05  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (PARSE_DIR): New macro.
	(PARSE_RELDIR): Likewise.
	(PARSE_C): Likewise.
	(PARSE_SCAN_C): Likewise.
	($(PARSE_C)): New target.
	($(PARSE_SCAN_C)): Likewise.
	(SET_BISON): New macro.
	(BISONFLAGS): Likewise.
	(JAVABISONFLAGS): Likewise.

2000-07-02  Bryce McKinlay  <bryce@albatross.co.nz>

	* gjavah.c (HANDLE_METHOD): Call print_method_info with a NULL stream
	argument on the first pass for CNI as well as JNI.
	(print_method_info): Set up method name on the first pass only.

2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (parser_qualified_classname): Removed parameter
	`is_static'.
	(create_interface): Removed first passed parameter to
	parser_qualified_classname.
	(create_class): Likewise. Don't install alias on static
	innerclasses. Fixes gcj/275.

2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (maybe_generate_pre_expand_clinit): Don't build a
	debugable statement with empty_stmt_node. Fixes gcj/272

2000-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (build_instanceof): Layout type after it's loaded. Fixes
	gcj/271.

2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (push_long_const): Appropriately cast short negative
	constant to jword.

2000-06-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (verify_constructor_super): Use loop variable
	`m_arg_type' initialized with `mdecl_arg_type'.

2000-06-29  Tom Tromey  <tromey@cygnus.com>

	* parse.y (resolve_field_access): Handle case where `type_found'
	is NULL.

2000-06-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (lookup_field): The same field can be found through two
	different interface. Don't declare it ambiguous in that case.

2000-06-27  Tom Tromey  <tromey@cygnus.com>

	* lex.c (java_lineterminator): Don't recognize \r after \n.  If \r
	follows \r, then unget it at a lower level.

2000-06-26  Tom Tromey  <tromey@cygnus.com>

	* parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
	java_complete_tree.

2000-06-25  Tom Tromey  <tromey@cygnus.com>

	* parse.y (for_statement): Wrap expression in a WFL if it is a
	constant.  For PR gcj/268.

2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (do_resolve_class): Minor optimiztion in the package
	list search. Removed unnecessary test and return statement.
	(valid_ref_assignconv_cast_p): Order of arguments to
	enclosing_context_p fixed.

2000-06-24  Tom Tromey  <tromey@cygnus.com>

	* expr.c (lookup_field): Print error and return error_mark_node if
	field reference is ambiguous.

	* parse.y (check_abstract_method_definitions): Also check if
	`other_method' is abstract.

2000-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (set_super_info): Handle ACC_PRIVATE for (inner)
	classes.
	* java-tree.h (TYPE_PRIVATE_INNER_CLASS): New macro.
	(struct lang_type): New field `pic'.
	(CLASS_PRIVATE): New macro.
	* parse.y (check_inner_class_access): New function.
	(jdep_resolve_class): Call it.

2000-06-23  Tom Tromey  <tromey@cygnus.com>

	* parse.y (patch_incomplete_class_ref): Initialize the returned
	class.  For PR gcj/260.

2000-06-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* except.c (prepare_eh_table_type): Use `CATCH_ALL_TYPE'.

2000-06-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
	Java specific checks.
	* expr.c (build_instanceof): CLASS_INTERFACE and CLASS_FINAL usage
	screened by DECL_P.
	* java-tree.def (CASE_EXPR): Marked 'e'.
	(DEFAULT_EXPR): Likewise.
	* jcf-parse.c (set_source_filename): CLASS_COMPLETE_P usage
	screened by DECL_P.
	* jcf-write.c (ENABLE_JC1_CHECKING): Replaces ENABLE_CHECKING for
	Java specific checks.
	(generate_bytecode_insns): Test try_block for BLOCK before using
	BLOCK_EXPR_BODY.
	* parse.y (build_wfl_wrap): Added `location' argument. Set
	EXPR_WFL_LINECOL accordingly.
	(dim_expr:): Wrap constants with WFLs.
	(method_declarator): Use TREE_TYPE not TYPE_NAME on GET_CPC.
	(resolve_package): Check for `stmt' not being a BLOCK before
	building a debuggable statement with it.
	(make_qualified_primary): Added extra parameter to build_wfl_wrap
	invocation.
	(resolve_field_access): Make sure `decl' is a DECL before treating
	it as such.
	(maybe_build_primttype_type_ref): Make sure `wfl''s node is an
	IDENTIFIER_NODE before treating it as such.
	(patch_new_array_init): Make sure `elt' is a TREE_LIST before
	treating it as such.
	(find_applicable_accessible_methods_list): CLASS_INTERFACE macro
	to be applied only on non array types.

2000-06-16  Per Bothner  <per@bothner.com>

	* java-tree.h (LABEL_RETURN_LABELS, LABEL_PENDING_CHAIN):  Don't
	define in terms of DECL_RESULT, as that fails when --enable-checking.

2000-06-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-write.c (CHECK_PUT): Add static prototype.  Make pointer
	types the same in comparison.
	(CHECK_OP): Add static prototype.

2000-06-13  Jakub Jelinek  <jakub@redhat.com>

	* typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
	* parse.y (java_complete_class): Set DECL_USER_ALIGN.
	* parse.c: Rebuilt.

2000-06-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* decl.c (create_primitive_vtable): Prototype.

	* jcf-write.c (generate_bytecode_insns): Initialize variable
	`saved_context'.

	* lang.c (lang_get_alias_set): Mark parameter with ATTRIBUTE_UNUSED.

2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (find_applicable_accessible_methods_list): Use a hashtable
	to track searched classes, and do not search the same class more than
	once. Call find_applicable_accessible_methods_list on immediate
	superclass, instead of search_applicable_method_list on all ancestors.
	Fix for PR gcj/238.

2000-06-09  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (register_fields): Permit static fields in inner classes
	if they are final. Fix for PR gcj/255.

2000-06-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (REGISTER_IMPORT): Use `chainon' to link new entries.
	* parse.y (find_in_imports): Returned type changed to void,
	leading comment fixed.
	(register_package): New function.
	(qualify_and_find): Likewise.
	(package_declaration:): Use `register_package'.
	(single_type_import_declaration:): Removed local variable
	`node'. Added missing `;' for consistency.
	(type_import_on_demand_declaration:): Use `chainon' to link new
	entries.
	(lookup_field_wrapper): Lookup local variables defined in outer
	contexts first.
	(java_complete_class): Don't reverse the list of imported on demand.
	(do_resolve_class): Reorganized. Removed local variable
	`original_name'. Call `qualify_and_find' with the current package
	name, invoke `find_in_imports_on_demand' right after. Call
	`qualify_and_find' with the packages we've seen so far. Fixed
	operations numbering in comments.
	(java_expand_class): Don't reverse `package_list'.
	(find_most_specific_methods_list): New local variables `abstract'
	and `candidates'. Use them to pick the right method.

2000-06-06  Tom Tromey  <tromey@ferrule.cygnus.com>

	* parse.y (check_modifiers_consistency): Don't subtract out
	`PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.

2000-06-04  Philipp Thomas  <pthomas@suse.de>

	* Makefile.in (INTLLIBS): New.
	(LIBS): Add above.
	(DEPLIBS): Ditto.

2000-06-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (get_dispatch_table): Build the vtable dummy entry list
	element with a null purpose. Fixed leading comment.
	(build_dtable_decl): Build an accurate dtable type when appropriate
	and use it.

2000-06-02  Richard Henderson  <rth@cygnus.com>

	* lang.c (lang_get_alias_set): New.

2000-05-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_field_access): Complete the DECL_INITIAL tree
	before using it as the accessed field.

2000-05-31  Tom Tromey  <tromey@cygnus.com>

	* java-tree.h (boolean_array_vtable, byte_array_vtable,
	char_array_vtable, short_array_vtable, int_array_vtable,
	long_array_vtable, float_array_vtable, double_array_vtable):
	Declare.
	* expr.c (get_primitive_array_vtable): New function.
	(create_primitive_vtable): New function.
	(java_lang_expand_expr): Enable code to statically generate
	arrays.
	* decl.c (init_decl_processing): Create primitive vtables.
	(boolean_array_vtable, byte_array_vtable, char_array_vtable,
	short_array_vtable, int_array_vtable, long_array_vtable,
	float_array_vtable, double_array_vtable): Define.

2000-05-26  Zack Weinberg  <zack@wolery.cumb.org>

	* java/parse.y (find_applicable_accessible_methods_list):
	Don't add an uninitialized value to the list.

2000-05-25  Tom Tromey  <tromey@cygnus.com>

	* parse.y (resolve_field_access): Don't check DECL_LANG_SPECIFIC
	when trying to see if field's class should be initialized.  Always
	initialize field's declaring class, not qualified class.
	For PR gcj/162.

	* parse.y (array_constructor_check_entry): Pass `wfl_value', not
	`wfl_operator', to maybe_build_primttype_type_ref.
	Fixes PR gcj/235.

2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* parse.y (patch_method_invocation): Don't try to lookup methods
	in primitive types.

2000-05-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_field_access): Call the appropriate <clinit>
	before accessing the length of a static array. Craft a decl for
	the field while its time. Fixes PR gcj/129.

2000-05-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_package): Correctly set `*next' (was off by
	one.)
	(resolve_qualified_expression_name): Fixed comment.

2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (jcf_parse_source): Reset current_class and
	current_function_decl to NULL before parsing a new file.

2000-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (block_end:): If the collected block doesn't feature a
	statement, insert an empty statement.

2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (maybe_yank_clinit): New function.
	(maybe_generate_pre_expand_clinit): Always link <clinit> at the
	end of the list of methods belonging to a class.
	(java_complete_expand_method): Check whether <clinit> is really
	necessary and expand it accordingly.

2000-04-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be
	processed by the method's switch statement.

2000-05-19  Tom Tromey  <tromey@cygnus.com>

	* java-tree.h: Added init state enum.
	* decl.c (emit_init_test_initialization): Initialize class
	initialization check variable by looking at class' state.

2000-05-19  Tom Tromey  <tromey@cygnus.com>

	* java-tree.h (build_instanceof): Declare.
	(build_get_class): Declare.
	* parse.y (patch_binop): Use build_instanceof.
	* expr.c (build_instanceof): New function.  If class is final,
	don't make a function call.
	(expand_java_INSTANCEOF): Use it.
	(build_get_class): New function.

2000-05-18  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* jcf-write.c (generate_classfile): Scan the source_file for
	slashes with the right pointer variable.

2000-05-17  Andrew Cagney  <cagney@b1.cygnus.com>

	* lang.c (lang_decode_option): Update -Wunused flags by calling
	set_Wunused.
	* decl.c (poplevel): Replace warn_unused with warn_unused_label.

2000-05-09  Zack Weinberg  <zack@wolery.cumb.org>

	* check_init.c (check_init): Constify local char *.
	* class.c (push_class): Constify local char *.
	* java_tree.h: Update prototypes.
	* jcf-io.c (open_class): Constify filename parameter and
	return value.
	(find_class): Remove redundant string copy.  Cast return from
	open_class.
	* jcf-parse.c (read_class, parse_class_file, yyparse):
	Constify local char *.
	* jcf-write.c (generate_bytecode_insns, generate_classfile):
	Constify local char *.
	* jcf.h (JCF): Constify filename and classname.
	(JCF_FINISH): Cast args to FREE to char * when appropriate.
	* lang.c (init_parse): Constify parameter and return value.
	* lex.c (java_get_line_col): Constify filename parameter.
	* parse.h: Constify parser_ctxt.filename.  Update prototypes.
	* parse.y (java_parser_context_suspend,
	issue_warning_error_from_context, safe_layout_class): Constify
	local char *.
	* parse.c: Regenerate.

2000-05-08  Tom Tromey  <tromey@cygnus.com>

	* expr.c (build_jni_stub): Cache the result of
	_Jv_LookupJNIMethod.

2000-05-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (predef_filenames_size): Now 7.
	(predef_filenames): New seventh entry.

2000-05-04  Tom Tromey  <tromey@cygnus.com>

	* boehm.c (mark_reference_fields): Don't mark RawData fields.
	Keep track of when we've seen a reference field after a
	non-reference field.
	(get_boehm_type_descriptor): Handle case where we see
	non-reference fields but no trailing reference field.
	* decl.c (rawdata_ptr_type_node): Define.
	(init_decl_processing): Initialize rawdata_ptr_type_node.
	* java-tree.h (rawdata_ptr_type_node): Declare.

2000-05-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-dump.c (SPECIAL_IINC): Ensure arguments match format
	specifiers in calls to fprintf.

2000-05-03  Andrew Haley  <aph@cygnus.com>

	* expr.c (build_java_jsr): Use emit_jump, not expand_goto.

	* javaop.h (WORD_TO_INT): New function.
	(IMMEDIATE_s4): Use WORD_TO_INT.
	* jcf.h (JPOOL_INT): Ditto.

	* gjavah.c (decode_signature_piece): Don't treat `$' as namespace
	separator.

2000-04-19  Tom Tromey  <tromey@cygnus.com>

	* class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE
	on native function.
	* jcf-parse.c (parse_class_file): Call build_jni_stub for native
	JNI methods.
	* expr.c (build_jni_stub): New function.
	* lang-specs.h: -fjni and -femit-class-file are incompatible.
	* parse.c: Rebuilt.
	* parse.y (java_complete_expand_methods): Expand a native method
	and call build_jni_stub if -fjni given.
	* lang-options.h: Document -fjni.
	* lang.c (flag_jni): New global.
	(lang_f_options): Added `jni' entry.
	* java-tree.h (soft_lookupjnimethod_node,
	soft_getjnienvnewframe_node, soft_jnipopsystemframe_node):
	Declare.
	(flag_jni): Declare.
	(build_jni_stub): Declare.
	(struct lang_decl): Added `native' flag.
	(METHOD_NATIVE): Redefined to use `native' field of lang specific
	structure.
	* decl.c (soft_lookupjnimethod_node, soft_getjnienvnewframe_node,
	soft_jnipopsystemframe_node): New globals.
	(init_decl_processing): Set them.  _Jv_InitClass only takes one
	argument.

	* java-tree.def: Put into `C' mode.

2000-04-27  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/2:
	* expr.c (expand_invoke): Generate check to see if object pointer
	is null in nonvirtual invocation case.
	* java-tree.h (soft_nullpointer_node): Declare.
	* decl.c (soft_nullpointer_node): New global.
	(init_decl_processing): Initialize soft_nullpointer_node.
	* parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
	or `private' methods.
	(patch_invoke): Handle INVOKE_NONVIRTUAL case.

2000-04-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (complete_start_java_method): Don't call _Jv_InitClass
	from <clinit>

2000-04-26  Tom Tromey  <tromey@cygnus.com>

	* zextract.c (find_zip_file_start): New function.
	(read_zip_archive): Use it.

2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.

2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (common_enclosing_context_p): New function.
	* java-tree.h (common_enclosing_context_p): Added prototype.
	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Relaxed test to allow
	classes sharing an outer context with the current instance.
	* parse.y (build_access_to_thisn): Fixed leading comment.
	(verify_constructor_super): New local `supper_inner'. Skip
	enclosing context argument in the case of inner class constructors.
	(patch_method_invocation): Insert proper context as second
	parameter to pure inner class constructor super invocations.

2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (end_class_declaration): Reset the interface number
	counter.

2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (source_start_java_method): Deleted unnecessary code.
	(patch_method_invocation): Fixed comment.

2000-04-24  Robert Lipe <robertlipe@usa.net>

	* parse.h (_jdep): Member `kind' now ENUM_BITFIELD.

2000-04-23  Tom Tromey  <tromey@cygnus.com>

	* boehm.c (mark_reference_fields): Use int_byte_position.

2000-04-22  Tom Tromey  <tromey@cygnus.com>

	* boehm.c (mark_reference_fields): Only call byte_position on
	non-static fields.

2000-04-22  Tom Tromey  <tromey@cygnus.com>

	* boehm.c (mark_reference_fields): Added `last_view_index'
	argument.  Use DECL_FIELD_OFFSET to determine field's offset.

2000-04-20  Mo DeJong  <mdejong@cygnus.com>

	* parse.h (INTERFACE_INNER_MODIFIERS): New macro.
	* parse.y (check_class_interface_creation): Fixed comments. Select
	permitted modifiers for (inner) interfaces. Changed error message
	to report rejected modifiers used with local classes.

2000-04-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Immediate inner classes
	of directly inherited type considered in scope.
	* parse.y (do_resolve_class): Search inherited classes for inner
	classes.

2000-04-20  Tom Tromey  <tromey@cygnus.com>

	* parse.y (not_accessible_p): Use member's class, not current
	class, when doing inheritance check for protected reference.
	Fixes PR gcj/124.

2000-04-20  Jason Schroeder  <shrode@subnature.com>

	* jcf-dump.c (SPECIAL_IINC): Fixed typo printing iinc instruction.

2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (lookup_field_wrapper): Search for final local aliases.
	(resolve_expression_name): Let lookup_field_wrapper search for
	final local aliases. Force the value of `name' if one is found.
	(qualify_ambiguous_name): CONVERT_EXPR is enough to now we have
	an expression name. Fixed comments.

2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (yyerror): `msg' can be null, don't use it in that case.

2000-04-19  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (cxx_keyword_subst): Avoid potential infinite loop.

2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.

2000-04-18  Tom Tromey  <tromey@cygnus.com>

	PR gcj/211:
	* gjavah.c (utf8_cmp): Changed return value.
	(cxx_keyword_subst): Handle all C++ keywords.  Allocate new return
	result.
	(cxx_keywords): New global.
	(get_field_name): Handle new result of cxx_keyword_subst.
	(print_method_info): Likewise.

2000-04-17  Bryce McKinlay  <bryce@albatross.co.nz>

	* gjavah.c (print_name_for_stub_or_jni): Don't prefix method names
	with a newline, for CNI.
	(print_stub_or_jni): Print a space or newline before method name for
	CNI as well as JNI.
	(print_cxx_classname): Don't write leading "::" in CNI stub method.
	(process_file): Include gcj/cni.h if generating CNI stubs.

2000-04-16  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (decompile_method): Use print_field_name.
	Fixes PR gcj/205.

2000-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_expand_classes): Reverse the package list once.
	(java_complete_lhs): PLUS_EXPR: don't try rhs and lhs at string
	reduction.
	(patch_binop): New temp `cn'. Call patch_string on LHS/RHS of
	the `==' and `!=' operators.

2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): At invocation time,
	always relate an interface method to the type of its selector.

2000-04-05  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/2:
	* expr.c (expand_invoke): Generate check to see if object pointer
	is null in nonvirtual invocation case.
	* java-tree.h (soft_nullpointer_node): Declare.
	* decl.c (soft_nullpointer_node): New global.
	(init_decl_processing): Initialize soft_nullpointer_node.
	* parse.y (invocation_mode): Return INVOKE_NONVIRTUAL for `final'
	or `private' methods.
	(patch_invoke): Handle INVOKE_NONVIRTUAL case.

2000-04-05  Tom Tromey  <tromey@cygnus.com>

	Fix for PR gcj/140:
	* parse.y (check_final_assignment): Recognize assignments to the
	`length' field of an array when generating class files.

2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (decl_hash): Prototype removed.
	(decl_compare): Likewise.

2000-04-05  Tom Tromey  <tromey@cygnus.com>

	* parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
	* parse.y (check_modifiers_consistency): Check for final/volatile
	clash.  Fixes PR gcj/164.

2000-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c: (java_hash_hash_tree_node): Renamed from `decl_hash',
	made global.
	(java_hash_compare_tree_node): Renamed from `decl_compare, made
	global.
	(add_method_1): Use `java_hash_hash_tree_node' and
	`java_hash_compare_tree_node'.
	* java-tree.h: (java_hash_hash_tree_node): Prototyped.
	(java_hash_compare_tree_node): Likewise.
	* parse.y (find_applicable_accessible_methods_list): Create,
	delete and use a hash table to remember already searched interfaces.

2000-04-03  Matt Welsh  <mdw@cs.berkeley.edu>

	* jcf-depend.c (add_entry): Fixed bug where list was always replaced
	with latest entry.

2000-04-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* boehm.c (mark_reference_fields, set_bit): Prototype.
	(set_bit): Un-ANSI-fy definition.

	* class.c (init_test_hash_newfunc, decl_hash, decl_compare):
	Prototype.

	* decl.c (emit_init_test_initialization): Likewise.

	* gjavah.c (jni_print_char): Likewise.

	* parse.y (create_new_parser_context): Likewise.

2000-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (java_lang_expand_expr): Added Anthony's Thu Jan 6 2000
	patch missing hunk. Fixed indentation.

2000-03-30  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (D_NAN_MASK): Only define as word-reversed when
	HOST_FLOAT_WORDS_BIG_ENDIAN and HOST_WORDS_BIG_ENDIAN disagree.

2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
	when negative *before* using it as an array index.
	* ChangeLog: Fixed typo.

2000-03-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (pop_class_context): Reset `inner_qualifier_length'
	to 0 when it reaches -1.

2000-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (get_constant): Properly cast `num' during the
	invocation of `add_double'.
	* jcf-write.c (push_long_const): Properly cast `lo' before
	comparing it to short bounds.
	* parse-scan.y (interface_declaration:): Rule re-arrange so that
	`interface_body:' is reduced after the current interface is
	pushed.

2000-03-26  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each
	Java-specific `-f' option.

2000-03-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* decl.c (init_decl_processing): Only call initialize_sizetypes once.
	Adjust order of making types.
	Make bitsize_*_node values.

2000-03-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* class.c (make_field_value): Use byte_position.
	* expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
	(java_array_data_offset): Likewise.
	* java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
	bzero call.

2000-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (check_abstract_method_definitions): New local
	`end_type_reached'. Make sure we also consider `end_type'.
	(java_check_abstract_method_definitions): Make sure we eventually
	consider `java.lang.Object'.
	(maybe_use_access_method): Don't use access method if not in the
	context of a pure inner class or if the method's context is right.
	(find_applicable_accessible_methods_list): New static flag
	`object_done'. Don't search abstract classes as interfaces. Fixed
	indentation. Fixed the `java.lang.Object' only search. Search
	class interface(s) first, then fully search enclosing contexts.
	(find_most_specific_methods_list): Pick the closest candidate when
	they're all abstract.

2000-03-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
	properly initialize `finished_label'. Don't emit gotos for empty
	try statements.

2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* except.c (emit_handlers): Clear catch_clauses_last.

2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (check_method_types_complete): New function.
	(create_class): Reset anonymous class counter only when seeing an
	non inner classe.
	(java_complete_class): JDEP_METHOD: Don't recompute signature
	if incomplete.

2000-03-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (build_static_ref): Fixed indentation in comment.
	* java-tree.def (TRY_EXPR): Fixed typo in name.
	(CLASS_LITERAL): Likewise.
	* java-tree.h: (TYPE_DOT_CLASS): New macro.
	(struct lang_type): New field `dot_class'.
	* jcf-write.c (generate_bytecode_insns): Fixed error message.
	(generate_classfile): Method `class$' is synthetic.
	* parse.y (build_do_class_method): New function.
	(build_dot_class_method_invocation): Likewise.
	(java_complete_expand_methods): Expand TYPE_DOT_CLASS if necessary.
	(resolve_qualified_expression_name): Handle CLASS_LITERAL.
	(qualify_ambiguous_name): Likewise.
	(patch_incomplete_class_ref): Invoke synthetic method if necessary.
	(build_try_statement): Fixed leading comment.

2000-03-17  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* class.c (make_field_value): Properly handle sizes.
	(get_dispatch_vector): Use tree_low_cst and host_integerp.
	(layout_class_method): Count using trees.
	* decl.c (push_promoted_type): Set TYPE_{MIN,MAX}_VALUE with copy_node.
	* expr.c (java_array_data_offset): Use int_bit_position.
	(build_newarray, build_anewarray): Use host_integerp and tree_low_cst.
	(build_invokevirtual): Use tree_low_cst and do computations with trees.

2000-03-16  Tom Tromey  <tromey@cygnus.com>

	* lang.c (flag_hash_synchronization): New global.
	(lang_f_options): Added `hash-synchronization'.
	* lang-options.h: Mention -fhash-synchronization.
	* java-tree.h (flag_hash_synchronization): Declare.
	* expr.c (java_lang_expand_expr): Only push `sync_info' value when
	hash table synchronization is disabled.
	* decl.c (init_decl_processing): Only push `sync_info' value when
	hash table synchronization is disabled.
	* class.c (make_class_data): Only push `sync_info' field when hash
	table synchronization is disabled.  Removed dead code.

2000-03-16  Tom Tromey  <tromey@cygnus.com>

	* lang.c (lang_decode_option): Enable -Wunused when -Wall given.

2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): Disregard anonymous
	classes.
	* parse.y (patch_method_invocation): Handle anonymous classes
	creation in static context.

2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (INNER_ENCLOSING_SCOPE_CHECK): New macro.
	* parse.y (resolve_qualified_expression_name): Use it.
	(patch_method_invocation): Likewise.

2000-03-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (register_incomplete_type): JDEP_ENCLOSING set
	depending on the type of dependency which dictates what the
	current class is.
	(unresolved_type_p): Resolved types limited to the current class.

2000-03-15  Tom Tromey  <tromey@cygnus.com>

	* decl.c (init_decl_processing): Set type of `sync_info' to be
	pointer to Object.

	* boehm.c (get_boehm_type_descriptor): Correctly compute `bits'.
	Correctly compute bit number for current slot.  Zero `high' and
	`low' in DS_LENGTH case.  Don't skip inherited fields.  Use
	mark_reference_fields.
	(mark_reference_fields): New function.

2000-03-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (register_incomplete_type): Fixed initialization of
	JDEP_ENCLOSING.

2000-02-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (inner_qualifier, inner_qualifier_length): New
	static globals.
	(push_class_context, pop_class_context): New function.
	(class_body:): Call pop_class_context.
	(interface_body:): Likewise.
	(INNER_QUALIFIER): New macro.
	(report_class_declaration): Changed output format and use
	INNER_QUALIFIER. Call push_class_context.

2000-02-14  Andrew Haley  <aph@cygnus.com>

	* check-init.c (check_init): Add new cases for unary and binary
	tree nodes.

2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_package): Set `next' once a type name has been
	progressively discovered.
	(resolve_qualified_expression_name): Propagate resolution only if
	there are remaining qualifiers. Take into account `q' might have
	been cleared after re-qualification.
	* parse.y (patch_method_invocation): New local `resolved'.
	Section dealing with qualified expression rewritten to use
	resolve_field_access.

2000-03-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (PUSH_CPC): Fixed indentation.
	(DEBUG_CPC): New macro.
	(SET_CPC_INITIALIZER_STMT, SET_CPC_STATIC_INITIALIZER_STMT,
	SET_CPC_INSTANCE_INITIALIZER_STMT): New macros.
	* parse.y (class_body_declaration:): Use
	SET_CPC_INSTANCE_INITIALIZER_STMT.
	(method_declaration:): Check for null current_function_decl.
	(static_initializer:): Use SET_CPC_STATIC_INITIALIZER_STMT.
	(java_parser_context_pop_initialized_field): Better handling of
	empty lists.
	(maybe_make_nested_class_name): Mark nested class name as
	qualified when necessary.
	(end_class_declaration): Don't call java_parse_context_resume when
	one or more error occurred.
	(add_inner_class_fields): Use SET_CPC_INITIALIZER_STMT.
	(register_fields): Use SET_CPC_STATIC_INITIALIZER_STMT and
	SET_CPC_INITIALIZER_STMT.
	(method_header): Check for inner classes declaring static methods.
	(resolve_qualified_expression_name): Handle situation where `this'
	is implied.

2000-03-13  Hans Boehm <boehm@acm.org>

	* typeck.c (build_prim_array_type): Correctly set the high word too.

2000-03-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_expand_methods): Leave <clinit> out of
	ordinary methods.
	(maybe_generate_pre_expand_clinit): Put <clinit> at the end of the
	list of methods for interfaces.

2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Properly handle expressions
	using `null'.

2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (check_final_assignment): Extended to process
	COMPOUND_EXPR.
	(patch_assignment): Have check_final_assignment called only once.

2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (IS_INIT_CHECKED): New flag.
	* check-init.c (check_init): Test and set IS_INIT_CHECKED.
	* parse.y (patch_string): Call force_evaluation_order on the
	completed string concatenation tree.
	* expr.c (force_evaluation_order): Call force_evaluation_order on
	function's arguments too.

2000-03-06  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* decl.c (emit_init_test_initialization): Mark KEY as unused.
	* expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	(build_anewarray): Likewise.
	* parse.y (patch_newarray): Likewise.
	* parse.c: Regenerated.

2000-03-06  Bryce McKinlay  <bryce@albatross.co.nz>

	* decl.c (init_decl_processing): Added new class fields `depth',
	`ancestors', and `idt' to class_type_node. Use
	_Jv_LookupInterfaceMethodIdx for soft_lookupinterfacemthod_node.
	* class.c (make_class_data): Push initial values for new fields.
	* java-tree.h: Updated prototype for `build_invokeinterface'.
	* expr.c (build_invokeinterface): Changed parameters to accept
	`method' tree. Calculate index of `method' in its declaring
	interface. Build call to _Jv_LookupInterfaceMethodIdx.
	(expand_invoke): Call `build_invokeinterface' with new parameters.
	* parse.y (patch_invoke): Call `build_invokeinterface' with new
	parameters.

2000-03-06  Bryce McKinlay <bryce@albatross.co.nz>

	* typeck.c (lookup_do): Search superinterfaces first
	when looking up an interface method. From Godmar Back
	<gback@cs.utah.edu>

2000-03-06  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (JAVA_SRCS): Added boehm.c, lex.c.

2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (lookup_argument_method2): Declared.
	(safe_layout_class): Prototype moved from parse.h.
	* parse.h (safe_layout_class): Prototype moved to java-tree.h.
	* parse.y (java_check_regular_methods): Local `super_class' gone.
	Call lookup_argument_method2 instead of lookup_argument_method.
	Perform modifier match for methods found declared in implemented
	interfaces. Fixed indentation problem. Overriding/hiding error
	report to take place only for methods found in classes.
	* typeck.c (lookup_argument_method): Changed leading
	comment. Re-written by calling lookup_do.
	(lookup_argument_method2): New function.
	(lookup_java_method): Re-written by calling lookup_do.
	(lookup_do): New function.

2000-03-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Removed dead code. Handle (blank)
	final variables.
	* parse.y (declare_local_variables): New local `final_p', set it
	and use it to initialize LOCAL_FINAL.
	(check_final_assignment): Only check FIELD_DECLs.

2000-02-17  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (JAVA_OBJS): Added boehm.o.
	(boehm.o): New target.
	* Make-lang.in (JAVA_SRCS): Added boehm.c.
	* java-tree.h (flag_use_boehm_gc): Declare.
	(get_boehm_type_descriptor): Declare.
	* lang.c (lang_f_options): Added `use-boehm-gc'.
	(flag_use_boehm_gc): New global.
	* lang-options.h: Added -fuse-boehm-gc.
	* boehm.c: New file.
	* class.c (get_dispatch_table): If class uses a Boehm type
	descriptor, put it in the vtable.
	(make_class_data): Removed dead code.

2000-03-03  Per Bothner  <per@bothner.com>

	* decl.c (init_decl_processing):  Initialize sizetype properly.

2000-03-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (LOCAL_CLASS_P): New flag usage and macro.
	(PURE_INNER_CLASS_DECL_P, PURE_INNER_CLASS_TYPE_P): New macros.
	* jcf-dump.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
	* jcf-parse.c (HANDLE_INNERCLASSES_ATTRIBUTE): Likewise.
	(jcf_parse): New local `current'. Load innerclasses seen in outer
	context being processed.
	* jcf-reader.c (HANDLE_INNERCLASSES_ATTRIBUTE): New macro.
	* jcf-write.c (append_innerclasses_attribute): New function.
	(append_innerclasses_attribute_entry): Likewise.
	(get_access_flags): Handle static classes. Set anonymous and local
	classes to be private.
	(generate_classfile): Attribute count adjusted. Call
	append_innerclasses_attribute.
	* parse.h (SKIP_THIS_AND_ARTIFICIAL_PARMS): Use
	PURE_INNER_CLASS_TYPE_P.
	* parse.y (parser_qualified_classname): New parameter `is_static',
	produce non qualified name accordingly.
	(block_statement:): Set LOCAL_CLASS_P when declaring local class.
	(create_interface): Added argument to parser_qualified_classname.
	(create_class): Added argument to parser_qualified_classname. Setup
	alias for top level classes. Use PURE_INNER_CLASS_DECP_P.
	(add_inner_class_fields): Fixed indentation.
	(method_declarator): Use PURE_INNER_CLASS_DECP_P.
	(method_declarator): Fixed typo in comment.
	(craft_constructor): Use PURE_INNER_CLASS_DECP_P.
	(build_current_thisn): Likewise.
	(patch_method_invocation): Likewise.

2000-03-01  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (current_function_decl): Move to toplev.c.

2000-02-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
	(DECL_BIT_INDEX): Use underlying representation.
	* parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.

2000-02-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (build_java_ret): Pass proper type to size_binop.

2000-02-25  Anthony Green  <green@cygnus.com>

	* expr.c (build_class_init): Mark the decl to be ignored by
	check_init.
	* java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
	* check-init.c: Move DECL_BIT_INDEX to java-tree.h
	* class.c (init_test_hash_newfunc): New function.
	(decl_hash): New function.
	(decl_compare): New function.
	* decl.c (emit_init_test_initialization): New function.
	(complete_start_java_method): Traverse the init test hashtable,
	calling emit_init_test_initialization.
	(always_initialize_class_p): Define.
	* expr.c (build_class_init): Use initialization tests when
	emitting class initialization code.
	(always_initialize_class_p): Declare.
	* jcf-parse.c (parse_class_file): Set always_initialize_class_p to
	1.
	* java-tree.h: Include hash.h.
	(DECL_FUNCTION_INIT_TEST_TABLE): Define.
	(struct lang_decl): Add init_test_table field.
	(init_test_hash_entry): Define.

2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* gjavah.c (main): Avoid using `argi' to report unimplemented
	options.

2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): TRY_FINALLY_EXPR:
	initialize locals to avoid warnings. Local `exception_type' moved
	into if statement.

2000-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_expression_name): Use `orig' as a second
	argument to resolve_field_access.
	(resolve_field_access): Removed unnecessary code when dealing with
	static fields.

2000-02-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (push_super_field): Don't push the field twice.
	* jcf-parse.c (parse_source_file): Call java_reorder_fields.
	* parse.h (java_reorder_fields): Prototyped.
	* parse.y (java_reorder_fields): New function.
	(java_layout_class): Simplified not to worry about re-ordering.

2000-02-23  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_name): In JNI case, correctly quote string.
	(print_method_info): Don't handle overrides in JNI mode.

2000-02-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (init_decl_processing): `_Jv_IsInstanceOf' returned
	value type set to `boolean_type_node'.

2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>

	* jcf-dump.c (main): Test for correct condition after
	output file creation.

2000-02-19  Anthony Green  <green@cygnus.com>

	* jcf-depend.c (add_entry): Fix test for first list entry.

2000-02-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
	* constants.c (build_constants_constructor): Likewise.

2000-02-19  Anthony Green  <green@cygnus.com>

	* jcf-depend.c (add_entry): Add entries to the end of the list.

1999-11-03  Pekka Nikander  <pekka.nikander@hut.fi>

	* decl.c (INT_TYPE_SIZE): Define if necessary.
	(expand_java_return): Handle the case of a native integer smaller
	than a JVM integer.

2000-02-18  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* gjavah.c (help): Use GCCBUGURL.
	* jv-scan.c (help): Likewise.
	* jcf-dump.c (help): Likewise.

2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): Don't generate empty
	`finally' clauses.

2000-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (load_class): Call `fatal' if no file containing
	the target class are found.

2000-02-16  Zack Weinberg  <zack@wolery.cumb.org>

	* Makefile.in (PARSE_C, PARSE_SCAN_C): Move dependencies on
	lex.c, lex.h, and PARSE_H to...
	(parse.o, parse-scan.o): ...here, respectively.

	* lex.c: Split out code that may trigger SIGFPE from yylex()
	to its own function.
	* lex.h (JAVA_FLOAT_RANGE_ERROR): Don't set value.

2000-02-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (jvspec.o): Depend on $(GCC_H), not gcc.h.

2000-02-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (outer_field_access_p): Stop in time when outer contexts
	are exhausted.
	(resolve_qualified_expression_name): Properly qualify *everything*
	after a package.type to be resoled as expression names.
	(find_applicable_accessible_methods_list): Save/restore `class' to
	isolate it from a possible outer context search.

2000-02-15  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (jni_print_char): New function.
	(print_full_cxx_name): Use it.
	(decode_signature_piece): Likewise.
	(print_cxx_classname): Likewise.

2000-02-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
	version.o.
	(jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.

	* gjavah.c: Include version.h.

	* jcf-dump.c: Likewise.

	* jv-scan.c: Likewise.

2000-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (outer_field_access_fix): First parameter now a tree
	node. Check for assignment to final. First argument to
	build_outer_field_access_fix modified to accommodate prototype.
	(build_outer_field_access): Don't check for assignment to final
	here.
	(java_complete_lhs): MODIFY_EXPR case: Check for `error_mark_node'
	possibly returned by outer_field_access_fix. Changed
	outer_field_access_fix's first argument.
	(check_final_assignment): $finit$'s context is OK.
	(patch_unaryop): Use node instead of its line/column value when
	calling outer_field_access_fix.

2000-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (interface_declaration:): No longer tagged
	<node>. Re-installed default action.
	(class_member_declaration:): Handle inner interfaces.
	(interface_member_declaration): Handle inner interfaces and
	classes.
	(create_interface): Push error if one seen. Suspend parsing
	context when processing an inner interface.
	(register_fields): Inner class static field limitations not to
	apply to inner interfaces.

2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (load_class): Update `java_error_count' when a
	class' file can't be found.
	(parse.y): Avoid (byte)code generation when errors seen.

2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_lhs): Handle TRUNC_DIV_EXPR. Ensure `fatal'
	decodes a valid node.
	(patch_binop): Handle TRUNC_DIV_EXPR.

2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_package): New local `acc'. Try to progressively
	build and guess a package and type name.

2000-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (find_applicable_accessible_methods_list): Load and
	layout the search class if necessary.
	(java_complete_tree): Keep to original type of the folded initial
	value.

2000-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class): Set and test CLASS_BEING_LAIDOUT.
	Generate error message if circularity is detected. New static
	local `list'.
	* java-tree.h (CLASS_BEING_LAIDOUT): New flag usage, new macro.  *
	* jcf-write.c (generate_bytecode_insns): Very simply handle
	SAVE_EXPR.
	* parse.y (java_check_circular_reference): Use
	`cyclic_inheritance_report' during report, if necessary.
	(java_complete_lhs): fixed comment with `THROW_EXPR:' case. Avoid
	walking NEW_ARRAY_INIT twice.

2000-02-09  Tom Tromey  <tromey@cygnus.com>

	* parse.y (check_class_interface_creation): Allow inner classes to
	be `private' or `protected', check modifiers' consistency. Prevent
	block local classes from bearing any modifiers.

2000-02-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* except.c (check_start_handlers): Re-add prototype lost in last
	patch.
	(maybe_start_try): Remove excess argument to `check_start_handlers'.

2000-02-09  Andrew Haley  <aph@cygnus.com>

	* decl.c (clear_binding_level): Remove excess initializer.
	(maybe_poplevels): Remove unused variable.
	(force_poplevels): Ditto.
	(struct binding_level): Add comment.

2000-02-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_classfile): Don't consider
	pre-initialization with reference value (use <clinit> instead.)
	* parse.y (java_fix_constructors): No generated constructor for
	interfaces.
	(build_outer_field_access): Removed debug message.
	(outer_field_expanded_access_p): Adapted to bytecode generation.
	(build_outer_field_access_method): Use fix_method_argument_names.
	(build_outer_method_access_method): Fixed indentation. Added
	comment. Handle access method generation for static and also void
	methods.
	(build_access_to_thisn): Inserted debug message.
	(maybe_build_thisn_access_method): Use fix_method_argument_names.
	(resolve_qualified_expression_name): Fixed comment.
	(not_accessible_p): Adapted to bytecode generation. Added comment.
	(patch_method_invocation): Added comment.
	(maybe_use_access_method): Fixed leading comment. Handle static
	methods.
	(java_complete_lhs): Don't shortcut handling of initialized upon
	declaration String type static fields when generating bytecode.
	(patch_unaryop): Handle outer field access when generating
	bytecode.

2000-02-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (FIELD_THISN): New macro.
	* jcf-write.c (append_synthetic_attribute): New function.
	(generate_classfile): Set "Synthetic" attribute on this$<n>,
	val$<name> fields, access$<n> and $finit$ methods. Fixed indentation.
	* parse.y (add_inner_class_fields): Set FIELD_THISN for created
	this$<n> fields.
	(build_outer_field_access): Turned on access functions usage and
	generation when compiling to bytecode.
	(maybe_use_access_method): Likewise.

2000-01-25  Andrew Haley  <aph@cygnus.com>

	* java-except.h (struct eh_range): Add `expanded' field.
	(maybe_start_try): Add end_pc arg.
	(maybe_end_try): Ditto.
	* java-tree.h (force_poplevels): new function.
	* expr.c (expand_byte_code): Don't call maybe_start_try or
	maybe_end_try.
	* except.c (add_handler): Reset expanded.
	(expand_start_java_handler): Set expanded.
	(check_start_handlers): Don't expand a start handler that's
	already been expanded.
	(maybe_start_try): Add end_pc arg.  Only expand a handler which
	ends after end_pc.
	(expand_end_java_handler): call force_poplevels.
	(force_poplevels): new function.
	* decl.c (binding_level): Add start_pc of binding level.
	(maybe_pushlevels): Call maybe_start_try when pushing binding
	levels.
	(maybe_poplevels): Call maybe_end_try when popping binding levels.
	(LARGEST_PC): Define.
	(clear_binding_level): Use LARGEST_PC.

	* java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
	* decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
	(binding_depth, is_class_level, current_pc): new variables.
	(struct binding_level): ditto.
	(indent): new function.
	(push_jvm_slot): add debugging info.
	(maybe_pushlevels): ditto.
	(maybe_poplevels): ditto.
	(pushlevel): ditto.
	(poplevel): ditto.
	(start_java_method): ditto.
	(give_name_to_locals): comment only.
	* except.c (binding_depth, is_class_level, current_pc):
	new variables.
	(expand_start_java_handler): add debugging info.
	(expand_end_java_handler): ditto.

2000-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (overloaded_jni_method_exists_p): Add prototype.
	(print_name_for_stub_or_jni, process_file): Constify a char*.

2000-02-03  Tom Tromey  <tromey@cygnus.com>

	* jcf-io.c (jcf_print_utf8_replace): Handle UTF-8 input.

2000-01-31  Scott Bambrough  <scottb@netwinder.org>

	* gcc/java/javaop.h (WORDS_TO_DOUBLE): Allow WORDS_TO_DOUBLE to
	assemble doubles correctly when HOST_FLOAT_WORDS_BIG_ENDIAN is
	defined to be 1.

2000-02-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.def (INSTANCE_INITIALIZERS_EXPR): New tree code.
	* java-tree.h (TYPE_II_STMT_LIST): New macro.
	(struct lang_type): New field `ii_block'.
	* lex.c (java_init_lex): Use CPC_INITIALIZER_LIST,
	CPC_STATIC_INITIALIZER_LIST and CPC_INSTANCE_INITIALIZER_LIST.
	* parse.h (struct parser_ctxt): New field `instance_initializers'.
	(CPC_INITIALIZER_LIST, CPC_STATIC_INITIALIZER_LIST,
	CPC_INSTANCE_INITIALIZER_LIST, CPC_INITIALIZER_STMT,
	CPC_STATIC_INITIALIZER_STMT, CPC_INSTANCE_INITIALIZER_STMT): New
	macros.
	* parse.y (add_instance_initializer): New function.
	(in_instance_initializer): New static global.
	(class_body_declaration:): Link instance initializer block.
	(static_initializer:): Use CPC_STATIC_INITIALIZER_STMT.
	(array_creation_expression:): Remove unused local.
	(java_parser_context_push_initialized_field): Fixed leading
	comment. Use CPC_STATIC_INITIALIZER_LIST, CPC_INITIALIZER_LIST and
	CPC_INSTANCE_INITIALIZER_LIST.
	(java_parser_context_pop_initialized_field): Likewise.
	(add_inner_class_fields): Use CPC_INITIALIZER_STMT.
	(register_fields): Use CPC_STATIC_INITIALIZER_STMT and
	CPC_INITIALIZER_STMT.
	(fix_constructors): New local `class_type'. Use it. Call
	add_instance_initializer.
	(java_complete_lhs): New case INSTANCE_INITIALIZERS_EXPR.
	(patch_return): Forbid return in instance initializers.
	(patch_throw_statement): Enforce exception handling in the context
	of instance initializers.

2000-02-03  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (java.mostlyclean): Remove executables in
	`mostlyclean'.

2000-01-31  Scott Bambrough  <scottb@netwinder.org>

	* gcc/java/gjavah.c (D_NAN_MASK): Alternate definition required when
	HOST_FLOAT_WORDS_BIG_ENDIAN is defined to be 1.
	(java_float_finite): Convert to use union Word from javaop.h.
	(java_double_finite): Convert to use union DWord from javaop.h.

2000-02-02  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (options): Added `jni' entry.
	(help): Document -jni.
	(flag_jni): New global.
	(process_file): Handle JNI output.  Don't print text from
	-prepend, -add, etc, when generating stubs.  Only remove `.class'
	suffix if it actually exists.
	(main): Create a `.c' file when run with `--jni --stubs'.  Create
	correct output file name with `--jni'.
	(print_include): Mangle header name differently in JNI case.
	(HANDLE_METHOD): In JNI mode, call print_method_info to generate
	method list.
	(print_method_info): Handle JNI case.  Put signature info into
	method name.  Handle case when STREAM is NULL.
	(print_name_for_stub_or_jni): New function.
	(print_stub_or_jni): Renamed from `print_stub'.  Handle JNI.
	(print_cxx_classname): Handle JNI.
	(print_full_cxx_name): Likewise.
	(decode_signature_piece): Likewise.
	(overloaded_jni_method_exists_p): New function.
	(struct method_name): Added `signature' and `sig_length' fields.
	(HANDLE_END_FIELD): Do nothing in JNI mode.

2000-02-02  Tom Tromey  <tromey@cygnus.com>

	* jv-scan.c: Include version.c, <getopt.h>.
	(LONG_OPT, OPT_HELP, OPT_VERSION): New macros.
	(options): New array.
	(usage): New function.
	(version): New function.
	(main): Use getopt_long to parse command line.
	* jcf-dump.c: Include version.c, <getopt.h>.
	(LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_VERSION,
	OPT_JAVAP): New macros.
	(options): New array.
	(usage): Return `void'.  Changed message.
	(help): New function.
	(version): New function.
	(main): Use getopt_long_only to parse command line.
	* gjavah.c: Include <getopt.h>.
	(LONG_OPT, OPT_classpath, OPT_CLASSPATH, OPT_HELP, OPT_TEMP,
	OPT_VERSION, OPT_PREPEND, OPT_FRIEND, OPT_ADD, OPT_APPEND, OPT_M,
	OPT_MM, OPT_MG, OPT_MD, OPT_MMD): New macros.
	(options): New array.
	(java_no_argument): Removed.
	(help): Updated with missing options.
	(main): Use getopt_long_only to parse command line.
	(usage): Changed message.

2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.def (NEW_ANONYMOUS_ARRAY_EXPR): New tree code.
	* parse.h (ANONYMOUS_ARRAY_BASE_TYPE, ANONYMOUS_ARRAY_DIMS_SIG,
	ANONYMOUS_ARRAY_INITIALIZER): New access macros.
	* parse.y (array_creation_expression:): Handle anonymous arrays.
	(build_array_from_name): Don't set `ret_name' if null.
	(resolve_qualified_expression_name): New case NEW_ANONYMOUS_ARRAY_EXPR.
	(qualify_ambiguous_name): Likewise.
	(java_complete_expand_class): Likewise.

2000-02-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.def (SYNCHRONIZED_EXPR): Fixed typo.
	* parse.h (MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID): New macro.
	(MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR): Likewise.
	(SKIP_THIS_AND_ARTIFICIAL_PARMS): Use DECL_FINIT_P.
	(AIPL_FUNCTION_FINIT_INVOCATION): Replaces
	AIPL_FUNCTION_COMPLETED_INVOCATION.
	(AIPL_FUNCTION_CTOR_INVOCATION): Replaces
	AIPL_FUNCTION_INVOCATION_READY.
	(AIPL_FUNCTION_DECLARATION): New enum entry.
	* parse.y (reorder_static_initialized): New function.
	(java_parser_context_pop_initialized_field): Use it.
	(add_inner_class_fields): Use
	MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID. Comment
	augmented. Install marker after last alias initializer, if any.
	(generate_finit): Fixed typo. Don't try to retain only the used
	fields.
	(method_header): Compute and set DECL_FUNCTION_NAP.
	(method_declarator): Fixed comment. Insert alias initializer in
	parameter list.
	(build_alias_initializer_parameter_list): Fixed leading
	comment. New case for AIPL_FUNCTION_DECLARATION. Old enum value
	replaced by new ones. Use MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID.
	(java_complete_expand_class): Code to retain only used aliases
	removed.
	(java_complete_expand_methods): New local `first_decl'. Generate
	$finit$ first, then expand the constructors, regular methods and
	<clinit>.
	(java_complete_expand_method): Don't report error on missing
	return statement if previously detected bogus.
	(fix_constructors): Don't patch constructor parameters list.
	(patch_method_invocation): Use new AIPL enum values. Reverse
	alias initializer list for anonymous classes.

2000-01-30  Anthony Green  <green@redhat.com>

	* jcf-write.c (generate_bytecode_insns): Use TYPE_IS_WIDE to
	determine how many stack slots to pop.

2000-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (formal_parameter:): Set `$$' to NULL_TREE for better
	error handling/recovery.
	* java-tree.h (SYNCHRONIZED_EXPR): Fixed typo in comment.

2000-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (ARG_FINAL_P, FIELD_LOCAL_ALIAS,
	FIELD_LOCAL_ALIAS_USED): New macros.
	(DECL_FUNCTION_NAP): New macro.
	(struct lang_decl): New field `nap'.
	(TYPE_FINIT_STMT_LIST, TYPE_CLINIT_STMT_LIST): New macros.
	(struct lang_type): New fields `finit_stmt_list' and
	`clinit_stmt_list'.
	(CLASS_HAS_FINIT_P): Defined using TYPE_FINIT_STMT_LIST.
	* parse.h (MANGLE_OUTER_LOCAL_VARIABLE_NAME): New macro.
	(SKIP_THIS_AND_ARTIFICIAL_PARMS, MARK_FINAL_PARMS,
	UNMARK_FINAL_PARMS, CRAFTED_PARAM_LIST_FIXUP): New macros.
	(AIPL_FUNCTION_CREATION, AIPL_FUNCTION_COMPLETED_INVOCATION,
	AIPL_FUNCTION_INVOCATION_READY): New enum fields.
	(BUILD_THROW): Macro line separator re-indented.
	* parse.y (end_class_declaration): New function.
	(maybe_generate_pre_expand_clinit): New name for
	java_pre_expand_clinit. Create <clinit> off TYPE_CLINIT_STMT_LIST,
	pre-expand static fields.
	(maybe_generate_clinit): Function deleted.
	(check_for_static_method_reference): Prototype's parameter list
	indented.
	(generate_finit): New name for maybe_generate_finit. Changed
	leading comment. Function rewritten to use
	TYPE_FINIT_STMT_LIST. Call build_alias_initializer_parameter_list.
	(build_alias_initializer_parameter_list): New function.
	(java_parser_context_pop_initialized_field): Likewise.
	(add_inner_class_fields): Likewise.
	(type_declaration:): Call end_class_declaration.
	(class_member_declaration:): Likewise.
	(formal_parameter_list:): Fixed typos.
	(formal_parameter:): Use ARG_FINAL_P to mark created tree list
	element. Improved error handling.
	(block_statement:): Call end_class_declaration.
	(anonymous_class_creation:): Likewise.
	(create_anonymous_class): Fixed comments.
	(create_class): Call add_inner_class_fields.
	(register_fields): Set FIELD_LOCAL_ALIAS according to ARG_FINAL_P.
	(method_header): Use MARK_FINAL_PARMS.
	(finish_method_declaration): Use UNMARK_FINAL_PARMS.
	(method_declarator): Propagate final argument flag.
	(craft_constructor): New local `artificial'. Call
	build_alias_initializer_parameter_list. Use
	CRAFTED_PARAM_LIST_FIXUP, assign DECL_FUNCTION_NAP.
	(source_start_java_method): Mark parm decls with LOCAL_FINAL if
	necessary.
	(complete_expand_class): Get rid of unused outer context local
	alias fields.
	(java_complete_expand_methods): Fixed leading
	comment. Generate/pre-expand <clinit> first. Changed method
	expansion order to regular, $finit$, constructors, <clinit>.
	(java_complete_expand_method): Set current_function_decl.
	(fix_constructors): Fix constructor parameter list to account for
	outer context local alias initializers.
	(verify_constructor_super): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
	(resolve_expression_name): Lookup outer context local aliases. New
	local `access', use it.
	(patch_method_invocation): Patch inner class ctor invocation with
	outer context local aliases initialization values. $finit$
	invocation patching now includes things generated with
	build_alias_initializer_parameter_list.
	(argument_types_convertible): Use SKIP_THIS_AND_ARTIFICIAL_PARMS.
	(build_super_invocation): Likewise.
	(patch_assignment): Changed comment.

2000-01-27  Andrew Haley  <aph@cygnus.com>

	* jcf-write.c (emit_goto): RESERVE 3 bytes for insn.
	(emit_if): Ditto.
	(emit_jsr): Ditto.

2000-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string
	concatenation.
	(OBSOLETE_MODIFIER_WARNING2): New macro allowing two args.

	* parse.y (register_fields): Don't pass a format specifier to
	OBSOLETE_MODIFIER_WARNING.
	(check_abstract_method_header): Use OBSOLETE_MODIFIER_WARNING2
	instead of OBSOLETE_MODIFIER_WARNING, and don't pass a format
	specifier.
	(check_modifiers): Change function into a macro.
	(check_class_interface_creation): Pass a literal format string.

2000-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* buffer.h: PROTO -> PARAMS.
	* check-init.c: Likewise.
	* class.c: Likewise.
	* constants.c: Likewise.
	* convert.h: Likewise.
	* decl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* gjavah.c: Likewise.
	* java-except.h: Likewise.
	* java-tree.h: Likewise.
	* jcf-depend.c: Likewise.
	* jcf-dump.c: Likewise.
	* jcf-parse.c: Likewise.
	* jcf-path.c: Likewise.
	* jcf-reader.c: Likewise.
	* jcf-write.c: Likewise.
	* jcf.h: Likewise.
	* jv-scan.c: Likewise.
	* jvgenmain.c: Likewise.
	* jvspec.c: Likewise.
	* lang.c: Likewise.
	* lex.c: Likewise.
	* lex.h: Likewise.
	* parse-scan.y: Likewise.
	* parse.h: Likewise.
	* parse.y: Likewise.
	* typeck.c: Likewise.
	* verify.c: Likewise.
	* xref.c: Likewise.
	* xref.h: Likewise.
	* zextract.c: Likewise.
	* zipfile.h: Likewise.

2000-01-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (make_class): Use MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
	(is_compiled_class): Remove test on TYPE_LANG_SPECIFIC, use TYPE_JCF.
	* constants.c (build_constant_data_ref): Check for cached
	current_constant_pool_data_ref. Cache current_constant_pool_data_ref
	in TYPE_CPOOL_DATE_REF.
	* java-tree.h (TYPE_JCF, TYPE_CPOOL, TYPE_CPOOL_DATA_REF,
	MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC:) New macros.
	(struct lang_type): New fields `cpool' and `cpool_data_ref'.
	(LOCAL_FINAL): New macro.
	* jcf-parse.c (init_outgoing_cpool): Always allocate new outgoing
	constant pool -- don't try to reuse.
	(parse_zip_file_entries): Use TYPE_JCF, don't lazily allocate
	TYPE_LANG_SPECIFIC.
	(find_in_current_zip): Use TYPE_JCF.
	* parse.h (java_check_final): Prototype removed.
	* parse.y (create_class): Reversed Jan 12, 2000 extra argument patch.
	(maybe_create_class_interface_decl,
	check_class_interface_creation): Likewise.
	(java_expand_finals): Function removed.
	(class_declaration:): Reversed Jan 12, 2000 extra argument patch.
	(block_statement:): Fixed comment.
	(anonymous_class_creation:): Likewise.
	(check_class_interface_creation): Reversed Jan 12, 2000 extra
	argument patch.
	(check_class_interface_creation): Loosened error report on (inner)
	public class declarations. CPC_INNER_P replaces GET_CPC_LIST.
	(link_nested_class_to_enclosing): Reversed Jan 12, 2000 patch.
	(maybe_create_class_interface_decl): Reversed Jan 12, 2000 extra
	argument patch.
	(create_interface): Likewise.
	(anonymous_class_counter): New static global.
	(create_anonymous_class): Reversed Jan 12, 2000 extra argument
	patch. Fixed comments.
	(create_class): Reversed Jan 12, 2000 extra argument patch. Reset
	anonymous_class_counter when declaring a toplevel class.
	(craft_constructor): Fixed constructor name when handling
	anonymous classes. Anonymous class constructors to feature hidden
	this$<n> parameter.
	(java_fix_constructors): Added comment.
	(java_check_final): Function removed.
	(java_complete_expand_methods): Fixed comment. Don't generate
	class data, save its outgoing constant pool instead.
	(verify_constructor_super): Skip anonymous class constructor
	hidden this$<n> parameter.
	(java_expand_classes): New local `saved_ctxp'. Removed call to
	java_expand_finals and java_check_final. Expand anonymous class
	constructors. Generate class data.
	(build_super_invocation): Skip anonymous class hidden this$<n>
	parameter.
	* typeck.c (build_java_signature): Use TYPE_SIGNATURE and
	MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC.
	(set_java_signature): Likewise.

2000-01-18  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>

	* gjavah.c: Delete ACC_VISIBILITY define.
	* jcf.h: Add ACC_VISIBILITY define.
	* parse.y: final: rule tagged <value>.
	(java_check_regular_methods): Use ACC_VISIBILITY define for
	default package access check.
	(local_variable_declaration_statement): Use final: rule.

2000-01-17  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>

	* parse.y (format_parameter:): Use final: rule instead of modifiers:.
	(final:): New rule.

2000-01-17  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_field_info): Allow non-static final fields.

2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (enum jdep_code): New entry `JDEP_ANONYMOUS'.
	* parse.y (patch_anonymous_class): New function.
	(create_anonymous_class): Register incomplete type when the
	class/interface to extends/implement isn't known yet.
	(parser_check_super_interface): Simplify argument to CLASS_INTERFACE.
	(verify_constructor_super): Tuned error message.

2000-01-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (FOR_LOOP_P): Replaces IS_FOR_LOOP_P.
	(ANONYMOUS_CLASS_P): New macro.
	(TYPE_SIGNATURE, TYPE_JCF): New macros.
	(INNER_CLASS_TYPE_P): Fixed typo in leading comment.
	* parse.y (create_class): Added leading argument.
	(maybe_create_class_interface_decl,
	check_class_interface_creation): Likewise.
	(craft_constructor): New function.
	(verify_constructor_super): Added argument in prototype.
	(class_declaration:): Inserted leading argument.
	(for_begin:): Use FOR_LOOP_P.
	(anonymous_class_creation): Create WFL of the anonymous class to
	instantiate. Call build_new_invocation. Added comments.
	(check_class_interface_creation): Handle parameter `anonymous' in
	verbose mode class creation announce.
	(link_nested_class_to_enclosing): Exclude anonymous classes.
	(maybe_create_class_interface_decl): Don't set DECL_CONTEXT on
	anonymous class, even though they appear to have an enclosing
	context.
	(create_interface): Pass extra argument to
	check_class_interface_creation.
	(create_anonymous_class): Set ANONYMOUS_CLASS_P to 1.
	(create_class): Call check_class_interface_creation and
	maybe_create_class_interface_decl with extra new argument. Don't
	add private this$<n> to anonymous classes.
	(method_declarator): Insert hidden this$<n> to anonymous class
	constructors.
	(java_fix_constructors): Deleted code creating default
	constructor. Call craft_constructor instead.
	(java_check_regular_methods): Set `saw_constructor' to 1 for
	anonymous classes.
	(fix_constructors): Pass extra argument to verify_constructor_super.
	(verify_constructor_super): New local `sdecl', use it. Search for
	matching constructor (possibly featuring arguments) in super
	class.
	(lookup_method_invoke): Craft constructor according to arguments
	list when dealing with anonymous class constructors.
	(build_super_invocation): Pass arguments to anonymous class super
	constructors.
	(search_loop): Use FOR_LOOP_P.
	(labeled_block_contains_loop_p): Likewise.

2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (set_super_info): Set CLASS_STATIC when appropriate.
	(enclosing_context_p): New function.
	(get_access_flags_from_decl): Handle CLASS_STATIC.
	(maybe_layout_super_class): Extra first argument passed to
	do_resolve_class.
	(layout_class_method): Use ID_FINIT_P, DECL_CLINIT_P and
	ID_INIT_P.
	* decl.c (access0_identifier_node): New global.
	(init_decl_processing): access0_identifier_node initialized.
	(pushdecl): Set DECL_CONTEXT only on non type decls.
	* expr.c (lookup_field): Lookup inner class fields in enclosing
	contexts.
	(expand_invoke): Use ID_INIT_P.
	(expand_java_field_op): Use DECL_CLINIT_P.
	* java-tree.def (CLASS_LITERAL): New tree code.
	* java-tree.h (DECL_FUNCTION_ACCESS_DECL,
	DECL_FUNCTION_INNER_ACCESS, FIELD_INNER_ACCESS): New macros.
	(struct lang_decl): New field `inner_access'.
	(enclosing_context_p): Prototyped.
	(DECL_INIT_P, DECL_FINIT_P, DECL_CLINIT_P, ID_INIT_P, ID_FINIT_P,
	ID_CLINIT_P): New macros.
	(CLASS_STATIC): New macro.
	(CLASS_ACCESS0_GENERATED_P): New macro.
	(OUTER_FIELD_ACCESS_IDENTIFIER_P, INNER_CLASS_DECL_P,
	TOPLEVEL_CLASS_DECL_P, INNER_CLASS_TYPE_P, TOPLEVEL_CLASS_TYPE_P,
	INNER_CLASS_P): New macros.
	(DECL_INNER_CLASS_LIST): New macro.
	* jcf-parse.c (yyparse): Avoid the use of ANSI string
	concatenation.
	* jcf-write.c (generate_bytecode_insns): binop: Change the type of
	the shift value to int. Fixed typo in comment.
	* lex.c (inst_id, wpv_id): Initialize.
	* mangle.c (unicode_mangling_length): Take `$' into account.
	* parse.h (DRECOVER, RECOVER): Terminate properly.
	(IDENTIFIER_INNER_CLASS_OUTER_FIELD_ACCESS): New macro.
	(typedef struct _jdep): New field `enclosing'.
	(JDEP_ENCLOSING): New macro.
	(IS_CLINIT): Deleted (DECL_CLINIT_P replaces it.)
	(struct parser_ctxt): New fields `marker_beginning', `marked_end'.
	(GET_CPC_LIST, CPC_INNER_P, GET_CPC, GET_CPC_UN, GET_CPC_UN_MODE,
	GET_CPC_DECL_NODE, GET_ENCLOSING_CPC, GET_NEXT_ENCLOSING_CPC,
	GET_ENCLOSING_CPC_CONTEXT): New macros.
	(PUSH_CPC, PUSH_ERROR, POP_CPC): New macros.
	(do_resolve_class): Added extra argument in prototype.
	* parse.y (resolve_class): Added extra argument in prototype.
	(maybe_create_class_interface_decl): Likewise.
	(maybe_use_access_method, build_wfl_wrap): New functions.
	(java_complete_expand_classes, java_complete_expand_class):
	Likewise.
	(java_parser_context_push_initialized_field,
	java_parser_context_suspend, java_parser_context_resume):
	Likewise.
	(maybe_make_nested_class_name, make_nested_class_name,
	set_nested_class_simple_name_value,
	link_nested_class_to_enclosing, find_as_inner_class,
	find_as_inner_class_do, check_inner_class_redefinition,
	build_thisn_assign, build_current_thisn, build_access_to_thisn,
	maybe_build_thisn_access_method, build_outer_field_access,
	build_outer_field_access_methods, build_outer_field_access_expr,
	build_outer_method_access_method, build_new_access_id,
	build_outer_field_access_method, outer_field_access_p,
	outer_field_expanded_access_p, outer_field_access_fix,
	build_incomplete_class_ref, patch_incomplete_class_ref,
	create_anonymous_class): Likewise.
	(inst_id, wpv_id): New static global variables.
	(synchronized:): New rule, tagged <node>.
	(type_declaration:): No longer tagged <node>. Call POP_CPC in sub
	rules.
	(anonymous_class_creation:): New rule, tagged <node>.
	(NEW_TK): Tagged <node>.
	(type_literals, array_type_literal): New rules, tagged <node>.
	(class_declaration:): Removed action when reducing by class_body:
	(class_body:): Set DECL_END_SOURCE_LINE and rule's returned value
	using GET_CPC in sub-rules.
	(class_member_declaration): Handle inner classes.
	(method_declaration): When reducing method_header:, reset
	current_function_decl when appropriate.
	(method_declarator:): Set the number of formal parameter to 0 for
	method declared without arguments.
	(constructor_declarator:): Likewise.
	(static_initializer:): List of elements kept in a list.
	(static:): Rule modifiers: replaces MODIFIER_TK. Enforce correct
	use of the keyword `static' for type declarations.
	(block_statement:): Handle inner class declarations.
	(primary_no_new_array:): Use type_literals:. Fixed comment. Handle
	type qualified `this'.
	(class_instance_creation_expression): Use anonymous_class_creation:
	to handle inner class instances creation. Handle qualified `new'.
	(something_dot_new): Added appropriate actions.
	(create_new_parser_context): New function.
	(java_push_parser_context, java_parser_context_save_global,
	java_parser_context_suspend): Use create_new_parser_context.
	(check_modifiers): Changed leading comment.
	(check_class_interface_creation): Handle interclasses.
	(add_superinterfaces): Fixed comment.
	(create_interface): Build qualified name from the raw_name instead
	of its matching WFL. Push the initialized fields list. raw_name added
	as an extra argument to maybe_create_class_interface_decl.
	(create_class): Build qualified name from the raw_name instead of
	its matching WFL. Removed assignment to	current_parsed_class_un.
	Call PUSH_ERROR before returning an error. Suspend the current
	parser context when processing an inner class. Push the
	initialized fields list. raw_name added as an extra argument to
	maybe_create_class_interface_decl. Add the private this$<n>
	field.
	(duplicate_declaration_error_p): Use GET_CPC when calling find_field.
	(register_fields): Get the class type from GET_CPC and handle
	previous errors.  Added code to handle the creation of static
	fields in inner classes. Initialized fields initialization
	statements kept in a list of lists.
	(maybe_generate_finit): Initialized fields initialization
	statements kept in a list of lists. Use GET_CPC.
	(maybe_generate_clinit): Likewise.
	(method_header): Use GET_CPC and GET_CPC_UN.
	(parser_qualified_classname): Handle inner classes.
	(register_incomplete_type): Set JDEP_ENCLOSING using GET_CPC.
	(java_fix_constructors): Hide pointer to enclosing context
	instance in constructor list when dealing with inner classes.
	(jdep_resolve_class): Call resolve_class with extra first argument
	JDEP_ENCLOSING.
	(resolve_class): Add enclosing context as a first extra argument
	to do_resolve_class.
	(do_resolve_class): Call find_as_inner_class. Handle WFLs
	properly.
	(resolve_no_layout): Extra argument added to resolve_class
	invocation.
	(reset_method_name): Use DECL_CLINIT_P, DECL_FINIT_P.
	(java_get_real_method_name): Use GET_CPC_UN.
	(check_abstract_method_definitions): Use DECL_CLINIT_P.
	(java_check_abstract_methods): Handle static method declared in
	inner classes by an error.
	(java_check_regular_methods): Use DECL_CLINIT_P.
	(source_start_java_method): Also set DECL_MAX_LOCALS.
	(create_artificial_method): Call java_parser_context_save_global
	and java_parser_context_restore_global instead of saving/restoring
	the context by hand.
	(expand_start_java_method): Improved verbose mode message.
	(java_complete_expand_methods): Fixed leading comment. Use
	DECL_CLINIT_P.
	(fix_constructors): Added assignment to this$<n> if necessary.
	(java_expand_classes): Call java_complete_expand_classes instead
	of java_complete_expand_methods.
	(make_qualified_primary): Simplified.
	(merge_qualified_name): Optimized for missing left or right parts.
	(resolve_expression_name): Handle access to outer class fields from
	interclasses.
	(resolve_qualified_expression_name): New macro
	RESTORE_THIS_AND_CURRENT_CLASS, used. Handle creation of inner
	classes. Report error on non appropriate qualification of
	`new'. Handle qualified `this'.
	(not_accessible_p): Allow access to outer class private fields from
	inner classes.
	(patch_method_invocation): Handle method invocations through
	access methods and inner class constructor invocations.
	(find_applicable_accessible_methods_list): Search enclosing
	contexts of an inner class.
	(search_applicable_methods_list): Fixed typo.
	(argument_types_convertible): Handle inner class constructors'
	hidden outer context reference argument.
	(qualify_ambiguous_name): Handle qualified `this'.
	(java_complete_lhs): Handle use of field accessed through
	artificial access methods in various cases of assignments. Handle
	CLASS_LITERAL node.
	(check_final_assignment): Use DECL_CLINIT_P.
	(valid_ref_assignconv_cast_p): Handle the destination being an
	enclosing context of the source.
	(patch_unaryop): Handle use of field accessed through artificial
	access methods.
	(patch_return): Use DECL_CLINIT_P.
	(patch_throw_statement): Use DECL_CLINIT_P.
	(check_thrown_exceptions): Use DECL_FINIT_P and DECL_INIT_P.
	* verify.c (verify_jvm_instructions): Use ID_CLINIT_P and
	ID_INIT_P.

2000-01-16  Anthony Green  <green@cygnus.com>

	* parse.y (build_string_concatenation): Only use
	StringBuffer(String) shortcut if String arg is constant.

2000-01-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): binop: Change the type of
	the shift value to int. Fixed typo in comment.

2000-01-11  Mumit Khan  <khan@xraylith.wisc.edu>

	* jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
	* jcf-write.c: Likewise.
	* parse.y: Likewise.
	* parse.c: Regenerate.

2000-01-09  Anthony Green  <green@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): Emit invokeinterface
	bytecodes in the correct order.

2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).

2000-01-06  Anthony Green  <green@cygnus.com>

	* expr.c (java_lang_expand_expr): Switch to permanent obstack
	before building constant array decl.

2000-01-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_conditional): Fixed indentation in
	method invocation and typo in conditional expression.
	(generate_bytecode_insns): COND_EXPR can be part of a binop. Issue
	the appropriate NOTE_POP.
	* parse.y (patch_binop): Shift value mask to feature the right
	type.

1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (assume_compiled, assume_compiled_node): Add static
	prototype.
	(add_assume_compiled): Use xmalloc/xstrdup, not malloc/strdup.

	* jcf-dump.c (ARRAY_NEW_NUM): Cast long to int in switch.

	* jvgenmain.c (usage): Add static prototype with ATTRIBUTE_NORETURN.

	* parse.h (OBSOLETE_MODIFIER_WARNING): Rename parameter `modifier'
	to `__modifier' to avoid stringifying it.

	* parse.y (verify_constructor_circularity): Don't call a variadic
	function with a non-literal format string.
	(java_check_abstract_methods): Move unreachable code inside
	`continue' statement.
	(lookup_method_invoke): Call xstrdup, not strdup.

	* expr.c (expand_java_field_op): Avoid the use of ANSI string
	concatenation.

	* jcf-parse.c (yyparse): Likewise.

	* jv-scan.c (main): Likewise.

1999-12-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* parse.h (ABSTRACT_CHECK, JCONSTRUCTOR_CHECK,
	ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
	ERROR_CAST_NEEDED_TO_INTEGRAL): Avoid the use of ANSI string
	concatenation.

	* parse.y (synchronized, variable_redefinition_error,
	check_class_interface_creation, create_interface, create_class,
	method_header, finish_method_declaration,
	check_modifiers_consistency, method_declarator,
	complete_class_report_errors, check_abstract_method_definitions,
	java_check_regular_methods, check_throws_clauses,
	java_check_abstract_methods, read_import_dir,
	check_pkg_class_access, declare_local_variables, fix_constructors,
	cut_identifier_in_qualified, resolve_expression_name,
	resolve_qualified_expression_name, patch_method_invocation,
	java_complete_lhs, patch_assignment, try_builtin_assignconv,
	patch_binop, patch_array_ref, patch_newarray, build_labeled_block,
	patch_exit_expr, patch_exit_expr, patch_switch_statement,
	patch_try_statement, patch_synchronized_statement,
	patch_throw_statement, check_thrown_exceptions,
	patch_conditional_expr): Likewise.

1999-12-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in (LIBDEPS): Added gcc's errors.o
	(../jcf-dump$(exeext):): Link with gcc's errors.o
	(../gcjh$(exeext):): Likewise.
	* expr.c (expand_java_NEW): Layout the entire target type instead of
	laying out its methods only.
	(lookup_field): Layout the class after having loaded it.
	* java-tree.h (java_debug_context): Declared.
	* jcf-io.c (toplev.h): Included.
	(find_class): Removed assignment to jcf's outofsynch
	field. Force source file to be read if newer than its matching
	class file. Tweaked debug messages.
	* jcf-parse.c (jcf_out_of_synch): Deleted.
	(read_class): Call to jcf_out_of_synch removed.
	* jcf.h (typedef struct JCF): Field `outofsynch' deleted.
	(jcf_out_of_synch): Prototype deleted.
	* parse.h (struct parser_ctxt): `minus_seen', `java_error_flag',
	`deprecated' and `class_err': integer turned into bit-fields.
	New bit-fields `saved_data_ctx' and `saved_data'. Fixed comments.
	* parse.y (package_list): New global.
	(package_declaration:): Record newly parsed package name.
	(extra_ctxp_pushed_p): Static global deleted.
	(java_parser_context_save_global): Create buffer context for the
	purpose of saving globals, if necessary.
	(java_parser_context_restore_global): Pop context pushed for the
	purpose of saving globals, if necessary.
	(java_debug_context_do): New prototype and function.
	(java_debug_context): Likewise.
	(do_resolve_class): Use already parsed package names to qualify
	and lookup class candidate.
	(java_pre_expand_clinit): Removed unnecessary local variable.

1999-12-17  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (decode_signature_piece): Print "::" in JArray<>.  This
	fixes PR gcj/119.
	(process_file): Use `\n\' at end of each line in string.

1999-12-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (expand_invoke): Layout the loaded class before
	attempting to use it.
	(expand_java_field_op): Allow final field assignments to take
	place in $finit$.
	* typeck.c (convert): Return error_mark_node if expr is null.

1999-12-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (class_depth): Return -1 if the class doesn't load
	properly.
	* expr.c (can_widen_reference_to): Check for errors during depth
	computation and return 0 accordingly.
	* jcf-parse.c (parse_source_file): Call java_fix_constructors to
	create default constructors and add an other error check.
	* parse.h (java_fix_constructors): Prototyped.
	* parse.y (java_pre_expand_clinit): Likewise.
	(build_super_invocation): Re-prototyped to feature one argument.
	(java_check_circular_reference): Directly use `current'.
	(java_fix_constructors): New function.
	(java_check_regular_methods): Don't create default constructors
	here, but abort if none were found.
	(java_complete_expand_methods): Pre-process <clinit> calling
	java_pre_expand_clinit.
	(java_pre_expand_clinit): New function.
	(fix_constructors): build_super_invocation invoked with the
	current method declaration as an argument.
	(build_super_invocation): Use the context of the processed method
	decl argument instead of current_class.
	* typeck.c (lookup_java_method): Take WFLs in method names into
	account.

1999-12-14  Per Bothner  <per@bothner.com>

	* class.c (make_class_data): flag_keep_inline_functions to keep
	private methods in the method array.

1999-12-15  Anthony Green  <green@cygnus.com>

	* check-init.c (check_init): Take into account both types of
	`throw's when checking for uninitialized variables.

1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_lhs): Force conversion of array
	dimensions to int_type_node, that's what runtime's ABI expects.

1999-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (EXPR_WFL_QUALIFICATION): Temporary uses the third
	operand of a WFL, until the Java front-end gets fixed with regard
	to Mark Mitchell's gcc/tree.h patch (1999-12-04.)

1999-12-10  Andrew Haley  <aph@cygnus.com>

	* parse.h (BUILD_THROW): Add support for sjlj-exceptions.
	decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
	expr.c (build_java_athrow): Add support for sjlj-exceptions.
	java-tree.h: Ditto.
	jcf-write.c: Ditto.

1999-12-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (java_lang_expand_expr): Switch to permanent obstack
	before calling expand_eh_region_start and expand_start_all_catch.
	* except.c (expand_start_java_handler): Switch to permanent
	obstack before calling expand_eh_region_start.
	(expand_end_java_handler): Switch to permanent obstack before
	calling expand_start_all_catch.

1999-12-5  Anthony Green  <green@cygnus.com>

	* decl.c (init_decl_processing): Mark throw_node as a noreturn
	function with side effects.
	(init_decl_processing): Mark all memory allocating DECLs with
	DECL_IS_MALLOC.

1999-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* except.c (expand_end_java_handler): Call
	expand_resume_after_catch and end_catch_handler.

1999-11-30  Anthony Green  <green@cygnus.com>

	* verify.c (verify_jvm_instructions): Create new return label
	chain if non existent (don't rely on the verified state of the jsr
	target.)

1999-11-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (generate_bytecode_insns): Fixed indentation for
	COMPOUND_EXPR and FIX_TRUNC_EXPR cases.

	* parse.y (patch_assignment): Removed bogus final class test on
	lhs when checking on whether to emit an ArrayStoreException runtime
	check.
	* expr.c (expand_java_arraystore): Likewise.

1999-11-28 Anthony Green <green@cygnus.com>

	* decl.c (find_local_variable): Reuse single slot decls when
	  appropriate.

1999-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (saw_java_source): Global variable removed.
	(read_class): Don't use `saw_java_source'. Added extra braces.
	(yyparse): Code setting `saw_java_source' removed.

1999-11-24  Mark Mitchell  <mark@codesourcery.com>

	* except.c (emit_handlers): Zero catch_clauses after emitting them.

1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* verify.c (merge_type_state): Non verified subroutines being
	considered more than once to trigger passive type merge.

1999-11-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
	in case of error. Error message tuned.

1999-11-21  Anthony Green  <green@cygnus.com>

	* constants.c (find_methodref_index): Unwrap method names before
	inserting them in the constant pool.

	* jcf-parse.c (jcf_parse): Display `interface' when appropriate.

	* class.c (assume_compiled_node): New typedef.
	(assume_compiled_tree): New static data.
	(find_assume_compiled_node): New function.
	(add_assume_compiled): New function.
	(assume_compiled): New function.
	* class.c (make_class_data): Use assume_compiled.
	(is_compiled_class): Use assume_compiled.

	* java-tree.h (add_assume_compiled): Declare.

	* lang.c (lang_decode_option): Parse new options.

1999-11-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class): Always convert TYPE_SIZE_UNIT to
	int_type_node: that's what `_Jv_AllocObject' expects.

1999-11-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (lookup_method_invoke): Use lang_printable_name to
	reliably build the type name during error report. Fixes PR gcj/97.

1999-11-09  Tom Tromey  <tromey@cygnus.com>

	* jcf-path.c: Include <sys/stat.h>.
	(jcf_path_init): Search for libjava.zip.  Fixes PR gcj/84.
	(DIR_UP): New macro.

1999-11-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (source_end_java_method): Resume permanent allocation,
	reversing Apr 27 1998 patch.
	(patch_string_cst): Pop obstacks after having pushed the permanent
	ones.

1999-11-05  Tom Tromey  <tromey@cygnus.com>

	* class.c (finish_class): Emit inlined methods if any native
	methods exist in the class.  Fixes PR gcj/85.

1999-11-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
	(qualify_ambiguous_name): Likewise.

1999-11-03  Godmar Back <gback@cs.utah.edu>

	* typeck.c: (lookup_java_method):  search all inherited
	interfaces when looking up interface method.

1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (method_header:): Issue error message for rule `type
	error'.
	(synchronized:): Error report when not using synchronized.

1999-11-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Prevent `this' from
	being used before the superclass constructor has been called.
	(complete_function_arguments): Use CALL_EXPLICIT_CONSTRUCTOR_P
	instead of `CALL_THIS_CONSTRUCTOR_P'.

1999-10-30  Todd T. Fries <todd@lighthouse.fries.net>

	* check-init.c: Fix typo in comment.

1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (add_method_1): Set DECL_INLINE to 1 for private, static
	and final method.

1999-10-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (expression_statement:): Call function to report
	improper invocation of a constructor.
	(parse_ctor_invocation_error): New function.

1999-10-26  Mark Mitchell  <mark@codesourcery.com>

	* decl.c (poplevel): Don't set BLOCK_TYPE_TAGS or call
	remember_end_note.

1999-10-21  Tom Tromey  <tromey@cygnus.com>

	* jvgenmain.c (main): _Jv_Compiler_Properties now an extern; set
	in generated `main'.

1999-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
	(qualify_ambiguous_name): Likewise.

1999-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_tree): fold_constant_for_init to work on
	permanent_obstack.
	(java_complete_lhs): Likewise.
	(array_constructor_check_entry): Complete an initializer element
	on permanent_obstack.

1999-10-19  Tom Tromey  <tromey@cygnus.com>

	* jcf-parse.c (parse_source_file): Call jcf_dependency_add_file.
	From Mike Moreton <mike@pillim.demon.co.uk>.

1999-10-15  Greg McGary  <gkm@gnu.org>

	* java-tree.h (flag_bounds_check): Remove extern decl.
	* lang.c (flag_bounds_check): Remove global variable.
	(lang_f_options): Remove "bounds-check" entry.
	(lang_init_options): Default flag_bounds_check to "on".

1999-10-14  Tom Tromey  <tromey@cygnus.com>

	* jvgenmain.c (usage): New function.
	(main): Use it.  Also, handle `-D' options.
	* jvspec.c (lang_specific_driver): Recognize -D.
	(jvgenmain_spec): Added `%{D*}' to jvgenmain invocation.

	* jvspec.c (jvgenmain_spec): Use `%umain', not just `%u'.

1999-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jcf-dump.c (print_constant, disassemble_method): Don't call a
	variadic function with a non-literal format string.

	* parse-scan.y (report_main_declaration): Likewise.

	* parse.h (ERROR_CAST_NEEDED_TO_INTEGRAL): Likewise.

	* parse.y (read_import_dir, patch_assignment, patch_binop,
	patch_array_ref): Likewise.

	* typeck.c (build_java_array_type): Likewise.

	* verify.c (verify_jvm_instructions): Likewise.

1999-10-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (RELOCATION_VALUE_1): Fixed integer value from 0 to 1.

1999-10-07  Anthony Green  <green@cygnus.com>

	* jcf-write.c (generate_classfile): Use UNSAFE_PUTx in cases
	where CHECK_PUT may fail for valid reasons.

	* jcf-write.c (UNSAFE_PUT1, UNSAFE_PUT2, UNSAFE_PUT3,
	UNSAFE_PUTN): New macros.

1999-10-04  Tom Tromey  <tromey@cygnus.com>

	* lex.h (BUILD_OPERATOR2): Return ASSIGN_ANY_TK in `lite' case as
	well.  Fixes Java PR gcj/59.
	* parse-scan.y (yyerror): Report errors.

1999-09-24  Glenn Chambers  <GChambers@provsol.com>

	* decl.c (insert_block): Remove unconditional `abort'.

1999-09-24  Bernd Schmidt  <bernds@cygnus.co.uk>

	* decl.c (builtin_function): No longer static.  New arg CLASS.  Arg
	FUNCTION_CODE now of type int.  All callers changed.
	Set the builtin's DECL_BUILT_IN_CLASS.

1999-09-23  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (lang_specific_driver): Don't read spec file if
	-fsyntax-only given.

1999-09-22  Tom Tromey  <tromey@cygnus.com>

	* lang-specs.h: Added `%(jc1)' to the jc1 spec.

	* javaop.h (WORD_TO_FLOAT): Use `inline' unconditionally.
	(WORDS_TO_LONG): Likewise.
	(WORDS_TO_DOUBLE): Likewise.

1999-09-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-write.c (RELOCATION_VALUE_0): New macro.
	(RELOCATION_VALUE_1): Likewise.
	(emit_iinc, emit_reloc, push_constant1, push_constant2,
	push_in_const, push_long_const): Prototyped.
	(push_constant1): Argument `index' is of type HOST_WIDE_INT.
	(push_constant2): Likewise.
	(push_int_const): Cast find_constant1's integer arguments to `jword'.
	(find_constant_wide): Cast find_constant2's integer arguments to
	`jword'.
	(find_constant_index): Cast find_constant2's and find_constant2's
	integer arguments to `jword'.
	(emit_pop): Argument `value' is of type HOST_WIDE_INT.
	(emit_switch_reloc): Use RELOCATION_VALUE_0.
	(emit_if): Use RELOCATION_VALUE_1.
	(emit_goto): Likewise.
	(emit_jsr): Likewise.
	(generate_bytecode_insns): Use RELOCATION_VALUE_0. Cast second
	argument to push_long_const to HOST_WIDE_INT.

1999-09-15  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (parse.o): Depend on $(JAVA_TREE_H).

1999-09-20  Nick Clifton  <nickc@cygnus.com>

	* lang.c (lang_decode_option): Extend comment.

1999-09-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
	instead of fndecl.

1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (get_field_name, print_method_info, print_include,
	add_namelet): Use xmalloc, not malloc.

	* jcf-depend.c (add_entry): Likewise.  Use xstrdup, not strdup.
	(munge): Use xrealloc, not realloc, trust xrealloc to handle a
	NULL pointer.

	* jcf-io.c (open_in_zip, find_class): Use xstrdup, not strdup.

	* jcf-parse.c (jcf_out_of_synch, yyparse): Likewise.

	* jcf-path.c (add_entry): Likewise.

	* jcf.h (ALLOC, REALLOC): Use xmalloc/xrealloc, not malloc/realloc.

	* jv-scan.c (xmalloc): Remove definition.

	* jvgenmain.c (xmalloc): Likewise.

	* jvspec.c (lang_specific_driver): Use xcalloc, not xmalloc/bzero.

	* lex.c (java_store_unicode): Use xrealloc, not realloc.

	* parse-scan.y: Use concat, not of xmalloc/assign/strcpy.  Use
	concat, not xmalloc/sprintf.
	(java_push_parser_context): Use xcalloc, not xmalloc/bzero.
	(xstrdup): Remove definition.

	* parse.y (duplicate_declaration_error_p,
	constructor_circularity_msg, verify_constructor_circularity,
	check_abstract_method_definitions, java_check_regular_methods,
	java_check_abstract_methods, patch_method_invocation,
	check_for_static_method_reference, patch_assignment, patch_binop,
	patch_cast, array_constructor_check_entry, patch_return,
	patch_conditional_expr): Use xstrdup, not strdup.

	* zextract.c (ALLOC): Use xmalloc, not malloc.

1999-09-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (jvspec.o): Depend on system.h and gcc.h.

	* jvspec.c: Include gcc.h.  Don't include gansidecl.h.
	(do_spec, lang_specific_pre_link, lang_specific_driver,
	input_filename, input_filename_length): Don't declare.
	(main_class_name, jvgenmain_spec, lang_specific_driver):
	Constify a char*.
	(lang_specific_driver): All calls to the function pointer
	parameter now explicitly call `fatal'.

1999-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (find_applicable_accessible_methods_list): Search
	abstract classes as interfaces.

1999-09-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (finish_class): We're now outside a valid method
	declaration. Tell the rest of gcc so.

1999-09-08  Bruce Korb  autogen@linuxbox.com

	* Makefile.in: Give the gperf user a hint about why "gperf -F" fails.

1999-09-07  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (add_class_decl): Generate include for gcj/array.h, not
	java-array.h.
	(decode_signature_piece): Don't emit "::" in JArray<>.
	(print_namelet): Only print trailing `;' when printing a class.

1999-09-10  Bernd Schmidt  <bernds@cygnus.co.uk>

	* java-tree.h: Delete declarations for all tree nodes now moved to
	global_trees.
	* decl.c: Delete their definitions.

1999-09-04  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (jc1): Depend on ggc-callbacks.o.
	* Makefile.in (OBJS): Add ggc-callbacks.o.
	(OBJDEPS): Likewise.

1999-09-03  Tom Tromey  <tromey@cygnus.com>

	* parse.y (strip_out_static_field_access_decl): Return operand if
	it satisfies JDECL_P.

1999-09-02  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (decode_signature_piece): Emit "::" in JArray<>.
	Handle nested arrays, like `[[I'.

1999-09-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (finish_class): Remove unused parameter, all callers
	changed.

	* expr.c (build_java_athrow): Change return type to void.
	(java_lang_expand_expr): Make sure each case in switch returns a
	value.

	* java-tree.h (finish_class): Fix prototype to take void args.

	* jcf-dump.c (usage): Mark with ATTRIBUTE_NORETURN.
	(main): Issue return from main, not exit.

	* jcf-parse.c (parse_class_file): Fix call to `finish_class'.

	* jcf.h (jcf_unexpected_eof): Mark with ATTRIBUTE_NORETURN.

	* jv-scan.c (main): Issue return from main, not exit.

	* parse.y (check_abstract_method_definitions,
	java_check_abstract_method_definitions): Add static prototypes.
	(java_complete_expand_methods): Fix call to `finish_class'.

	* verify.c (verify_jvm_instructions): Initialize variables `oldpc'
	and `prevpc'.

1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lang.c (language_string): Constify.

1999-08-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (LIBS): Fix definition so we link with $(CLIB).
	Remove hacks for stuff which comes from libiberty.

	* Make-lang.in: Likewise.

1999-08-30  Hans-Peter Nilsson  <hp@axis.se>

	* Makefile.in (xref.o): Depend on xref.c explicitly.

1999-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* java-tree.h (lang_printable_name): Constify a char*.

	* lang.c (lang_printable_name): Likewise.

1999-08-27  Jeffrey A Law  (law@cygnus.com)

	* gjavah.c, jcf-write.c, verify.c: Do not use C++ style
	comments in C code.

1999-08-26  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_cxx_classname): Print "::" before qualified
	name.

1999-08-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (lookup_cl): Changed leading comment. Now does its best
	to set the column number.
	(qualify_ambiguous_name): Take WFL wrappers into account.

1999-08-25  Gregg Townsend  <gmt@cs.arizona.edu>

	* verify.c (verify_jvm_instructions): Don't check instruction
	validity beyond end of method.

1999-08-25  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (lang_specific_driver): Correctly handle --help again.

1999-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (print_name, print_base_classname, utf8_cmp,
	cxx_keyword_subst, generate_access, name_is_method_p,
	get_field_name, print_field_name, super_class_name, print_include,
	decode_signature_piece, print_class_decls, usage, help,
	java_no_argument, version, add_namelet, print_namelet): Add static
	prototype.
	(print_base_classname, utf8_cmp, cxx_keyword_subst,
	name_is_method_p): Constify a char*.
	(get_field_name): Likewise.  Prefer xstrdup over malloc/strcpy.
	Provide a final else clause in an if-else-if.
	(print_field_info): Add missing final arg in function call to
	`print_field_name'.
	(print_method_info, decompile_method, decode_signature_piece,
	print_c_decl, print_full_cxx_name, print_stub,
	print_mangled_classname, super_class_name, print_include,
	add_namelet, add_class_decl, print_class_decls, process_file,
	help): Constify a char*.

	* jcf-write.c (jcf_handler, push_constant1, push_constant2,
	push_int_const, find_constant_wide, find_constant_index,
	push_long_const, field_op, maybe_wide, emit_dup, emit_pop,
	emit_iinc, emit_load_or_store, emit_load, emit_store, emit_unop,
	emit_binop, emit_reloc, emit_switch_reloc, emit_case_reloc,
	emit_if, emit_goto, emit_jsr, call_cleanups,
	make_class_file_name): Add static prototypes.
	(generate_bytecode_return, generate_bytecode_insns): Pass a
	NULL_PTR, not a NULL_TREE.

	* jv-scan.c: Include "jcf.h".
	(main): Declare using DEFUN macro.

	* jvspec.c (find_spec_file, lang_specific_pre_link,
	lang_specific_driver): Add prototypes.
	(find_spec_file): Constify a char*.

	* keyword.gperf (hash, java_keyword): Add prototypes.

	* lang.c (lang_print_error): Add static prototype.
	(lang_init): Prefer memcpy over bcopy to avoid casts.

	* lex.c (yylex): Add static prototype.

	* parse-scan.y: Include "lex.c" earlier.

	* parse.h: Remove redundant declaration for `yylex'.

	* parse.y (java_decl_equiv, binop_compound_p, search_loop,
	labeled_block_contains_loop_p): Add static prototypes.
	(not_accessible_p): Make static to match prototype.

	* verify.c (start_pc_cmp): Don't needlessly cast away const.

1999-08-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (check_method_redefinition): Changed leading comment.
	(check_abstract_method_definitions): New function.
	(java_check_abstract_method_definitions): New function.
	(java_check_regular_methods): Call it.
	(verify_constructor_super): Fixed indentation.
	(lookup_method_invoke): Likewise.

1999-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (method_header): Return a null pointer if the current
	class node is null.
	(finish_method_declaration): Return if the current function decl
	is null.
	(source_start_java_method): Likewise.
	(java_method_add_stmt): Likewise.

1999-08-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (emit_register_class): Removed unnecessary call to
	start_sequence.
	* parse.y (labeled_block_contains_loop_p): Removed unused local
	variable.

1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_refold): Added prototype.

1999-08-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (BINOP_COMPOUND_CANDIDATES): New macro.
	(java_stabilize_reference): Removed unnecessary `else'.
	(java_complete_lhs): Set flag to remember boolean. Call
	java_refold. Added comments.
	(java_decl_equiv): New function.
	(binop_compound_p): Likewise.
	(java_refold): Likewise.
	(patch_unaryop): Striped static field access assigned to decl and
	op. Changed promotion scheme for ++/-- operators.
	(search_loop): New function.
	(labeled_block_contains_loop_p): Likewise.
	(patch_loop_statement): Call labeled_block_contains_loop_p. Added
	comment.
	(patch_bc_statement): Call search_loop. Fixed comment.

1999-08-14  Anthony Green  <green@cygnus.com>

	* expr.c (java_lang_expand_expr): Mark static array data as
	referenced.

1999-08-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* jvgenmain.c (main): NUL-terminate name_obstack.

1999-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* check-init.c (check_bool2_init, done_alternative): Add static
	prototypes.

	* class.c (add_interface_do, maybe_layout_super_class): Likewise.
	(add_method, build_utf8_ref, build_class_ref,
	append_gpp_mangled_type, layout_class_method): Constify a char*.

	* decl.c (push_promoted_type, make_binding_level): Add static
	prototypes.
	(push_promoted_type, pushdecl): Constify a char*.

	* except.c (find_handler_in_range, link_handler,
	check_start_handlers): Add static prototypes.

	* expr.c (process_jvm_instruction): Constify a char*.

	* gjavah.c (main): Constify a char*.

	* java-tree.h (verify_jvm_instructions, process_jvm_instruction):
	Constify a char*.

	* jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
	static prototypes.
	(add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
	munge, print_ents): Constify a char*.

	* jcf-dump.c (disassemble_method): Constify a char*.
	(print_constant_pool, print_exception_table): Add static prototypes.
	(print_constant, print_exception_table, main, disassemble_method):
	Constify a char*.

	* jcf-io.c (find_classfile, find_class): Likewise.

	* jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
	(set_source_filename, predefined_filename_p): Add static prototypes.
	(set_source_filename, get_constant, get_class_constant,
	find_in_current_zip): Constify a char*.

	* jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
	static prototypes.
	(add_entry, add_path, jcf_path_classpath_arg,
	jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.

	* jcf-reader.c (get_attribute, jcf_parse_preamble,
	jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
	jcf_parse_one_method, jcf_parse_methods,
	jcf_parse_final_attributes): Add static prototypes.
	(get_attribute): Constify a char*.

	* jcf.h (find_class, find_classfile, jcf_dependency_set_target,
	jcf_dependency_add_target, jcf_path_classpath_arg,
	jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.

	* jv-scan.c (main): Constify a char*.
	(gcc_obstack_init): Add prototype arguments.

	* jvgenmain.c (gcc_obstack_init): Likewise.
	(main): Constify a char*.

	* lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
	static prototypes.
	(put_decl_string, lang_print_error): Constify a char*.
	(lang_init): Remove redundant extern prototype.

	* mangle.c (emit_unicode_mangled_name): Constify a char*.

	* typeck.c (convert_ieee_real_to_integer, parse_signature_type):
	Add static prototypes.
	(get_type_from_signature): Constify a char*.

	* verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
	Add static prototypes.
	(start_pc_cmp): Prefer PTR over GENERIC_PTR.
	(verify_jvm_instructions): Constify a char*.

	* xref.c (xref_flag_value): Likewise.

	* xref.h (xref_flag_value): Likewise.

	* zextract.c (makeword, makelong): Add static prototypes.
	(makeword, makelong): Constify a uch*.

1999-08-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* lang.c (java_dummy_print): Constify a char*.
	(lang_print_error): Likewise.
	(lang_init): Remove redundant prototype for `print_error_function'.
	(lang_init_source): Likewise.
	(lang_identify): Constify a char*.

1999-08-09  Tom Tromey  <tromey@cygnus.com>

	* javaop.h (WORD_TO_FLOAT): only inline if building with gcc.
	(WORDS_TO_LONG): Likewise.
	(WORDS_TO_DOUBLE): Likewise.

1999-08-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (lang.o): Depend on $(RTL_H) $(EXPR_H).

	* expr.c (java_stack_pop, java_array_data_offset,
	build_java_throw_out_of_bounds_exception, case_identity,
	build_java_check_indexed_type): Add static prototypes.
	(linenumber_table, expand_invoke, expand_java_field_op,
	build_primtype_type_ref, expand_byte_code): Constify a char*.

	* java-tree.h (build_primtype_type_ref, linenumber_table):
	Constify a char*.
	(java_lang_expand_expr): Add prototype.

	* lang.c: Include rtl.h and expr.h.  Remove extern prototype for
	`java_lang_expand_expr'.

	* lex.c (java_lex_error): Constify a char*.
	(java_get_unicode, java_read_char, java_allocate_new_line,
	java_unget_unicode, java_sneak_unicode): Prototype.

	* parse-scan.y (current_class, package_name, method_declarator,
	report_class_declaration, yyerror): Constify a char*.

	* parse.h (java_report_errors): Prototype.
	(yyerror): Constify a char*.

	* parse.y (classitf_redefinition_error, check_modifiers,
	parse_jdk1_1_error, lookup_package_type,
	lookup_package_type_and_set_next, get_printable_method_name,
	purify_type_name): Constify a char*.
	(build_super_invocation, maybe_generate_finit,
	verify_constructor_super, parser_add_interface,
	add_superinterfaces, jdep_resolve_class, note_possible_classname,
	java_complete_expand_methods, java_expand_finals,
	cut_identifier_in_qualified, java_stabilize_reference,
	do_unary_numeric_promotion, operator_string, do_merge_string_cste,
	merge_string_cste): Prototype.
	(single_type_import_declaration, yyerror,
	variable_redefinition_error, build_array_from_name,
	build_unresolved_array_type, check_class_interface_creation,
	resolve_class, complete_class_report_errors,
	note_possible_classname, read_import_dir,
	find_in_imports_on_demand, resolve_package, fix_constructors,
	check_deprecation, lookup_method_invoke,
	maybe_build_primttype_type_ref, array_constructor_check_entry):
	Constify a char*.
	(java_complete_expand_methods, java_expand_finals): Make static.
	(convert_narrow): Remove static prototype.

1999-08-03  J"orn Rennecke <amylaar@cygnus.co.uk>

	* Makefile.in (decl.o): Depends on $(srcdir)/../defaults.h.

1999-08-02  Richard Henderson  <rth@cygnus.com>

	* decl.c: Include defaults.h instead of expr.h.
	* parse.y: Likewise.

1999-08-02  Jakub Jelinek  <jj@ultra.linux.cz>

	* java/decl.c (start_java_method): Change all uses of
	PROMOTE_PROTOTYPES, so that it tests it as a C expression.
	Ensure expr.h is included.
	* java/expr.c (pop_arguments): Ditto.
	* java/parse.y (expand_start_java_method): Ditto.

1999-08-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (ALL_CFLAGS): Add '-W -Wall'.

1999-07-31  Bernd Schmidt  <bernds@cygnus.co.uk>

	* decl.c: Include "function.h".
	* except.c: Likewise.
	* parse.y: Likewise.
	* Makefile.in: Update dependencies.

1999-07-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* expr.c (build_java_soft_divmod): Provide a default case in switch.
	(java_lang_expand_expr): Mark parameters `target', `tmode' and
	`modifier' with ATTRIBUTE_UNUSED.

	* gjavah.c (process_file): Add braces around ambiguous `else'.

	* jcf-dump.c (print_access_flags, localvar_free): Change return
	type to void.

	* parse.y (java_complete_expand_method): Initialize variable
	`exception_copy'.
	(resolve_qualified_expression_name): Likewise for `field_decl'.
	(patch_method_invocation): Likewise for `class_to_search'.
	(qualify_ambiguous_name): Likewise for `name' and `ptr_type'.
	(patch_assignment): Likewise for `lhs_type'.

	* verify.c (verify_jvm_instructions): Remove unused variable
	`caller'.

1999-07-25  Richard Henderson  <rth@cygnus.com>

	* decl.c (va_list_type_node): New.

1999-07-25  Anthony Green  <green@cygnus.com>

	* gjavah.c (print_stub): New function.
	(METHOD_IS_NATIVE): New macro.
	(print_mangled_classname): Make static.
	(HANDLE_END_FIELD): Don't emit fields during stub generation.
	(process_file): Perform stub generation.
	(HANDLE_METHOD): Don't emit class decls during stub
	generation.
	(HANDLE_END_METHOD): Take into account stub generation.
	(print_method_info): Handle stub generation.
	(print_stub): New function.
	(print_cxx_classname): Make signature consistant with others.
	(help): Describe -stubs option.
	(main): Create stub file.
	(version): Use version.c.
	(print_full_cxx_name): New function.
	(print_c_decl): Use print_full_cxx_name.

1999-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Handle MAX_EXPR.

1999-07-15  Andrew Haley  <aph@cygnus.com>

	* lang.c (flag_use_divide_subroutine): New variable.
	* typeck.c: (convert_ieee_real_to_integer): Bounds check
	fp-to-integer conversion.
	(convert): Call convert_ieee_real_to_integer when flag_fast_math
	is not set.

	* expr.c (build_java_soft_divmod): New function.
	(build_java_binop): Call build_java_soft_divmod if
	flag_use_divide_subroutine is set.
	* decl.c: soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
	soft_lrem_node: new builtin functions.
	(init_decl_processing) Initialize the new builtins.
	* java-tree.h soft_idiv_node, soft_irem_node, soft_ldiv_node, tree
	soft_lrem_node: new builtin functions.
	(build_java_soft_divmod): New function.
	* parse.y: Call build_java_soft_divmod if
	flag_use_divide_subroutine is set.
	* parse.c: Rebuilt.

	* jvspec.c (lang_specific_driver): Always allow an extra arg (for
	a --specs= arg) even if not linking.
	* lang-options.h (DEFINE_LANG_NAME ("Java")): Add
	-fuse-divide-subroutine

1999-07-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_and_layout): Check methods only once.
	(resolve_qualified_expression_name): Verify thrown exceptions
	compatibility.
	(check_thrown_exceptions): Reject exceptions thrown in
	initializer. Error message tuned.

1999-07-14  Andrew Haley  <aph@cygnus.com>

	* expr.c (expand_expr): Do not return the last statement in a
	block as the block's value.

1999-07-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
	CALL_EXPR, to avoid order of evaluation changes.

1999-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Do not use
	IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.

1999-07-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Handle MAX_EXPR.
	* expr.c (force_evaluation_order): Force method call arguments to
	be evaluated in left-to-right order.
	* parse.y (qualify_ambiguous_name): Loop again to qualify
	NEW_ARRAY_EXPR properly.

1999-06-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_invoke): Resolve unresolved invoked method
	returned type.
	(qualify_ambiguous_name): STRING_CST to qualify expression for
	type name resolution.

1999-06-24  Andrew Haley  <aph@cygnus.com>

	* class.c (finish_class): Whenever a deferred method is
	output, rescan the list of methods to see if a new candidate for
	output can be found.

1999-06-28  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (lang_specific_driver): Recognize --help.

1999-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_package): Fixed bogus return statement.
	(patch_method_invocation): Resolve method invocation beginning with
	a package name qualifier.

1999-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in (java.stage1): Depend on stage1-start.
	(java.stage2): Likewise for stage2-start.
	(java.stage3): Likewise for stage3-start.
	(java.stage4): Likewise for stage4-start.

1999-06-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_complete_lhs): When doing cross referencing, don't
	try to keep file location on a WFL expanded as a CALL_EXPR.

1999-06-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (finish_method_declaration): Insert a RETURN_EXPR when
	compiling to class file a void method with an empty method body.
	As a side effect, the bytecode backend will generate the
	appropriate `return' instruction.

1999-06-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (lookup_package_type_and_set_next): New function prototype.
	(resolve_package): Search current and imported packages.
	(lookup_package_type_and_set_next): New function.

1999-06-22  Andrew Haley  <aph@cygnus.com>

	* verify.c (verify_jvm_instructions): Check for pending blocks
	before invalid PC test and opcode switch, not after.

1999-06-21  Andrew Haley  <aph@cygnus.com>

	* except.c (find_handler_in_range): The upper limit for exception
	ranges is exclusive, not inclusive: (start <= pc < end).
	(link_handler): find child pointer which points to outer by
	searching sibling list: previous code incorrectly assumed that
	outer->outer->first_child must point to outer.
	* verify.c (verify_jvm_instructions): FIXME added to code for
	`athrow'.
	(verify_jvm_instructions): Do not assume that the last block
	processed in a subroutine is a block which ends with a `ret'
	instruction.  With some control flows it is possible that the last
	block ends with an `athrow'.

1999-06-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Reorganized the post
	evaluation of non WFL leading expression nodes.

1999-06-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
	CONVERT_EXPR.

1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Handle qualified expression
	beginning with a STRING_CST.

1999-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (register_fields): Set DECL_INITIAL on both
	pre-initialized static and public fields.
	(resolve_field_access): Static field access expressions to always
	use pointer types.
	(qualify_ambiguous_name): Work out buried CALL_EXPR for proper
	qualification. CONVERT_EXPR to be resolved as an expression name.
	(java_complete_lhs): Identify and access qualified final
	initialized field in switch statement case expression.
	(fold_constant_for_init): Pre-initialized field decl constant to
	be folded.

1999-06-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (note_possible_classname): Mark returned node with
	QUALIFIED_P only if the original class name contained a '/'.

1999-06-05  Anthony Green  <green@cygnus.com>

	* Make-lang.in (gcjh): More parallel build fixes.

1999-06-03  Mike Stump  <mrs@wrs.com>

	* Make-lang.in (JCF_DUMP_SOURCES, jvgenmain): Fix parallel builds.

1999-06-02  Anthony Green  <green@cygnus.com>

	* except.c (link_handler): Chain exception handlers in order.

1999-06-02  Anthony Green  <green@cygnus.com>

	* expr.c (expand_byte_code): Fill unreachable bytecode regions
	with nops and process as usual in order to always set correct EH
	ranges.  Emit detailed warnings about unreachable bytecodes.

1999-06-02  Anthony Green  <green@cygnus.com>

	* class.c (build_utf8_ref): Mark cinit and utf8 tree nodes as
	constant.

1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (lookup_field_wrapper): Unified returned value to NULL
	  or the searched field decl.

1999-05-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (fold_constant_for_init): Convert numerical constant
	values to the type of the assigned field.

1999-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (lookup_field): Relaxed the test on class loading error
	detection.
	* parse.y (fold_constant_for_init): Enabeled old code.

1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (valid_ref_assignconv_cast_p): Let `_Jv_CheckCast'
	decide the validity of the cast of a java.lang.Cloneable reference
	to an array.
	(patch_conditional_expr): Fixed first argument passed to
	binary_numeric_promotion.

1999-05-26  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Take into account that a
	CONVERT_EXPR might specify a type as a WFL.

1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_assignment): Save the rhs before using it as an
	argument to _Jv_CheckArrayStore.

1999-05-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (java_parse_doc_section): Fixed `tag' buffer size.

1999-05-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (java_lex): Accepts `+' or `-' after the beginning of a
	floating point literal only when the exponent indicator has been
	parsed.

1999-05-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (formal_parameter:): Construct argument tree list
	element even if a yet unsupported final parameter was encountered.

1999-05-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (finish_method_declaration): Issue errors for native or
	abstract methods declared with a method body, as well as for non
	native or non abstract methods with no method body.

1999-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (build_utf8_ref): Initialize variable `field'.

	* decl.c (init_decl_processing): Initialize variable `field'.

	* expr.c (build_known_method_ref): Mark parameters `method_type',
	`method_signature' and `arg_list' with ATTRIBUTE_UNUSED.
	(process_jvm_instruction): Likewise for parameter `length'.

	* jvspec.c (lang_specific_driver): Mark variables `saw_math',
	`saw_libc', `saw_gc', `saw_threadlib' and `saw_libgcj' with
	ATTRIBUTE_UNUSED.

	* parse.y (maybe_generate_clinit): Remove unused variable
	`has_non_primitive_fields'.
	(find_in_imports_on_demand): Initialize variables `node_to_use'
	and `cl'.
	(patch_binop): Likewise for variable `prom_type'.
	(patch_unaryop): Likewise for variable `prom_type'.

	* verify.c (verify_jvm_instructions): Likewise for variable `last'.

	* xref.c (xref_table): Add missing initializer.

1999-05-14  Tom Tromey  <tromey@cygnus.com>

	* java-except.h (struct eh_range): Removed unused `next' member.
	* verify.c (verify_jvm_instructions): Call check_nested_ranges
	after adding all exception handlers.  Sort exception ranges in
	order of start PC.
	(struct pc_index): New structure.
	(start_pc_cmp): New function.
	* except.c (add_handler): Return `void'.  Don't call link_handler;
	instead construct an ordinary linked list and do range
	coalescing.
	(check_nested_ranges): New function.
	(link_handler): Changed interface to allow merging of eh_ranges.
	Split overlapping ranges.  Return `void'.

1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (constructor_block_end:): New rule, tagged <node>.
	(constructor_body:): Use `constructor_block_end' instead of
	`block_end'.

1999-05-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (statement_nsi:): Pop `for' statement block.
	(java_complete_lhs): Labeled blocks containing no statement are
	marked as completing normally.

1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* xref.c (xref_set_current_fp): New function, defined.
	* xref.h (xref_set_current_fp): New function, prototyped.

1999-05-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Take into account that
	LABELED_BLOCK_STMT can be empty.

1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_check_regular_methods): Warning check on not
	overriding methods with default access in other packages does not
	apply to `<clinit>'.
	(java_complete_lhs): If block body is an empty_stmt_node, replace
	it by NULL_TREE. This prevents gcc from generating an irrelevant
	warning.

1999-05-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Removed code accepting to see things
	falling through default:, when doing xrefs.
	* java-tree.h (do_not_fold): New global variable, declared.
	* parse.y (do_not_fold): New global variable, defined.
	(java_complete_expand_method): Set `do_not_fold' to the value of
	`flag_emit_xref'. When doing xrefs: copy the thrown exceptions,
	and reinstall them after them have been purged; do not check for
	initializations; do not issue missing return errors.
	(java_complete_lhs): Do not attempt to patch INSTANCEOF_EXPR nodes
	when doing xrefs.
	(patch_binop): Skip the fold part when doing xrefs.
	(build_string_concatenation): Skip the concatenation part when
	doing xrefs.
	(patch_synchronized_statement): Do not generate a try-finally when
	doing xrefs.
	(patch_throw_statement): When doing xrefs, do not call BUILD_THROW
	and keep the location where the throw was seen.
	* typeck.c (convert): When `do_not_fold' is set, do not attempt
	any treatment on the converted node an simply return a NOP_EXPR of
	the targeted type.
	* xref.c (xref_get_data): New function, defined.
	* xref.h (xref_get_data): New function, declared.
	(XREF_GET_DATA): Use xref_get_data.

1999-05-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (print_include): Cast the result of `strlen' to int
	when comparing against a signed value.
	(add_namelet): Likewise.

1999-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* expr.c (expand_invoke): Mark parameter `nargs' with
	ATTRIBUTE_UNUSED.
	(PRE_LOOKUP_SWITCH): Likewise for variable `match'.

	* jcf-io.c (jcf_unexpected_eof): Mark parameter `count' with
	ATTRIBUTE_UNUSED.

	* jcf-reader.c (get_attribute): Cast a value to long
	when comparing against a signed expression.  Likewise.

	* lex.h: Never define HOST_WIDE_INT, HOST_BITS_PER_WIDE_INT or
	HOST_BITS_PER_CHAR.

1999-05-11  Andrew Haley  <aph@cygnus.com>

	* parse.y (source_end_java_method): If the current method contains
	any exception handlers, force asynchronous_exceptions: this is
	necessary because signal handlers in libjava may throw exceptions.
	* decl.c (end_java_method): Ditto.

1999-05-11  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (jvspec.o): Don't define WITH_THREAD_x or WITH_GC_x
	flags.
	* jvspec.c (THREAD_NAME): Removed.
	(GC_NAME): Likewise.
	(MATHLIB): Likewise.
	(WITHLIBC): Likewise.
	(GCLIB): Likewise.
	(THREADLIB): Likewise.
	(MATH_LIBRARY): Likewise.
	(lang_specific_driver): Don't add `-l' options to command line.
	Instead, add a single --specs option.  Recognize `-L' options and
	use them to search for spec file.
	(find_spec_file): New function.
	(SPEC_FILE): New define.

1999-05-11  Dave Brolley  <brolley@cygnus.com>

	* lang-options.h: -MD, -MMD, -M and -MM not needed here for
	cpplib-enabled build.

1999-05-05  Per Bothner  <bothner@cygnus.com>

	* class.c (make_field_value):  DECL_INITIAL may be a string literal;
	temporarily zero it while calling rest_of_decl_compilation.

	* java-tree.h (string_ptr_type_node):  Add declaration.
	* decl.c:  Define and initialize string_ptr_type_node.
	* parse.y (patch_string_cst):  Use string_ptr_type_node.

	* parse.h (LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P):  Removed.
	* parse.y (for_statement):  Now unconditionally exit_block.
	(finish_labeled_statement):  No longer exit_block if for-loop.
	(patch_loop_statement):  Check harder if the loop is already labeled.

	* parse.y (patch_initialized_static_field):  Removed function.
	(maybe_generate_clinit):  Removed special handling for interfaces.
	(java_complete_expand_methods):  Do a preliminary java_complete_tree
	on <clinit> to determine if it can be removed.
	(java_complete_expand_method):  Remove special handling for <clinit>.
	(java_complete_lhs):  For BLOCK and EXPR_WITH_FILE_LOCATION
	optimize if we get back empty_stmt_node.
	For MODIFY_EXPR, re-do checking of static initializers.
	(fold_constant_for_init):  Don't return immediate if VAR_DECL.
	For VAR_DECL, pass correct context.

	* verify.c (verify_jvm_instructions):  Better error messages.

1999-05-03  Tom Tromey  <tromey@cygnus.com>

	* parse-scan.y (interface_declaration): Call
	report_class_declaration for interfaces.

1999-04-30 20:54 -0400  Zack Weinberg  <zack@rabi.columbia.edu>

	* Makefile.in: Remove -v from bison command lines.

1999-04-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* check-init.c (check_init): Exclude a case of error when doing
	xrefs.
	* class.c (layout_class_method): Don't generate the error message
	twice when compiling from source.
	* lang-options.h: Added `-Wredundant-modifers' and
	`-Wunusupported-jdk11' flags and help text.
	* lang.c (lang_decode_option): Added support for
	`-Wunsupported-jdk11' and `-Wredundant-modifiers'.
	flag_static_local_jdk11 and flag_redundant set accordingly.
	* lex.c (java_lex): Call BUILD_OPERATOR on CCB_TK.
	* parse.h (EXPR_WFL_ADD_COL): New macro.
	(DECL_END_SOURCE_LINE): Likewise.
	(DECL_INHERITED_SOURCE_LINE): Likewise.
	* parse.y (static_ref_err): New function, prototyped.
	(CCB_TK): Now tagged <operator>.
	(class_body:): Remember the location of the closing '}' of a class
	definition when doing xrefs.
	(block:): Likewise.
	(block_end:): Likewise.
	(create_class): Remember the location of the inherited class
	identifier when doing xrefs.
	(register_fields): Added test on first operand of `init' before
	testing it TREE_CODE.
	(method_header): Store the location of the class identifier in the
	class decl when doing xrefs.
	(finish_method_declaration): Don't combine first/last method line
	when doing xref.
	(java_check_regular_methods): Warning check on not overriding
	methods with default access on other packages move before check on
	static methods. Initialization of `aflags' also moved up.
	(resolve_expression_name): Call static_ref_err to report the error.
	(static_ref_err): New function, implemented.
	(resolve_field_access): Returned simplified static field access
	when doing xrefs.
	(resolve_qualified_expression_name): Check for illegal use of
	static fields in a non static context. Call static_ref_err to
	report error in various places.
	(java_complete_tree): Do not fold initialized static fields when
	doing xrefs.
	(java_complete_lhs): Likewise.

1999-04-29  Anthony Green  <green@cygnus.com>

	* expr.c (generate_name): Use ASM_GENERATE_INTERNAL_LABEL to
	create internal labels.
	(lookup_label): Ditto.

1999-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class_method): Generate <clinit>'s rtl for
	interfaces.
	* decl.c (complete_start_java_method): Don't call _Jv_InitClass
	for interfaces' <clinit>.
	* expr.c (lookup_field): Search for fields in interfaces.
	(expand_invoke): Fixed indentation.
	(expand_java_field_op): Likewise. Use IS_CLINIT.
	* parse.h (JPRIMITIVE_TYPE_OR_VOID_P): Macro removed.
	(IS_CLINIT): New macro.
	* parse.y (type_declaration:): Call maybe_generate_clinit after an
	interface was parsed.
	(maybe_generate_clinit): Don't generate if the current class is an
	interface with only fields of primitive types.
	(reset_method_name): Use IS_CLINIT.
	(java_complete_expand_method): Expand <clinit> when it exists for
	interfaces. Use IS_CLINIT.
	(resolve_expression_name): Use DECL_CONTEXT instead of
	current_class to build static field references.
	(java_complete_lhs): Use IS__CLINIT. Don't use SAVE_EXPR on
	ARRAY_REF when doing xreferencing.
	(check_final_assignment): Fixed typo in leading comment. Use
	IS_CLINIT.
	(patch_array_ref): Don't fully expand array references when
	xreferencing.
	(patch_return): Use IS_CLINIT.
	(patch_throw_statement): Likewise.

1999-04-22  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (JAVA_SRCS): Added check-init.c.

1999-04-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (predef_filenames, predef_filenames_size): New globals
	(init_decl_processing): predef_filenames and predef_filenames_size
	initialized.
	* java-tree.h (predef_filenames, predef_filenames_size): Declared
	extern.
	* jcf-parse.c (predefined_filename_p): New function.
	(yyparse): Check that files on the command line are specified only
	once and issue a warning otherwise.
	* parse.h (JPRIMITIVE_TYPE_OR_VOID_P): New macro.
	* parse.y (source_end_java_method): Nullify NOP method bodies, to
	avoid a gcc warning with -W -Wall turned on.
	(java_expand_classes): Abort if errors were encountered.
	(java_complete_lhs): If the cross reference flag is set, wrap
	field DECL node around a WFL when resolving expression name.

1999-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lang.c (lang_decode_option): Fixed returned value when parsing
	`-fxref=...' and `-Wall'.
	* parse.y (source_end_java_method): Do not generate code when
	flag_emit_xref is set.
	(resolve_expression_name): Do not build static field access when
	flag_emit_xref is set.
	(resolve_field_access): No special treatment on `length' when
	flag_emit_xref is set. Do not build qualified static field access
	when flag_emit_xref is set.
	(patch_invoke): Keep the method DECL as operand 0 of the CALL_EXPR
	when flag_emit_xref is set.
	(patch_assignment): Do not generate array store runtime check when
	flag_emit_xref is set.
	* xref.c (xref_flag_value): Fixed function declaration
	indentation.
	(xset_set_data): New function.
	* xref.h (xref_set_data): Added prototype for new function.
	(typedef struct xref_flag_table): New field data.
	(XREF_GET_DATA): New macro.

1999-04-19  Tom Tromey  <tromey@cygnus.com>

	* xref.h (enum): Removed trailing comma.

	* parse.y (resolve_qualified_expression_name): Added missing
	`break'.

1999-04-15  Anthony Green  <green@cygnus.com>

	* gjavah.c: New prototypes for java_float_finite and
	java_double_finite.

1999-04-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_unaryop): Fixed ++/-- operator check on array
	references.

1999-04-06  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (TREE_H): Add tree-check.h.
	(RTL_H): Add genrtl.h.

1999-04-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_assignment): Added ArrayStoreException runtime
	check.

1999-04-06  Per Bothner  <bothner@cygnus.com>

	* 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.

	* parse.y (patch_binop):  Don't fold if non-constant and emiting
	class files.

1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (gjavah.o): Depend on $(JAVA_TREE_H).

	* gjavah.c: Include math.h earlier.  Include tree.h/java-tree.h.
	(main_jcf): Don't define.
	(process_file): Don't set `main_jcf'.

	* java-tree.h (main_jcf): Don't declare.

	* jcf-parse.c (main_jcf): Add static definition.

	* lang.c (main_jcf): Don't define.

1999-04-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (add_method_1): Cast the argument of `bzero' to PTR.

	* decl.c (copy_lang_decl): Likewise for `bcopy'.

	* jcf-depend.c: Include "config.h", not <config.h>.

	* jcf-parse.c (jcf_figure_file_type): Cast the arguments of
	`bcopy' to PTR.

	* jcf-path.c: Include "config.h", not <config.h>.

	* lex.c: Don't include various system header files.
	(java_init_lex): Cast the argument of `bzero' to PTR

	* parse-scan.y (java_push_parser_context): Likewise.

	* parse.y (java_push_parser_context): Likewise.
	(patch_bc_statement): Match format specifier to variable argument.

	* xref.c: Don't include <stdio.h>.

1999-04-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (struct parser_ctxt *ctxp): Now global.
	(declare_local_variables): Use WFL compound value for the
	declaration source line value, when doing cross-referencing.

1999-03-31  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_field_info): Allow constants of other types.
	(print_include): Generate include when new name is proper prefix
	of already printed name.
	(add_namelet): Likewise.
	(cxx_keyword_subst): New function.
	(print_method_info): Use it.
	(print_field_name): New function.
	(get_field_name): New function.
	(print_field_info): Use get_field_name and print_field_name.

1999-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (keyword.h): Generate using gperf language 'C', not
	'KR-C', so gperf uses the `const' keyword on strings.

	* keyword.gperf (java_keyword): Const-ify a char*.

1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_bc_statement): Fixed identation and a bogus
	`printf' format.

1999-03-30  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_assignment): Allow static variables in other
	classes to be assigned.

1999-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (maybe_add_interface): Remove unused variable
	`interface_binfo'.
	(make_class_data): Use = for assignment, not ==.  Likewise.
	(emit_register_classes): Remove unused variable `decl'.

	* lex.c: Fix comment so as not to contain an embedded `/*'.

	* verify.c (verify_jvm_instructions): Remove unused variable
	`self_type'.

1999-03-27  Per Bothner  <bothner@cygnus.com>

	* parse.y (complete_loop_body):  Rename to finish_loop_body.
	(complete_labeled_statement):  Rename to finish_labeled_statement.
	(complete_for_loop):  Rename to finish_for_loop.
	(complete_method_declaration):  Rename to finish_method_declaration.

	* java-tree.h (continue_identifier_node):  New global node.
	* decl.c:  Define and initialize continue_identifier_node.
	* parse.y (generate_labeled_block):  Remove - no longer needed.
	(build_loop_body):  Use continue_identifier_node for continue block.
	(finish_labeled_statement):  Also do pop_labeled_block actions.
	(java_complete_lhs):  POP_LOOP even if error.
	(build_labeled_block):  Special handling for continue_identifier_node.
	(patch_loop_statement):  Re-organize.
	(patch_bc_statement):  Re-write.

1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (EXPR_WFL_GET_LINECOL): Set a line and column count
	using a WFL compound value.
	* parse.y (xref.h): Include.
	(maybe_create_class_interface_decl): Set DECL_SOURCE_LINE to the
	WFL compound value.
	(register_fields): Set WFL compound value to lineno if doing
	xrefs.
	(java_complete_expand_method): Call expand_xref if flag_emit_xref
	is set.
	* xref.c (system.h, jcf.h, parse.h, obstack.h): Include.
	* xref.h (expand_xref): Prototype renamed from xref_generate.

1999-03-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h (BLOCK_CHAIN_DECL): New use GET_CURRENT_BLOCK.
	(GET_CURRENT_BLOCK): New macro.
	* parse.y (current_static_block): New global variable.
	(method_body:): Define action.
	(complete_method_declaration): Set current_function_decl to NULL
	when work on the current method is done.
	(declare_local_variables): Use GET_CURRENT_BLOCK.
	(java_method_add_stmt): Likewise.
	(java_complete_expand_method): Disable the use of `this' when
	expanding <clinit>.
	(enter_a_block): If no current method exist, use
	current_static_block to link static initializer blocks.
	(exit_block): Rewritten to use current_static_block when no current
	method decl exists.
	(lookup_name_in_blocks): Use GET_CURRENT_BLOCK.
	(patch_return): Forbid the use of `return' in static initializers.
	(patch_throw_statement): Fixed indentation. Issue specific error
	for uncaught thrown checked exception in static initializer
	blocks. Removed FIXME.

1999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>

	* java/Make-lang.in: Remove all references to gcj.o/gcj.c.
	Link gcj from gcc.o.

1999-03-23  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (find_applicable_accessible_methods_list): When dealing
	with interface: ensure that a given interface or java.lang.Object
	are searched only once.

1999-03-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gjavah.c (print_c_decl): Remove unused argument `flags'.

	* jcf-dump.c (print_access_flags): Add braces around if-else.

	* jvspec.c (lang_specific_driver): Wrap variable `len' in macro
	COMBINE_INPUTS.

	* lex.c (build_wfl_node): Add static prototype.

	* lex.h (build_wfl_node): Remove static prototype.

	* parse.y: Include lex.c early enough to declare everything needed.
	Ensure calls to `build_wfl_node' pass the proper arguments.
	(create_class): Remove unused variable `super_decl'.
	(get_printable_method_name): Initialize variable `name'.

1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Changelog: Fixed 1999-03-22 typos.
	* lang.c (lang_decode_option): Fixed typo in error string in the
	XARG section.

1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in (JAVA_OBJS): Added entry xref.o.
	(xref.o): New rule.
	* java-tree.h (flag_emit_xref): Declared extern.
	* lang.c (xref.h): Included.
	(flag_emit_xref): New global variable.
	(lang_decode_option): Added support for -fxref.
	* xref.c: Created.
	* xref.h: Likewise.

1999-03-21  Manfred Hollstein  <manfred@s-direktnet.de>

	* Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be
	linked with.

1999-03-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (jcf-dump.o): Depend on $(CONFIG_H)
	$(srcdir)/../system.h and $(JAVA_TREE_H).
	(jcf-io.o): Depend on $(JAVA_TREE_H).
	(mangle.o): Likewise.

	* check-init.c (check_cond_init): Add static prototype.

	* class.c (build_java_method_type, hashUtf8String,
	make_field_value, get_dispatch_vector, get_dispatch_table,
	append_gpp_mangled_type, mangle_static_field): Likewise.
	(strLengthUtf8): Hide unused definition.
	(hashUtf8String): Const-ify.
	(make_field_value): Un-ANSI-fy.

	* constants.c: Move inclusion of jcf.h above java-tree.h.
	(set_constant_entry, find_class_or_string_constant,
	find_name_and_type_constant, get_tag_node,
	build_constant_data_ref): Add static prototype.

	* decl.c (push_jvm_slot, builtin_function,
	lookup_name_current_level): Likewise.
	(builtin_function): Const-ify.

	* except.c (expand_start_java_handler, expand_end_java_handler):
	Add static prototype.

	* expr.c (flush_quick_stack, push_value, pop_value,
	java_stack_swap, java_stack_dup, build_java_athrow,
	build_java_jsr, build_java_ret, expand_java_multianewarray,
	expand_java_arraystore, expand_java_arrayload,
	expand_java_array_length, build_java_monitor, expand_java_pushc,
	expand_java_return, expand_java_NEW, expand_java_INSTANCEOF,
	expand_java_CHECKCAST, expand_iinc, expand_java_binop, note_label,
	expand_compare, expand_test, expand_cond, expand_java_goto,
	expand_java_call, expand_java_ret, pop_arguments, expand_invoke,
	expand_java_field_op, java_push_constant_from_pool): Likewise.

	(decode_newarray_type, expand_iinc): Un-ANSI-fy.
	(build_java_arraynull_check): Mark parameters `node' and `type'
	with ATTRIBUTE_UNUSED.
	(note_label): Likewise for parameter `current_pc'.
	(expand_java_call, expand_java_ret): Hide unused definition.

	* java-tree.h (make_class, build_constants_constructor,
	java_set_exception_lang_code, pop_labeled_block, emit_handlers,
	init_outgoing_cpool, register_class, emit_register_classes,
	java_layout_seen_class_methods): Prototype.
	(unicode_mangling_length): Const-ify.
	(append_gpp_mangled_name, append_gpp_mangled_classtype,
	emit_unicode_mangled_name, format_int, format_uint,
	jcf_trim_old_input, jcf_print_utf8, jcf_print_char,
	jcf_print_utf8_replace, open_class): Prototype.

	* jcf-dump.c: Include "config.h", not <config.h>.  Don't include
	<stdio.h>.  Include tree.h/java-tree.h.
	(utf8_equal_string usage, process_class): Add static prototype.
	(open_class): Don't prototype this here.
	(utf8_equal_string): Match arguments to format specifiers.
	(HANDLE_CODE_ATTRIBUTE, BRANCH, JSR, RET, LOOKUP_SWITCH,
	TABLE_SWITCH, disassemble_method): Likewise.

	* jcf-io.c: Include tree.h/java-tree.h.
	(open_class, find_classfile, jcf_print_utf8,
	jcf_print_utf8_replace): Const-ify.

	* jcf-parse.c (parse_zip_file_entries, process_zip_dir,
	parse_class_file): Add static prototype.
	(find_in_current_zip): Match definition to existing static
	prototype.

	* jcf-write.c: Include jcf.h before tree.h/java-tree.h.
	(alloc_chunk, append_chunk, append_chunk_copy, gen_jcf_label,
	finish_jcf_block, define_jcf_label, get_jcf_label_here,
	put_linenumber, localvar_alloc, localvar_free, get_access_flags,
	write_chunks, adjust_typed_op, generate_bytecode_conditional,
	generate_bytecode_return, perform_relocations, init_jcf_state,
	init_jcf_method, release_jcf_state, generate_classfile):
	Add static prototype.
	(emit_unop): Mark parameter `type' with ATTRIBUTE_UNUSED.
	(make_class_file_name): Const-ify.

	* jcf.h (find_classfile): Const-ify.

	* jv-scan.c (reset_report): Remove prototype.

	* jvgenmain.c: Include jcf.h/tree.h/java-tree.h.
	(error): Rewrite to allow varargs.

	* lang.c (lang_f_options): Const-ify.

	* lex.c (java_parse_escape_sequence): Add static prototype.
	(java_allocate_new_line): Match definition to existing static
	prototype.

	* mangle.c Include tree.h/java-tree.h.
	(unicode_mangling_length, emit_unicode_mangled_name,
	append_gpp_mangled_name, append_gpp_mangled_classtype): Const-ify.

	* parse.h (jdep_code): Remove trailing comma in enumeration.
	(java_get_line_col): Move prototype outside of !JC1_LITE test.
	(reset_report): Add prototype.

	* verify.c (push_pending_label, merge_types): Add static
	prototypes.

	* zipfile.h (opendir_in_zip, open_in_zip): Prototype.

1999-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (find_applicable_accessible_methods_list): Extend the
	search to superinterfaces when relevant.
	(search_applicable_methods_list): New function.

1999-03-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (unmangle_classname): Implemented stricter testing
	before setting the QUALIFIED_P flag on an identifier.

1999-03-16  Per Bothner  <bothner@cygnus.com>

	* parse.y (java_complete_lhs):  Call force_evaluation_order
	after patch_newarray.
	(patch_binop):  Don't call fold if there are side effects.

1999-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_stabilize_reference): Use save_expr instead of
	building a SAVE_EXPR node.
	(java_complete_lhs): Patch the resulting string of the `+='
	operator (if necessary) and complete the RHS after having built
	the cast.

1999-03-15  Per Bothner  <bothner@cygnus.com>

	* class.c (make_class):  Don't set CLASS_P here (because
	this function is also called by build_java_array_type).
	(push_class):  Set CLASS_P here instead.
	* parse.h (TYPE_CLASS_P):  Check for TYPE_ARRAY_P is redundant.

	* jcf-dump.c (print_access_flags):  Take extra parameter to indicate
	context.  If the context is class, perfer "super" over "synchronized".
	* jcf-write.c (generate_classfile):  Don't add ACC_SUPER if interface.

	* parse.y (create_class):  Don't call parser_check_super here;
	it is not robust.  Always wait until later.

	* parse.y (method_header):  For interfaces, set ACC_ABSTRACT (to
	match what JDK 1.2 does), but don't set ACC_PUBLIC.

1999-03-13  Per Bothner  <bothner@cygnus.com>

	* lex.c (java_read_char):  UNGET invalid non-initial utf8 character.
	* lex.h (UNGETC):  Change misleading macro.

1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_stabilize_reference): Return NODE when patching a
	COMPOUND_EXPR.
	(java_complete_lhs): Put parenthesis around truth values.

1999-03-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class_method): Don't make rtl for interface
	methods.
	* parse.h (GET_TYPE_NAME): New macro.
	* parse.y (if_then_statement:): Fixed indentation.
	(if_then_else_statement:): Likewise.
	(for_statement:): Fixed spacing.
	(try_statement:): Fixed indentation.
	(create_interface): Don't force interfaces to be abstract.
	(method_header): Abstract methods are OK in interfaces.
	(declare_local_variables): Fixed typo in comment.
	(java_complete_expand_method): Fixed indentation.
	(resolve_qualified_expression_name): Use GET_TYPE_NAME to report
	non accessible fields.
	(java_stabilize_reference): New function.
	(java_complete_lhs): Fixed indentation. Use
	java_stabilize_reference in compound assignment. Insert the
	cast. If not processing `+' fix string constants before processing
	binop.

1999-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* constants.c (find_class_or_string_constant): Cast variable `j'
	to a `jword' when comparing against one.

	* expr.c (java_lang_expand_expr): Remove unused variables
	`has_finally_p' and `op0'.

	* gjavah.c (print_field_info): Cast a value to jint when comparing
	against one.  Likewise for a jlong.
	(add_namelet): Likewise cast a `sizeof' to an int when comparing
	against a signed quantity.

	* jcf-dump.c (print_signature_type): Remove unused variable `digit'.
	(print_signature): Don't needlessly dereference variable `str'

	* jcf-reader.c (get_attribute): Mark variables `max_stack' and
	`max_locals' with ATTRIBUTE_UNUSED.
	(jcf_parse_class): Likewise for variable `index'.

	* parse.h (reverse_jdep_list): Remove static prototype.

	* parse.y (build_jump_to_finally): Remove prototype and definition.
	(reverse_jdep_list): Add static prototype.

	* typeck.c (convert_ieee_real_to_integer): Remove unused variables
	`assignment' and `expr_decl'.

	* verify.c (verify_jvm_instructions): Remove unused label `bad_ldc'.

1999-03-12  Andrew Haley  <aph@cygnus.com>

	* jcf-path.c (add_entry): alloca len+2 rather than len+1 bytes;
	we'll need a directory separator and a null character.

1999-03-10  Per Bothner  <bothner@cygnus.com>

	* jcf-write.c (generate_bytecode_insns):  Handle __builtin_fmod, for %.

Tue Mar  9 11:52:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (method_header): Don't set ACC_ABSTRACT flags on
	interfaces.

1999-03-05  Per Bothner  <bothner@cygnus.com>

	* lex.c (java_parse_end_comment):  Take extra parameter (next char).

	* class.c (build_utf8_ref):  Fix possible name class/ambiguity.

	* class.c (layout_class_method):  A static method in a base class
	is never overridden, so treat it like it doesn't exist.
	However, do complain about private non-static method overriding
	public static method.

	* parse.y:  Don't set unused INITIALIZED_P flag.
	* java-tree.h (INITIALIZED_P):  Removed no-longer needed flag.

	* parse.y (find_expr_with_wfl):  Optimize tail-calls.
	(build_array_from_name):  Re-order &index[string] to &string[index].

	* parse.y (java_complete_lhs):  Don't call patch_assignment if rhs is
	error_mark (it might catch more errors, but it is more likely to lose).

1999-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (jcf-parse.o): Depend on $(PARSE_H).
	(parse-scan.o): Depend on toplev.h.

	* class.c (make_method_value): Add prototype.  Make it static.
	Remove unused second argument, caller changed.

	* expr.c (java_lang_expand_expr): Remove unused variable
	`return_label'.

	* java-tree.h: Don't prototype find_in_current_zip.
	Add prototypes for verify_constant_pool, start_java_method,
	end_java_method, give_name_to_locals, expand_byte_code,
	open_in_zip, set_constant_value, find_constant1, find_constant2,
	find_utf8_constant, find_string_constant, find_class_constant,
	find_fieldref_index, find_methodref_index, write_constant_pool,
	count_constant_pool_bytes and encode_newarray_type.

	* jcf-dump.c: Remove unused variable `LONG_temp'.

	* jcf-parse.c: Include parse.h.
	(jcf_parse_source): Remove unused parameter, all callers changed.
	(jcf_figure_file_type): Add static prototype.
	(find_in_current_zip): Likewise.  Also remove unused parameter,
	all callers changed.
	(read_class): Initialize variable `saved_pos'.

	* jcf-reader.c (jcf_parse_preamble): Mark variables
	`minor_version' and `major_version' with ATTRIBUTE_UNUSED.

	* lex.c (java_is_eol): Wrap prototype and definition in !JC1_LITE.
	(java_init_lex): Wrap variable `java_lang_imported' in !JC1_LITE.
	(java_parse_doc_section): Initialize variable `seen_star'.
	(java_lex): Wrap variable `number_beginning' in !JC1_LITE.
	(java_lex_error): Mark parameters `msg' and `forward' with
	ATTRIBUTE_UNUSED.
	(java_get_line_col): Mark parameters `filename' and `line' with
	ATTRIBUTE_UNUSED.

	* parse-scan.y: Include toplev.h.
	(yyerror): Mark parameter `msg' with ATTRIBUTE_UNUSED.

	* parse.h: use `struct JCF', not plain `JCF'.
	(java_parser_context_save_global, java_expand_classes
	java_parser_context_restore_global, java_parse): Add prototypes.

	* typeck.c (convert_ieee_real_to_integer): Remove unused variable
	`node'.

1999-02-24  Per Bothner  <bothner@deneb.cygnus.com>

	*  check-init.c (check_init):  COPYN takes word count, not bit count.

1999-02-26  Per Bothner  <bothner@cygnus.com>

	* typeck.c (convert_ieee_real_to_integer):  Use save_expr instead of
	explicit build_decl.  (Avoids crash in reload when optimizing.)

1999-02-25  Per Bothner  <bothner@cygnus.com>

	* decl.c (complete_start_java_method):  Handle synchronized method
	even when compiling from bytecode.

1999-02-26  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (add_class_decl): Only generate `#include' if outer
	class is not the name of the class we are processing.  Correctly
	append `.h' in #include.
	(process_file): Clean up newlines around generated `#include's.
	(decode_signature_piece): Correctly handle inner classes.
	(struct include): New structure.
	(all_includes): New global.
	(print_include): New function.
	(add_class_decl): Use it.
	(process_file): Likewise.
	(add_class_decl): Generate include for java-array.h if array
	seen.
	(process_file): Don't generate java-array.h include.

	* gjavah.c (add_namelet): Check for standard package names here.
	(add_class_decl): Don't check for standard package names here.

1999-02-25  Tom Tromey  <tromey@cygnus.com>

	* parse.y (read_import_dir): Use `|=', not `+=', to set `found'.
	When reading a zip file, only use strncmp if both strings are
	bigger than the buffer length.  Initialize `k' when looping
	through zip file.

1999-02-24  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (struct namelet): New structure.
	(add_namelet): New function.
	(print_namelet): New function.
	(print_class_decls): Use add_namelet and print_namelet to generate
	namespaces and not classes.
	(method_printed): New global.
	(HANDLE_END_METHOD): Examine method_printed.
	(print_method_info): Set method_printed when required.  Print
	error if function to be ignored is marked virtual.  Handle $finit$
	method.
	(METHOD_IS_FINAL): New macro.
	(print_field_info): Use it.
	(HANDLE_METHOD): Clear method_printed.
	(method_pass): New global.
	(HANDLE_END_FIELD): Call add_class_decl on the first pass.
	(process_file): Do two passes over both fields and methods.
	(HANDLE_METHOD): Examine method_pass.
	(root): New global.
	(add_class_decl): New function.
	(print_class_decls): Don't scan over entire constant pool.

1999-02-23  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (lang_specific_driver): Recognize -fsyntax-only and
	disable linking in that case.

1999-02-20  Tom Tromey  <tromey@cygnus.com>

	* jcf.h (UTF8_GET): Mask first byte of 3-byte encoding with 0x0f,
	not 0x1f.

1999-02-21  Per Bothner  <bothner@cygnus.com>

	* decl.c (build_result_decl), java-tree.h:  New method.
	(complete_start_java_method):  Handle synchronized methods.
	Don't build DECL_RESULT here.  (Ordering dependency problem.)
	(start_java_method):  Call build_result_decl here instead  ...
	* parse.y (java_complete_expand_method):  ... and here.
	(expand_start_java_method): Don't call complete_start_java_method here.
	(java_complete_expand_method):  Call it here instead.
	* parse.h (BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT):  Moved to ..
	* java-tree.h:  ... here.

	* expr.c (force_evaluation_order):  Fix typo, don't handle ARRAY_REF.
	* parse.y (java_complete_lhs):  Don't call force_evaluation_order
	for ARRAY_REF - it doesn't work when array bounds are checked.
	(patch_array_ref):  Handle it here instead.

	* jcf-write.c (generate_classfile):  Emit "Exceptions" attribute.

1999-02-19  Per Bothner  <bothner@cygnus.com>

	Force left-to-right evaluation of binary operations etc.
	* expr.c (force_evaluation_order), java-tree.h:  New function.
	* parse.y (java_complete_lhs):  Pass binary operations, procedure
	calls, and ARRAY_REFs to force_evaluation_order.
	(various):  Set TREE_SIDE_EFFECTS more carefully.

	Tolerate random (non-UTF8) encoding in comments without complaining.
	* lex.c (java_read_char):  Return 0xFFFE if bad UTF8 encoding.
	(java_is_eol):  Handle '\r' followed by '\n' instead of vice versa.

	* parse.y (resolve_qualified_expression_name):  Handle error_mark.
	(java_complete_node case EXPR_WITH_FILE_LOCATION):  Likewise.

	* parse.y (java_complete_lhs):  Ignore an empty statement in a
	COMPOUND_EXPR.  Don't complain about empty statement after return.

1999-02-19  Per Bothner  <bothner@cygnus.com>

	* parse.y (obtain_incomplete_type):  Don't wrap unknown types
	in TREE_LIST - just chain the POINTER_TYPEs together.
	(resolve_class):  If type already resolved, return decl.
	After resolving, update TREE_TYPE(class_type), and name (if array).
	* parse.h (do_resolve_class), parse.y:  Make non-static.
	* class.c (maybe_layout_super_class):  Take this_class argument.
	Do do_resolve_class if necessary.
	(layout_class, layout_class_methods): Adjust calls appropriately.
	* parse.h (JDEP_TO_RESOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
	JDEP_RESOLVED_P):  Redefined for new TREE_LIST-less convention.
	* typeck.c (build_java_array_type):  Don't call layout_class.

1999-02-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (check_pkg_class_access): Allow private class access
	within the same package.
	(strip_out_static_field_access_decl): New function.
	(patch_unaryop): Call strip_out_static_field_access_decl on ++/--
	operator argument before testing its nature.

1999-02-03  Per Bothner  <bothner@cygnus.com>

	* java-tree.def (FINALLY_EXPR):  Removed.  (Now uses TRY_FINALLY_EXPR.)
	(TRY_EXPR):  Simplify - it no longer has a finally clause.
	* check-init.c (check_init):  Handle TRY_FINALLY_EXPR.
	Simpler handling of TRY_EXPR, which no longer has a finally clause.
	* expr.c (java_lang_expand_expr):  Likewise.
	* java-tree.h (CATCH_EXPR_GET_EXPR):  Removed - no longer needed.
	* parse.h (java_get_catch_block), parse.y:  Removed - no longer needed.
	* parse.y (java_complete_lhs):  Add support for TRY_FIANLLY_EXPR.
	(build_try_statement):  Remove finally parameter and handling.
	(build_try_finally_statement):  New function.
	(patch_try_statement):   No longer need to support finally clause.
	(try_statement):  Update grammar action rules.
	* jcf-write.c (generate_bytecode_insns):  Handle TRY_FINALLY_EXPR.
	Simpler handling of TRY_EXPR, which no longer has a finally clause.

1998-11-26  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* jcf-parse.c (get_constant): Add braces around computation of 'd'
	when REAL_ARITHMETIC is not defined.  [Oct 26 fix got overwritten -PB]

1999-02-17  Andrew Haley  <aph@cygnus.com>

	* class.c (build_utf8_ref): Back out broken patch which was
	intended to to output signatures using '.' as a separator.

	* class.c (make_class_data): Output signatures using '.' as a
	separator, rather than '/'.
	(mangled_classname): Likewise.
	(make_field_value): Likewise.
	(make_method_value): Likewise.
	* constants.c (alloc_class_constant): Likewise.
	* expr.c (build_invokeinterface): Likewise.

1999-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
	of an ancient workaround.

1999-02-10  Jeffrey A Law  (law@cygnus.com)

	* jvspec.c (xmalloc): Kill the prototype.  It does not belong
	here anymore.

1999-02-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (yylex): Encode \0 as UTF8.

1999-02-10  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (lang_specific_driver): Use libgcj, not libjava.
	* Makefile.in (jcf-path.o): Define LIBGCJ_ZIP_FILE.
	(libgcj_zip): Renamed.
	* jcf-path.c (add_entry): Use LIBGCJ_ZIP_FILE, not
	LIBJAVA_ZIP_FILE.
	(jcf_path_init): Use LIBGCJ_ZIP_FILE.

	* jvspec.c (THREAD_NAME): Renamed -lqthreads to -lgcjcoop.
	(GC_NAME): Renamed -lgc to -lgcjgc.

1999-02-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (java_lang_cloneable): Initialize.
	* parse.y (java_lang_cloneable): New static variable.
	(qualify_ambiguous_name): Take CONVERT_EXPR into account when
	doing one more qualification round.
	(valid_ref_assignconv_cast_p): Reject null source or
	destination. Allow an array to be cast into java.lang.Cloneable.
	(patch_cast): Swapped two first arguments to first call to
	valid_ref_assignconv_cast_p.

1999-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h: DECL_P renamed JDECL_P.
	* parse.y: DECL_P replaced by JDECL_P.
	(build_array_from_name): Always use pointer's type.
	(patch_bc_statement): Extra code to search continue target in a
	for loop. Fixed comments. Continue target is current loop when
	unlabeled.

1999-02-05  Andrew Haley  <aph@cygnus.com>

	* class.c (make_class_data): The superclass of an interface should
	be null, not class Object.

	* lex.c (java_lex): Sign extend hex literals.

1999-02-04  Andrew Haley  <aph@cygnus.com>

	* class.c (build_utf8_ref): Output signatures using '.' as a
	separator, rather than '/'.
	(make_class_data): Likewise.

1999-02-03  Marc Espie <Marc.Espie@liafa.jussieu.fr>

	* Make-lang.in ($(GCJ)(exeext)): Remove choose-temp.o, pexecute.o and
	mkstemp.o.  Get them from libiberty now.

1999-02-02  Jeffrey A Law  (law@cygnus.com)

	* jcf-io.c: Do not include sys/stat.h or sys/wait.h

1999-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* jvspec.c (xmalloc): Fix the prototype to match the one obtained
	from libiberty.h

1999-02-02  Per Bothner  <bothner@cygnus.com>

	Optimize: `return (a ? b : c)' as: `if (a) return b; else return c;'.
	* jcf-write.c (generate_bytecode_return):  New function.
	(generate_bytecode_insns):  Use it, for RETURN_EXPR.

	* jcf-write.c (generate_bytecode_insns):  For REAL_CST that is 0 or 1,
	generate special [fd]const_[01] instructions.

	* jcf-parse.c (yyparse):  Don't emit_register_classes if -fsyntax-only.

	* verify.c (verify_jvm_instructions):  Do INVALIDATE_PC after
	handling OPCODE_lookupswitch or OPCODE_tableswitch.

1999-02-01  Per Bothner  <bothner@cygnus.com>

	* parse.y (patch_method_invocation):  Handle calling static methods,
	even in the form EXPR.METHOD(ARGS), not just TYPE.METHOD(ARGS).

	* parse.y (java_complete_lhs):  Don't complain about unreachable
	exit condition in a do-while statement.

1999-01-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (java_read_char): Fixed utf8 decoding.
	(java_unicode_2_utf8): Fixed utf8 encoding in the 0x800-0xffff
	range.
	* parse.y (valid_builtin_assignconv_identity_widening_p): Fixed
	comments. Local variable `all_primitive' is gone. Broadened
	acceptance of `0' to floating point targets. `long' can now be
	widened to `double' or `float'.
	(valid_method_invocation_conversion_p): Added leading
	comment. Fixed tabulation.
	(build_string_concatenation): Optimize out left or right empty
	string constants.

1999-01-28  Per Bothner  <bothner@cygnus.com>

	* jcf-write.c (localvar_alloc):  Only emit entry for
	LocalVariableTable if debug_info_level > DINFO_LEVEL_TERSE.
	(generate_bytecode_insns):  Only call put_linenumber if
	debug_info_level > DINFO_LEVEL_NONE.
	* jvspec.c (lang_specific_driver):  If no -O* or -g* option
	is specified, add -g1 (for compatibility wih javac).

1999-01-28  Hans-Peter Nilsson  <hp@axis.se>

	* java/Makefile.in: Add missing dependencies for jcf-dump.o,
	gjavah.o, check-init.o, jv-scan.o

1999-02-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (gjavah.o): Depend on $(CONFIG_H) and system.h.

	* gjavah.c: Include config.h and system.h.

	* javaop.h (inline): Don't define, its handled by system.h.
	(WORD_TO_FLOAT, WORDS_TO_LONG, WORDS_TO_DOUBLE): Change these
	from `inline' to `static inline'.

	* jcf.h (inline): Don't define, its handled by system.h.

	* lex.c (inline): Likewise.

1999-01-31  Zack Weinberg  <zack@rabi.columbia.edu>

	* lang-specs.h: Map -Qn to -fno-ident.

1999-01-29  Richard Henderson  <rth@cygnus.com>

	* check-init.c (check_init): Fix CLEANUP_POINT_EXPR typo.

1999-01-29  Tom Tromey  <tromey@cygnus.com>

	* parse.h (BUILD_APPEND): If ARG is a non-String object reference,
	then cast it to Object before calling `append' method.

1999-01-28  Per Bothner  <bothner@cygnus.com>

	* check-init.c (check_bool2_init, check_bool_init, check_init):
	Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR, and TRUTH_XOR_EXPR.
	* jcf-write.c (generate_bytecode_insns):  Likewise.

1999-01-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (jcf_parse): Don't parse the same class file twice.
	* parse.y (patch_cast): Allow a boolean to be cast into a
	boolean.

1999-01-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y: (class_declaration:): Fixed indentation.
	(class_member_declaration:): Extra `;' after field declaration now
	accepted.
	(interface_declaration:): Removed debug messages in error reports.
	(patch_binop): Nodes created and returned inherit the orignal
	node's COMPOUND_ASSIGN_P flag value.
	(patch_cast): Fix cast from char to floating point.

1999-01-25  Andrew Haley  <aph@cygnus.com>

	* except.c, java-except.h (expand_resume_after_catch): new
	function.
	* expr.c (java_lang_expand_expr): call expand_resume_after_catch
	to branch back to main flow of control after a catch block.

1999-01-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (parse.o): Depend on $(CONFIG_H) and
	$(srcdir)/../system.h.
	(class.o): Depend on $(PARSE_H) and $(srcdir)/../output.h.
	(jcf-parse.o): Depend on $(srcdir)/../toplev.h.
	(jcf-write.o): Likewise.
	(jv-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
	(mangle.o): Depend on $(srcdir)/../toplev.h.
	(parse-scan.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.
	(zextract.o): Depend on $(CONFIG_H) and $(srcdir)/../system.h.

	* class.c: Include output.h and parse.h.
	(mangled_classname): Add the `const' keyword to a char*.
	(find_named_method): Hide unused function definition.
	(build_utf8_ref): Change type of variable `c' to unsigned char.
	Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
	(build_class_ref): Add the `const' keyword to a char*.
	(layout_class_method): Remove unused variable `buf'.

	* decl.c (find_local_variable): Remove unused variable `rtl'.
	(pushdecl): Likewise for variables `different_binding_level' and
	`oldglobal'.
	(pushlevel): Mark parameter `unused' with ATTRIBUTE_UNUSED.
	(maybe_build_cleanup): Likewise for parameter `decl'.

	* except.c (expand_start_java_handler): Mark parameter `range'
	with ATTRIBUTE_UNUSED.

	* expr.c: Include except.h.
	(pop_type): Remove unused variable `i'.
	(pop_value): Likewise for variables `n_words' and `i'.
	(expand_java_arrayload): Likewise for variable `convert'.
	(java_lang_expand_expr): Likewise for variables `op0', `type',
	`mode', `unsignedp', `node' and `elements'.
	(expand_byte_code): Likewise for variables `prev_eh_ranges' and
	`eh_ranges'.
	(process_jvm_instruction): Add a `const' qualifier to a char*.

	* gjavah.c (output_directory): Add the `const' keyword to a char*.
	(temp_directory): Likewise.
	(print_c_decl): Likewise.
	(print_method_info): Likewise.
	(decode_signature_piece): Likewise.
	(print_mangled_classname): Likewise.

	* java-except.h: Provide prototypes for maybe_start_try,
	maybe_end_try and add_handler.

	* java-tree.h (mangled_classname): Add the `const' keyword to a char*.
	(parse_error_context): Likewise.  Also add ATTRIBUTE_PRINTF_2.
	(pushdecl_top_level, alloc_class_constant, unicode_mangling_length,
	init_expr_processing, push_super_field, init_class_processing,
	can_widen_reference_to, class_depth, verify_jvm_instructions,
	maybe_pushlevels, maybe_poplevels, process_jvm_instruction,
	set_local_type, merge_type_state, push_type, load_type_state,
	add_interface, find_in_current_zip, append_gpp_mangled_classtype,
	emit_unicode_mangled_name): Add prototypes.

	* jcf-dump.c (print_constant): Add the `const' keyword to a char*.
	(print_signature_type): Use ISDIGIT, not isdigit.
	(print_signature): Remove unused variable `j'.

	* jcf-io.c (jcf_filbuf_from_stdio): Cast the result of `fread' to
	int when comparing against one.

	* jcf-parse.c: Include toplev.h.

	* jcf-write.c: Likewise.  Don't include <string.h> or <sys/stat.h>.
	(localvar_free): Remove unused variable `i'.
	(generate_bytecode_conditional): Likewise for variable `kind'.

	* jv-scan.c: Include config.h and system.h.  Remove redundant
	OS header and gansidecl.h includes.
	(warning): Add the `const' keyword to a char*.  Also add
	ATTRIBUTE_PRINTF_1 to the prototype.  Check ANSI_PROTOTYPES, not
	__STDC__, when determining whether to use ANSI-isms.
	(fatal): Likewise.  Also add ATTRIBUTE_UNUSED.
	(xmalloc): Don't redundantly prototype here.
	(main): Remove unused parameter `envp'.  Also fix the arguments
	passed to function `fatal' to match the format specifier.

	* lang.c (java_tree_code_name): Add the `const' keyword to a char*.

	* mangle.c: Include toplev.h.
	(emit_unicode_mangled_name): Declare parameter `len'.

	* parse.y (parse_warning_context): Add the `const' keyword to a
	char*.  Also add ATTRIBUTE_PRINTF_2 to the prototype.  Check
	`ANSI_PROTOTYPES' not `__STDC__' for whether to use ANSI-isms.
	(issue_warning_error_from_context): Add the `const' keyword to
	a char*.
	(parse_error_context): Likewise.  Also check `ANSI_PROTOTYPES'
	not `__STDC__' for whether to use ANSI-isms.

	* typeck.c (incomplete_type_error): Mark parameters `value' and
	`type' with ATTRIBUTE_UNUSED.
	(parse_signature_type): Use ISDIGIT, not isdigit.

	* verify.c (check_pending_block): Add the `const' keyword to a char*.
	(verify_jvm_instructions): Likewise.  Remove unused variables
	`field_name' and `default_val'.

	* zextract.c: Include config.h and system.h.  Remove redundant
	OS header includes.

	* zipfile.h: Prototype `read_zip_archive'.

1999-01-21  Andrew Haley  <aph@cygnus.com>

	* typeck.c (convert): Allow conversions to void type: some
	optimizations in gcc do this.

1999-01-21  Andrew Haley  <aph@cygnus.com>

	* typeck.c (convert_ieee_real_to_integer): New function.
	(convert): When not using fast-math and using hardware fp, convert
	an IEEE NaN to zero.

1999-01-18  Andrew Haley  <aph@cygnus.com>

	* parse.y (patch_binop): Do a type conversion from signed to
	unsigned and then back to signed when a ">>>" is found.

1999-01-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h: (check_for_initialization): Added prototype.
	* lex.c (java_parse_doc_section): `\n' breaks the `*/' string.
	* parse.y (do_resolve_class): Removed unused locals.
	(read_import_dir): Likewise.
	(resolve_qualified_expression_name): Array creation
	expressions are valid primary expressions.
	(qualify_ambiguous_name): Likewise.
	(patch_synchronized_statement): Removed unused local.

1999-01-17  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (zextract.o): Add dependencies.

	* Makefile.in: Do not put ^Ls at the start of a line.

1999-01-15  Per Bothner  <bothner@cygnus.com>

	* expr.c (process_jvm_instruction):  Coerce to correct Throwable
	sub-type the result of the call that gets the exception value.

	* parse.y (java_complete_expand_methods):  If flags_syntax_only,
	don't call finish_class.

	* parse.y (java_check_regular_methods):  If METHOD_PRIVATE,
	clear found before continuing.

	* verify.c (verify_jvm_instructions):  On an array load, allow
	and handle top of stack to be TYPE_NULL.

	* gjavah.c (generate_access):  Translate Java package private or
	protected access to C++ public, but with a comment.

1999-01-13  Andrew Haley  <aph@cygnus.com>

	* expr.c (generate_name): Name prefix changed to avoid clashes
	with assembler temp labels.

	* parse.y (patch_synchronized_statement): Set TREE_SIDE_EFFECTS on
	MODIFY_EXPR.  Without this, code for the assignment may not be
	generated at all and the synchronized statement will read an
	uninitialized variable.

1999-01-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (maybe_layout_super_class): Fixed returned value.
	* lex.c: Added 1999 to the copyright.
	(java_init_lex): Initialize java_lang_imported.
	* lex.h: Added 1999 to the copyright.
	* parse.h: Added 1999 to the copyright.
	(REGISTER_IMPORT): Fixed typo in trailing macro.
	(CURRENT_OSB): New macro.
	(struct parser_ctxt): New fields osb_depth, osb_limit.
	* parse.y (java_lang_id): New global variable.
	(type_import_on_demand_declaration): Don't import java.lang.* twice.
	(array_creation_expression:): Use CURRENT_OSB.
	(dims:): Uses a stack to keep track of array dimensions.
	(cast_expression:): Use CURRENT_OSB.
	(find_expr_with_wfl): Return NULL if node found doesn't meet the
	conditions.
	(register_fields): Fixed typos in comment.
	(check_method_redefinition): Fixed comment indentation.
	(java_check_regular_methods): Set saved found wfl to NULL after
	having reinstalled it in the previously found DECL_NAME.

1999-01-10  Richard Henderson  <rth@cygnus.com>

	* gjavah.c (java_float_finite): Use a union to do type punning.
	(java_double_finite): Likewise.

1999-01-09  Per Bothner  <bothner@cygnus.com>

	* parse.y (build_new_array_init):  Don't set EXPR_WFL_LINECOL
	on CONSTRUCTOR (since that trashes TREE_CST_RTL).
	(patch_new_array_init):  Clear TREE_CONSTANT also if INDIRECT_REF.
	(register_fields):  Set TREE_STATIC on NEW_ARRAY_INIT, not on
	CONSTRUCTOR (which causes expand_expr to call output_constant_def).
	* expr.c (java_lang_expand_expr):  Check TREE_STATIC of NEW_ARRAY_INIT.

1999-01-08  Per Bothner  <bothner@cygnus.com>

	* check-init.c (check_init):  If compiling to native, we don't
	see THROW_EXPR.  Instead, look for a call to throw_node (_Jv_Throw).

1999-01-08  Tom Tromey  <tromey@cygnus.com>

	* parse-scan.y (variable_declarator_id): Set or increment
	bracket_count.
	(bracket_count): New global.
	(formal_parameter): Handle case where bracket pairs trail variable
	declarator id.

1999-01-07  Andrew Haley  <aph@viagra.cygnus.co.uk>

	* jcf-parse.c (yyparse): variable len changed from a char to an
	int to prevent overflow.

1999-01-06  Per Bothner  <bothner@cygnus.com>

	* java-tree.h:  Declare read_class.
	* jcf-parse.c (read_class):  New function.
	(load_class):  Now just call read_class.

	* java-tree.h (java_parse_abort_on_error):  Only return if new errors.
	* jcf-parse.c (parse_source_file):  Declare save_error_count,
	which is needed by java_parse_abort_on_error macro,
	* parse.y (java_layout_classes, java_expand_classes):  Likewise.

	* parse.y (register_fields):  Set TREE_STATIC flag of NEW_ARRAY_INIT
	constructor, if initializing a static field.
	(patch_new_array_init):  Set TREE_CONSTANT if it is.
	* expr.c (java_lang_expand_expr):  For a static array constructor
	of primitive elements, allocate the array itself statically.
	Disabled until we can set the vtable field statically.

	* check-init.c:  New file.  Checks for definite assignment.
	* Makefile.in (JAVA_OBJS):  Add check-init.o.
	* parse.y (java_complete_expand_method): Call check_for_initialization.
	* parse.h (BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY):  Moved to java-tree.h.

1999-01-06  Graham <grahams@rcp.co.uk>

	* parse.y : include system.h instead of including
	standard headers directly with the exception of <dirent.h>.

1999-01-06  Per Bothner  <bothner@cygnus.com>

	* lex.h:  Moved static function declarations to lex.c,
	to shut up some -Wall warnings.
	* lex.c:  Static function declarations moved here.
	* jcf-dump.c:  Small fixes to shut up -Wall warnings.

1999-01-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Make-lang.in ($(GCJ).o): Depend on prefix.h.

1998-12-22  Per Bothner  <bothner@cygnus.com>

	* expr.c (process_jvm_instruction):  Do load_type_state after JSR.
	* verify.c (verify_jvm_instructions):  Fix off-by-one error.

	* jcf-write.c (CHECK_PUT):  Add (void) cast to avoid -Wall warnings.
	(localvar_alloc):  Change return type to void,
	(emit_unop):  Remove unused variable size.

	* jcf-write.c (struct jcf_block):  Add new union.
	(PENDING_CLEANUP_PC, PENDING_EXIT_PC, UNDEFINED_PC):  New macros.
	(call_cleanups):  New functions.
	(struct jcf_partial):  New fields num_finalizers and return_value_decl.
	(generate_bytecode_insns):  Support CLEANUP_POINT_EXPR and
	WITH_CLEANUP_EXPR.  Handle cleanups in RETURN_EXPR and EXIT_BLOCK_EXPR.
	* lang.c (lang_init):  Call using_eh_for_cleanups.
	* parse.y (java_complete_lhs):  For SYNCHRONIZED_EXPR, defer
	completing operands to patch_synchronized_statement.
	Support CLEANUP_POINT_EXPR, WITH_CLEANUP_EXPR.
	(patch_synchronized_statement): Re-write suing CLEANUP_POINT_EXPR and
	WITH_CLEANUP_EXPR instead of TRY_EXPR.

1998-12-20  John F. Carr  <jfc@mit.edu>

	* Make-lang.in: Comment out control-Ls; they upset some makes.

1998-12-18  Tom Tromey  <tromey@cygnus.com>

	* parse.y (check_class_interface_creation): Use DIR_SEPARATOR
	consistently.

1998-12-17  Tom Tromey  <tromey@cygnus.com>

	* parse.y (DIR_SEPARATOR): New define.
	(check_class_interface_creation): Use it.

	* parse-scan.y (report_main_declaration): Recognize
	`java.lang.String' in argument to main.

1998-12-16  Per Bothner  <bothner@cygnus.com>

	* parse.y (create_interface):  Remove bogus test.

1998-12-16  Per Bothner  <bothner@cygnus.com>

	* jcf-parse.c (get_constant):  Set TREE_TYPE for string constants.
	(HANDLE_CONSTANTVALUE):  If flag_emit_class_files, call get_constant.

1998-12-16  Tom Tromey  <tromey@cygnus.com>

	* parse-scan.y (qualified_name): Use correct sprintf format.

1998-12-15  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_field_info): Changed how most negative number is
	printed.

1998-12-14  Per Bothner  <bothner@cygnus.com>

	* parse.y (fold_constant_for_init):  New function.
	(resolve_expression_name):  Don't replace static final
	constant-initialized fields by its value.
	(java_complete_lhs):  New.  Same as java_complete_tree, except does
	not replace static final constant-initialized fields by their values.
	(register_fields):  If there is an initializer, set DECL_INITIAL and
	MODIFY_EXPR_FROM_INITIALIZATION_P.
	(java_complete_tree):  For MODIFY_EXPR, use java_complete_lhs for lhs.
	Only call patch_initialized_static_field if
	MODIFY_EXPR_FROM_INITIALIZATION_P.
	(patch_initialized_static_field):  If not valid constant, clear
	DECL_INITIAL.

	* parse.y (lookup_field_wrapper):  Fix thinko.

	* parse.y (java_complete_tree):  In EXPR_WITH_FILE_LOCATION,
	set and restore global lineno.

1998-12-14  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_field_info): If value to print is the smallest
	value of its size, then print as hex to avoid later warnings from
	C++ compiler.

1998-12-14  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (decompile_method): Decompile `return null'.
	(process_file): Generate `#pragma interface'.
	(method_declared): New global.
	(print_method_info): Set it.
	(HANDLE_CODE_ATTRIBUTE): Only print it method_declared set.
	(print_method_info): Handle abstract methods.

1998-12-13  Per Bothner  <bothner@cygnus.com>

	* parse.y (patch_method_invocation):  If class_decl is null
	(e.g. an array type), use original type.

	* parse.y (check_thrown_exceptions):  Temporary hack to suppress
	errors about uncaught exception from clone (of array, specifically).

1998-12-13  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (decompile_method): Handle all types of `return'
	opcode.  Decompile `return this' and `return'.
	(method_access): New global.
	(print_method_info): Set it.
	(decompile_method): Don't decompile a synchronized method.

1998-12-13  Tom Tromey  <tromey@cygnus.com>

	* jcf-reader.c (jcf_parse_one_method): Recognize
	HANDLE_END_METHOD.
	* gjavah.c (HANDLE_END_METHOD): New macro.
	(HANDLE_CODE_ATTRIBUTE): New macro.
	(decompile_method): New function.
	(print_method_info): Don't print `;\n' at end of function decl.
	Include java-opcodes.h.
	(decompiled): New global.

1998-12-12  Per Bothner  <bothner@cygnus.com>

	* class.c (build_class_ref):  Handle PRIMTYPE.class if
	flag_emit_class_files.
	* expr.c (expand_java_field_op):  Don't optimize java.lang.XXX.TYPE
	if flag_emit_class_files.
	* parse.y (java_complete_tree):  Pre-liminary support for
	COMPONENT_REF - only to handle PRIMCLASS.TYPE.

	* parse.y (patch_synchronized_statement):   Don't call monitorexit
	unless block CAN_COMPLETE_NORMALLY.  Propagate that flag properly.

	* java-tree.h (DECL_LOCAL_STATIC_VALUE):  Removed - no longer used.

	* zipfile.h (opendir_in_zip):  New declaration.
	* jcf-io.c (saw_java_source):  Moved to jcf-parse.c.
	(opendir_in_zip):  New function, using code from open_in_zip.
	(open_in_zip):  Call opendir_in_zip.
	(find_class):  Remove no-longer-used do_class_file parameter,
	but add source_ok parameter.  Change logic so if we find a .java file,
	we don't look for .class in later classpath emtries.
	* jcf-parse.c (load_class):  Pass saw_java_source to find_class.
	(jcf_figure_file_type):  Only call open_in_zip if correct magic number.
	* gjavah.c: Update call to find_class.
	* jcf-dump.c:  Likewise.

	* jcf-write.c (put_linenumber):  Handle duplicate line numbers.
	(generate_bytecode_insns):  For EXPR_WITH_FILE_LOCATION, do
	nothing if body is empty_stmt_node.
	Various little fixes so SP gets correctly adjusted.
	For NEW_ARRAY_INIT, handle IGNORE_TARGET.
	For CALL_EXPR, test if static first.
	(generate_classfile):  Ignore fields that are DECL_ARTIFICIAL,
	such as the ones we create for Object and Class.
	Set and restore current_function_decl.
	* parse.y:  Check/set IS_AN_IMPORT_ON_DEMAND_P in read_import_dir.
	(note_possible_classname):  New function.
	(read_import_entry):  Removed.  Merged with read_import_dir.
	(read_import_dir):  Don't call find_class - that only gives us
	the first classpath entry having the needed package.
	Use the struct buffer data structure from buffer.h.
	(read_import_dir, find_in_imports_on_demand):  The remembered
	class names now use '.' (not '/') as package separator.

	* parse.y (java_complete_expand_methods):  Call write_classfile
	here, and not in java_expand_classes (which only gets first class).

1998-12-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (<type_declaration>):  Do maybe_generate_clinit last.
	(register_fields):  If a static fields has an initializer, just
	chain it on ctxp->static_initialized, and handle later.
	(java_complete_expand_methods):  Force <clinit> first.
	(resolve_expression_name, resolve_field_access):  Just get DECL_INITIAL
	- it's already been completed.
	(patch_initialized_static_field):  New function.
	(java_complete_field):  Call it.

1998-12-12  Per Bothner  <bothner@cygnus.com>

	* expr.c (encode_newarray_type, build_new_array):  New functions.
	* java-tree.h:  Declare build_new_array.
	* jcf-write.c (patch_newarray):  Use build_new_array.

	* expr.c (java_lang_expand_exp):  Support NEW_ARRAY_INIT.
	* jcf-write.c (generate_bytecode_insns):  Support NEW_ARRAY_INIT.

	* parse.y (patch_new_array_init):  Re-organize.
	Now is passed the actual array (pointer) type of the value.
	Set the type of the CONSTRUCTOR to be an ARRAY_TYPE.
	(patch_array_constructor):  Removed - merged into patch_new_array_init.
	(java_complete_tree):  Update patch_new_array_init.

	* jcf-write.c (find_constant_index):  New function.
	(generate_bytecode_insns):  Use find_constant_index.
	(generate_classfile):  Use find_constant_index for ConstantValue.

1998-12-11  Tom Tromey  <tromey@cygnus.com>

	* expr.c (invoke_build_dtable): Renamed dtable -> vtable.
	* decl.c (init_decl_processing): Renamed dtable -> vtable.
	* class.c (make_class_data): Renamed dtable -> vtable, and
	dtable_method_count -> vtable_method_count.

1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (long_zero_node, float_zero_node, double_zero_node): New
	global variables, initialized.
	* java-tree.h (long_zero_node, float_zero_node, double_zero_node):
	Declared new global variables.
	* lex.c (java_lex): Return long_zero_node, float_zero_node,
	double_zero_node, integer_zero_node upon direct matching.
	* parse.y (purify_type_name): Added function prototype.
	(duplicate_declaration_error_p): Consider new_type as potentially
	being a incomplete type. Use purify_type_name on type string.
	(method_header): saved_type: unused variable removed. Don't figure
	return type if method name is invalid.
	(java_complete_tree): Set CAN_COMPLETE_NORMALLY after `node' was
	processed by patch_unaryop.
	(patch_unaryop): Fixed typo in comment. Re-convert pre/post
	increment/decrement node into its original type after binary
	numeric promotion on its operands.

1998-12-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (array_initializer:): Array init operand is NULL_TREE
	instead of a TREE_LIST of NULL_TREEs when parsing `{}'. `{,}' is
	now an error. Fixed indentation problems.
	(patch_string): Handle error_mark_node as an argument.
	(patch_new_array_init): Fixed indentation problems.
	(array_constructor_check_entry): Removed check on null wfl_value.
	Return an error if wfl_value's walk returns an error.

1998-12-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.def (NEW_ARRAY_INIT): New Java tree code.
	* lex.c (java_lex): Remember column position before advancing one
	token. Retain location information on OCB_TK.
	* lex.h (typedef struct java_lc): Added new field.
	* parse.h (GET_SKIP_TYPE): New macro.
	(QUAL_DECL_TYPE): Redefined using GET_SKIP_TYPE.
	* parse.y (build_new_array_init, patch_new_array_init,
	patch_array_constructor, maybe_build_array_element_wfl,
	array_constructor_check_entry): New function prototypes.
	(switch_block:): Tagged <node>.
	(OCB_TK): Tagged <operator>.
	(array_initializer:): Installed actions.
	(variable_initializer): Build location information on element if
	necessary.
	(switch_statement:): Fixed indentation typo.
	(switch_block:): Redefined default action.
	(java_complete_tree): Handle NEW_ARRAY_INIT in MODIFY_EXPR:.
	(patch_assignment): Removed duplicate code.
	(maybe_build_array_element_wfl, build_new_array_init,
	patch_new_array_init, patch_array_constructor,
	array_constructor_check_entry): New functions.

1998-12-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (array_initializer): Tagged <node>.
	(variable_initializer:): Use default rule.
	(array_initializer:): Defined actions.
	(variable_initializers:): Likewise.
	(resolve_qualified_expression_name): Use DECL_CONTEXT to build
	non-static field accesses.
	(patch_invoke): Fixed indentation typo.
	(java_complete_tree): Likewise.
	(build_labeled_block): Changed leading comment. Generate an error
	in case of duplicate loop labels.
	(patch_conditional_expr): Patch results of string concatenation
	operations.

1998-12-06  Per Bothner  <bothner@cygnus.com>

	* constants.c (find_methodref_index):  When the class is an interface,
	generate CONSTANT_InterfaceMethodref instead of a CONSTANT_MethodRef.

	* decl.c (finit_identifier_node):  Use "$finit$", rather than
	"<finit>" (which Sun's verifier rejects).
	* parse.y (maybe_generate_finit):  Leave out meaningless final flag.
	(generate_field_initialization_code):  Removed.
	(fix_constructors)  Don't add call to $finit$ here (wrong order).
	(patch_method_invocation):  Add $finit$ call here.

	* java-tree.h (CALL_USING_SUPER):  New macro.
	* parse.y (patch_invoke):  Remove im local variable.
	(patch_method_invocation, patch_invoke):  Don't pass super parameter.
	(patch_invoke):  Use CALL_USING_SUPER instead of from_super parameter.
	(resolve_qualified_expression_name):  Maybe set CALL_USING_SUPER.

	* jcf-write.c (get_access_flags):  Fix typo ACC_PUBLIC -> ACC_FINAL.

	* parse.y (java_complete_tree):  Don't complain about unreachable
	statement if it is empty_stmt_node.

	* jcf-write.c (find_constant_wide):  New function.
	(push_long_const):  Use find_constant_wide.

	* jcf-write.c (generate_bytecode_insn):  Fix bug in switch handling.
	(generate_bytecode_insn):  Use correct dup variant for MODIFY_EXPR.
	Add "redundant" NOTE_PUSH/NOTE_POP uses so code_SP_max gets set.
	Emit invokeinterface when calling an interface method.
	Emit invokespecial also when calling super or private methods.

	* jcf-write.c (generate_classfile):  Emit ConstantValue attributes.

1998-12-06  Per Bothner  <bothner@cygnus.com>

	* jcf-dump.c (INVOKE):  If invokeinterface, print number of args.

1998-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (java_layout_seen_class_methods): New function
	prototype.
	(LAYOUT_SEEN_CLASS_METHODS): Macro removed.
	* jcf-parse.c (parse_class_file): Call java_layout_seen_class_methods.
	* parse.h (PROMOTE_RECORD_IF_COMPLETE): New macro.
	* parse.y (method_declarator:): Defined action.
	(issue_warning_error_from_context): input_filename saved, set to
	the appropriate value and restored after java_error is called.
	(build_unresolved_array_type): Fixed comment.
	(register_fields): Use PROMOTE_RECORD_IF_COMPLETE.
	(method_header): Deal with return type the same way type are
	handled for fields and method's parameters and local variables
	types are handled.
	(check_method_redefinition): Removed extra CR.
	(declare_local_variables): Use PROMOTE_RECORD_IF_COMPLETE.
	(java_layout_seen_class_methods): New function.
	(java_layout_classes): Call java_layout_seen_class_methods.

1998-12-03  Per Bothner  <bothner@cygnus.com>

	* parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.

1998-12-03  Per Bothner  <bothner@cygnus.com>

	* jcf-dump.c (main):  Fix error message.
	* jcf-path.c (add_entry):  Style fix.

1998-12-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class_method): Call build_java_argument_signature
	on constructors too.
	* parse.y (check_method_redefinition): Use TYPE_ARGUMENT_SIGNATURE.
	(patch_method_invocation): Define a primary when resolving an
	expression name. Augmented comment on code checking illegal `this'
	usage. Loosened it test by accepting NEW_CLASS_EXPR.

1998-12-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class_method): Don't report error on non-static
	overriding static if the method is private.
	* java-tree.h (finish_class): Prototype added.
	* lex.c (java_get_line_col): Handle col argument -2 value.
	* parse.h: All static method declarations moved to parse.y.
	* parse.y: Now contains all static method declarations previously
	found in parse.h.
	(find_expr_with_wfl, missing_return_error,
	unreachable_stmt_error): New functions.
	(java_get_real_method_name): Identify constructors bearing class
	names in source code compiled classes only.
	(java_complete_expand_methods): Call missing_return_error.
	(invocation_mode): Private methods invoked as static methods.
	(java_complete_tree): Call unreachable_stmt_error.

1998-12-01  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (+target): Removed.
	(+xmake_file): Likewise.
	(+tmake_file): Likewise.
	(.NOEXPORT): Removed duplicate.

1998-11-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (jc1, jv-scan): Link with $(SUBDIR_OBSTACK).

	* jv-scan.c: Fix xmalloc prototype.  Provide an xmalloc definition.

	* jvgenmain.c: Remove the xmalloc prototype, we get it from
	libiberty.h.  Provide an xmalloc definition.

	* jvspec.c: Remove the xmalloc prototype.

	* parse-scan.y: Include config.h and system.h.  Don't include
	OS headers or gansidecl.h.  Don't prototype xmalloc/xstrdup.
	Provide an xstrdup definition.

1998-11-26  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* jcf-path.c (add_entry): Recognize ".jar" too.
	* lang-specs.h: Likewise.

1998-11-26  Per Bothner  <bothner@cygnus.com>

	* jcf-write.c (generate_bytecode_insns):  In Call_EXPR, handle
	soft_monitorenter_node, soft_monitorexit_node, throw_node.

	* jcf-write.c (generate_bytecode_insns):
	Handle pre/post-increment/decrement of long.

	* jcf-write.c (generate_bytecode_insns):
	Handle missing exception handler (finally for synchronized).

1998-11-25  Per Bothner  <bothner@cygnus.com>

	* java-tree.h (end_params_node):  Declare global.
	* decl.c (end_params_node):  New global.
	(init_decl_processing, start_java_method):  Use end_params_node for
	end of list of parameter types.  Follows correct gcc conventions.
	* expr.c (pop_argument_types, pop_arguments):  Likewise.
	* lang.c (put_decl_node):  Likewise.
	* typeck.c (various places):  Likewise.
	* class.y (various places):  Likewise.
	* parse.y (various places):  Likewise.

	* parse.y (java_complete_tree):  Move CAN_COMPLETE_NORMALLY.
	(build_jump_to_finally):  Add missing CAN_COMPLETE_NORMALLY.

	* class.c:  Add #include flags.h, remove no-longer needed declaration.

	* class.c (layout_class_method):  Remove commented-out code, re-format.
	Don't add vtable entry (or index) for private methods.
	* expr.c (expand_invoke):  A private method is implicitly final.
	* class.c (make_class_data):  If inlining or optimizing,
	skip private methods.

	* class.c (finish_class):  New function.  Calls existing methods,
	but alls emits deferred inline functions.
	* jcf-parse.c (parse_class_file):  Call finish_class.
	* parse.y (java_complete_expand_methods):  Likewise.

	* expr.c (build_java_binop):  Explicit default, to silence -Wall.

	* expr.c (CHECK_PC_IN_RANGE):  Add void cast to kill warnings.

1998-11-25  Marc Espie <espie@quatramaran.ens.fr>

	* jcf-write.c (generate_bytecode_conditional): Fix typo.

1998-11-24  Per Bothner  <bothner@cygnus.com>

	* (generate_classfile): Always write class access flag with
	ACC_SUPER set.

1998-11-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (maybe_layout_super_class): New function.
	(layout_class): Reorganized. Loop on class methods dispatched into
	a new function. Call maybe_layout_super_class.
	(layout_class_methods, layout_class_method): New functions.
	* expr.c (expand_java_NEW): Call layout_class_methods on loaded
	class.
	(expand_invoke): Likewise.
	* java-tree.h (all_class_list): New global variable declared.
	(layout_class_methods, layout_class_method): New function
	prototypes.
	(LAYOUT_SEEN_CLASS_METHODS): New macro.
	* jcf-parse.c (all_class_list): New global variable.
	(load_class): Extended what class_or_name can be. Use parser
	context mechanism to save globals before calling jcf_parse.
	(jcf_parse_source): Don't parse twice if HAS_BEEN_ALREADY_PARSED_P
	is set on the file name.
	(jcf_parse): Layout class methods when Object is loaded, otherwise
	record class in all_class_list for delayed method layout.
	(parse_class_file): Use LAYOUT_SEEN_CLASS_METHODS.
	* lang.c (put_decl_node): Decode <init> into the decl context
	class name.
	* lex.c (java_allocate_new_line): Use xmalloc.
	* parse.h (INCOMPLETE_TYPE_P): Redefined to work with incomplete
	pointers, not TREE_LIST elements.
	(struct parser_ctxt): Fixed comment indentations, added comments
	and reordered some fields.
	(java_check_methods): Function prototype removed.
	* parse.y (java_push_parser_context): Use xmalloc.
	(java_parser_context_restore_global): Pop extra pushed ctxp only
	when there's nothing next.
	(maybe_create_class_interface_decl): Fixed comment, add new
	created class decl to all_class_list.
	(method_header): Use GET_REAL_TYPE on argument's types.
	(method_declarator): Use GET_REAL_TYPE, change type to the real
	type in TREE_LIST dependency node. Build argument list with the
	real type.
	(create_jdep_list): Use xmalloc. Removed allocation error message.
	(obtain_incomplete_type): Fixed leading comment. Broadened
	incoming argument meaning.
	(register_incomplete_type): Use xmalloc. Removed allocation error
	message.
	(safe_layout_class): Fixed leading comment.
	(jdep_resolve_class): Reversed if statement condition and switch
	if and else bodies.
	(resolve_and_layout): Fixed leading comment. Broadened incoming
	argument meaning.
	(complete_class_report_errors): New local variable name, for
	clarity. purify_type_name used for all error cases.
	(java_get_real_method_name): Stricter check on constructors.
	(java_check_regular_methods): Reverse methods list only if not
	already laid out. Layout artificial constructor.
	(java_check_methods): Deleted.
	(source_start_java_method): Obtain incomplete type for patchable
	method arguments.
	(java_layout_classes): Fixed leading comment. Use
	LAYOUT_SEEN_CLASS_METHODS, use a loop to check methods. Added else
	statement to layout operation, reuse LAYOUT_SEEN_CLASS_METHODS
	before returning. Fixed comments.
	(java_expand_classes): Check for errors up front.
	(patch_method_invocation): Class to search is resolved and laid
	out.

1998-11-24  Per Bothner  <bothner@cygnus.com>

	* expr.c (java_lang_expand_expr):  Add missing emit_queue.

	* javaop.h (int8):  Removed - not used.
	(jbyte):  Redefine portably with correct signedness.

	* jcf-write.c (generate_bytecode_insns):  Don't free sw_state.cases.

	* jcf-write.c (generate_bytecode_insns):  Fix typo
	OPCODE_getstatic to OPCODE_getfield.

	* java-tree.def (CASE_EXPR, DEFAULT_EXPR):  Kind is 'x', not '1'.
	* parse.y (java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR,
	set TREE_SIDE_EFFECTS (otherwise expand_expr may skip them).

1998-11-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (jcf_parse_source): Function returned type is
	void. Added prototype.
	(jcf_parse): Function returned type is void.
	(yyparse): Remove call to fclose on the last parsed file.

	* java-tree.h (jcf_parse): Changed jcf_parse prototype.

1998-11-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
	(layout_class): Cope with methods featuring WFL in decl names.
	* decl.c (unqualified_object_id_node): New global variable,
	initialized.
	(build_decl_no_layout): Removed.
	* expr.c (build_primtype_type_ref): Handle Double.
	(java_lang_expand_expr): Fixed indentations.
	* java-tree.h (CLASS_METHOD_CHECKED_P): Flag deleted.
	(flag_wall, flag_redundant, flag_not_overriding,
	flag_static_local_jdk1_1, unqualified_object_id_node): Global
	variable declarations.
	(build_decl_no_layout): Removed prototype.
	(java_get_real_method_name): Added prototype.
	(IS_UNCHECKED_EXPRESSION_P): Renamed IS_UNCHECKED_EXCEPTION_P.
	(java_parse_abort_on_error): Macro now just returns.
	* jcf-parse.c (jcf_parse_source): Check fclose returned
	value. Call emit_register_classes if java_report_errors returns
	zero.
	* lanc.c (flag_wall, flag_redundant, flag_not_overriding,
	flag_static_local_jdk1_1): New integer flags.
	(lang_decode_option): New flags set here.
	* parse.h (GET_REAL_TYPE, GET_METHOD_NAME): New macros.
	(OBSOLETE_MODIFIER_WARNING): Issue error message conditionally to
	the flag_redundant variable.
	(SET_TYPE_FOR_RESOLUTION): Consider Object being java.lang.Object
	when parsing java.lang.Object class.
	(BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT): Added terminal
	NULL_TREE to build.
	(resolve_qualified_expression_name): Fixed indentation.
	(patch_array_ref): Changed prototype.
	(not_initialized_as_it_should_p): Prototype removed.
	(java_report_errors): Added function prototype.
	* parse.y (formal_parameter:): Changed error message for not yet
	supported final parameters.
	(class_type_list:): Set both PURPOSE and VALUE of created
	TREE_LIST to be class_type.
	(primary_no_new_array:): Handle class literals on primitive types.
	(parse_warning_context): Reinstalled correct force_error and
	do_warning flags setups.
	(java_report_errors): Changed prototype. Return java_error_count
	value.
	(variable_redefinition_error): Consider treating variable type as
	a fake pointer.
	(create_interface): Warn about redundant abstract modifier if
	flag_redundant is set. Changed error message.
	(lookup_field_wrapper): Save/restore globals before/after looking
	up field.
	(duplicate_declaration_error_p): Consider treating declaration
	type as a fake pointer.
	(register_fields): Extract real type from dependency node. Check
	for duplicate field declaration after type adjustment. Use
	DECL_INITIAL to store static final initialized values.
	(method_header): Extract real function type from dependency node.
	(check_abstract_method_header): Use GET_METHOD_NAME.
	(obtain_incomplete_type): Layout fake pointer type.
	(safe_layout_class): Don't try to check for methods before layout.
	(java_complete_class): Don't check for correct throws clause
	elements inheritance here.
	(resolve_and_layout): Broadened name parameter meaning.
	(reset_method_name): Use GET_METHOD_NAME.
	(java_get_real_method_name): New function.
	(java_check_regular_methods): Don't check methods in
	java.lang.Object.  Verify lineage of throws clause elements. Use
	flag_no_overriding in warning report.
	(check_throws_clauses): Don't check if class was from
	bytecode. Use IS_UNCHECKED_EXCEPTION_P macro.
	(java_check_methods): Don't set CLASS_METHOD_CHECKED_P flag.
	(declare_local_variables): Use flag_static_local_jdk1_1 to report
	warning on unsupported final local variables. Use build_decl
	instead of build_decl_no_layout. Get real local variable type from
	dependency node.
	(source_start_java_method): Get real parameter type from
	dependency node. Call build_decl instead of build_decl_no_layout.
	(java_layout_classes): Reverse tree and layout type and class as
	required. Mark class as loaded when done.
	(resolve_field_access): Fixed indentation. Restricted condition
	leading to static field access code generation. Set field_type
	decl's TREE_TYPE if QUAL_DECL_TYPE not available.
	(resolve_qualified_expression_name): Initialize type_found to
	null. Handle static field resolved during qualification. Fixed
	layout on non primitive field decl types.
	(not_accessible_p): Fixed typo in comment.
	(patch_method_invocation): Resolve and layout class to search from
	type.
	(lookup_method_invoke): Keep integer constant 0 as is. Resolve and
	layout non primitive type, if necessary. Make method node only to
	report errors.
	(find_applicable_accessible_methods_list): Consider WFL'ed method
	decl names. Fixed indentation.
	(argument_types_convertible): Resolve and layout target type if
	necessary.
	(java_complete_tree): Fixed indentation problems. Rewrote
	CALL_EXPR thrown exceptions check. Re-installed further processing
	of the assignment in certain cases.
	(patch_assignment): Call maybe_build_primttype_type_ref to perform
	inlining on class literals.
	(valid_builtin_assignconv_identity_widening_p): Cope with constant
	0 literal.
	(valid_method_invocation_conversion_p): Likewise.
	(patch_string): Temporary disable forbidden use of `this' in
	explicit constructor invocations when doing string concatenation
	within their scope.
	(patch_unaryop): Added comment. Reinstalled code to disable
	further check on assignment operation with cast expression RHS.
	(patch_switch_statement): Fixed indentation.
	(build_try_statement): Call build_decl instead of
	build_decl_no_layout.
	(patch_synchronized_statement): Likewise.
	(patch_throw_statement): Use IS_UNCHECKED_EXCEPTION_P instead of
	IS_UNCHECKED_EXPRESSION_P.
	(check_thrown_exceptions_do): Changed leading comment. Resolve and
	layout argument exception type.
	(purge_unchecked_exceptions): Use IS_UNCHECKED_EXCEPTION_P instead
	of IS_UNCHECKED_EXPRESSION_P.

1998-11-18  Anthony Green  <green@cygnus.com>

	* jcf-parse.c (yyparse): Open class file in binary mode.

1998-11-15  Per Bothner  <bothner@cygnus.com>

	* jvgenmain.c:  Need to #include "gansidecl.h" (to get PROTO).

	* jcf-write.c (perform_relocations):  Move check out one loop.

1998-11-15  Anthony Green  <green@hoser.cygnus.com>

	* Make-lang.in: Fix reference to srcdir.
	* jv-scan.c: Add missing xmalloc prototype.
	* jvgenmain.c: Ditto.

1998-11-15  Per Bothner  <bothner@cygnus.com>

	* decl.c (error_mark_node), java-tree.h:  New global.
	* parse.y:  Use empty_stmt_node instead of size_zero_node.
	(build_if_else_statement):  If missing else, use empty_stmt_node.

	* parse.y (not_initialized_as_it_should_p):  Removed, with its callers.
	(java_complete_expand_method):  Complain if return is missing.
	(java_check_regular_methods):  Comment out incorrect error check.
	(not_accessible_p):  Fix incorrect handling of protected methods.
	(patch_method_invocation):  Pass correct context to not_accessible_p.
	(find_applicable_accessible_methods_list):  Likewise.
	(qualify_ambiguous_name):  If ARRAY_REF, it's an expression name.
	(java_complete_tree):  For CASE_EXPR and DEFAULT_EXPR, set
	TREE_TYPE (to void_type_node);  otherwise expand_expr crashes.
	(patch_if_else_statement):  Fix setting of CAN_COMPLETE_NORMALLY.

	* jcf-write.c (CHECK_OP, CHECK_PUT):  Add some error checking.
	(push_int_const):  Remove reundant NOTE_PUSH.
	(generate_bytecode_insns - case STRING_CST):  Do NOTE_PUSH.
	(- case SWITCH_EXPR):  Fix code generation bug.
	(- case PREDECREMENT_EXPR etc):  Remove redundant NOTE_PUSH.
	(generate_classfile):  More robust for abstract methods.

1998-11-15  Anthony Green  <green@cygnus.com>

	* Makefile.in: jv-scan and jvgenmain all require libiberty.
	* Make-lang.in: Ditto.

	* jv-scan.c: Remove xmalloc and xstrdup definitions.
	* jvgenmain: Ditto.

1998-11-15  Per Bothner  <bothner@cygnus.com>

	* jcf-parse.c (HANDLE_EXCEPTIONS_ATTRIBUTE):  New macro.

	* jcf-io.c (find_class):  Simpler/cleaner structure fixes a bug.

1998-11-14  Per Bothner  <bothner@cygnus.com>

	Allow uses of interface types to verify.  This is not really
	type-safe, but it matches what Sun does, and is OK as long as
	there are appropriate run-time checks.
	* verify.c (merge_types):  If merging two interface types,
	just set the result to java.lang.Object.
	* expr.c (pop_type):  Any interface is matches by java.lang.Object.

1998-11-13  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (main): Handle --output-class-directory argument.
	* jvspec.c (lang_specific_driver): Translate `-d' into
	-foutput-class-dir.
	* jcf.h (jcf_write_base_directory): Declare.
	* lang.c (lang_decode_option): Recognize -foutput-class-dir.
	* lang-options.h: Mention -foutput-class-dir.
	* jcf-write.c (jcf_write_base_directory): New global.
	(make_class_file_name): Put generated .class file into `-d'
	directory, or into source directory if -d not given.  Function now
	static.
	(write_classfile): Free class file name.  Handle case where class
	file name is NULL.
	(DIR_SEPARATOR): New macro.
	Include <sys/stat.h>

	* Makefile.in (prefix): New macro.

1998-11-12  Per Bothner  <bothner@cygnus.com>

	* parse.y (patch_invoke):  Do less if flag_emit_class_files.
	* expr.c (build_known_method_ref):  Don't check flag_emit_class_files
	here (done in patch_invoke instead).
	(case_identity):  Moved here from parse.y.

	* java-tree.h (CAN_COMPLETE_NORMALLY):  New macro.
	* parse.y (java_complete_tree etc):  Maybe set CAN_COMPLETE_NORMALLY.
	* parse.y (java_complete_tree):  Re-order COMPOUND_EXPR in BLOCK
	so they can be efficiently scanned without recursion.
	Error it ! CAN_COMPLETE_NORMALLY first part of COMPOUND_EXPR.
	* expr.c (java_lang_expand_expr):  Expand statements of COMPOUND_EXPR
	in BLOCK iteratively, rather than recursively.

	* parse.y (do_unary_numeric_promotion):  New function.
	(patch_unaryop, patch_binop, patch_array_ref):  Use it.

	* parse.y (patch_newarray):  Various fixes.

	Re-do handling of switch statements (for proper block scoping).
	* parse.y:  Add just a single block for the enture switch block,
	but don't create any "case blocks".
	(group_of_labels):  Rmeoved unneeded non-terminal.
	CASE_EXPR and DEFAULT_EXPR are added to current block.
	* expr.c (java_lang_expand_expr):  Inline SWITCH_EXPR here.
	Now also need to handle CASE_EXPR and DEFAULT_EXPR.
	* java-tree.h (SWITCH_HAS_DEFAULT):  New macro.
	* parse.y (wfl_operator, print_int_node): Make non-static.
	(java_complete_tree):  CASE_EXPR and DEFAULT_EXPR are now processed
	as part of recursive scan of block.
	(java_expand_switch ):  Removed - inlined into java_lang_expand_expr.
	(patch_switch_statement):  Most tests move dinto java_complete_tree.

	* parse.y:  Make various production be non-typed (void).
	* parse.y (parse_error):  Merged into issue_warning_error_from_context.
	* parse.y (add_stmt_to_compound):  Don't create/change extra node.
	(patch_method_invocation_stmt):  Renamed to patch_method_invocation.

	* jcf-write.c (struct jcf_handler):  New type.
	(struct jcf_switch_state):  New type.
	(SWITCH_ALIGN_RELOC, BLOCK_START_RELOC):  New relocation kinds.
	(alloc_handler, emit_unop, emit_reloc):  New functions.
	(adjust_typed_op):  Add extra parameter ("max type" offset).
	(emit_switch_reloc, emit_case-reloc):  New function.
	(generate_bytecode_conditional):  Handle REAL_TYPE comparisons.
	(generate_bytecode_insns):  Support REAL_CST, switch statements,
	exception handling, method calls, object/array creation, and more.

	* class.c:  Remove some unused variables.
	* constants.c (find_string_constant):  New function.
	(count_constant_pool_bytes):  Fix to correctly handle wide constants.
	* decl.c (complete_start_java_method):  Don't _Jv_InitClass
	if flag_emit_class_files.

1998-11-12  Tom Tromey  <tromey@cygnus.com>

	* jcf-io.c (find_class): Added explanatory comment.

	* jcf-path.c (add_entry): Look for `.zip' at end of filename.  Add
	trailing slash to `.zip' entries.

	* jvspec.c (lang_specific_driver): Correctly handle case where
	GC_NAME not defined.

1998-11-11  Tom Tromey  <tromey@cygnus.com>

	* jvspec.c (GC_NAME): New define.
	(lang_specific_driver): Use GC_NAME.  Add GC_NAME to command line
	if required.
	* Make-lang.in (jvspec.o): Define WITH_GC_<name>.

1998-11-11  Per Bothner  <bothner@cygnus.com>

	* jcf-dump.c (TABLE_SWITCH):  Fix typos.

1998-11-11  Tom Tromey  <tromey@cygnus.com>

	* jcf-dump.c (main): Correctly recognize `--'-style long options.

1998-11-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (is_compiled_class): Call safe_layout_class for class
	compiled from source.
	* conver.h (convert_to_integer, convert_to_real,
	convert_to_pointer): Added prototypes.
	* decl.c (init_decl_processing): Non longer push the decls of
	`methodtable', `constants', `Class', `Field', `dispatchTable'
	`jexception' and `Method'.
	* expr.c (build_invokeinterface): New function.
	(expand_invoke): static variable CLASS_IDENT now in
	build_invokeinterface. Use build_invokeinterface.
	(expand_java_field_op): Moved code to inline
	java.lang.PRIMTYPE.TYPE into a function.
	(build_primtype_type_ref): New function.
	* java-tree.def (INSTANCEOF_EXPR): New tree code.
	* java-tree.h (CLASS_METHOD_CHECKED_P, METHOD_DEPRECATED,
	FIELD_DEPRECATED, CLASS_DEPRECATED): New flag macros.
	(DECL_CONSTRUCTOR_P): Fixed typo in comment.
	(DECL_LOCAL_STATIC_VALUE): New macro.
	(build_invokeinterface, build_primtype_type_ref): New function
	prototypes.
	(java_parse_abort_on_error): Macro rewritten.
	* jcf-parse.c (current_method): Add comment to declaration.
	(parse_zip_file_entries, process_zip_dir, void parse_source_file):
	Function prototypes fixed.
	(jcf_parse_source): push/pop parser context. save/restore global.
	(parse_source_file): Fixed leading comment. Now take a
	IDENTIFIER_NODE as an argument. Doesn't check methods, layout
	classes and pop the parser context anymore.
	(yyparse): Push parser context, save globals, parse the source
	file, restore globals and pop the parser context when processing a
	source file.
	* jcf.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG define.
	* lex.c (java_parse_doc_section): New function.
	(java_lex): Call java_parse_doc_section when appropriate. Build an
	operator around INSTANCEOF_TK.
	* lex.h (java_lineterminator, java_sprint_unicode,
	java_unicode_2_utf8, java_lex_error, java_store_unicode):
	Prototypes rewritten.
	(java_parse_escape_sequence, java_letter_or_digit_p,
	java_parse_doc_section, java_parse_end_comment, java_get_unicode,
	java_read_unicode, java_store_unicode, java_read_char,
	java_allocate_new_line, java_unget_unicode, java_sneak_unicode):
	Added function prototypes.
	* parse.h (VERBOSE_SKELETON): Replaces SOURCE_FRONTEND_DEBUG
	define.
	(JNULLP_TYPE_P, CHECK_METHODS, CHECK_DEPRECATED, REGISTER_IMPORT):
	New macros
	(struct parser_ctxt): New fields: deprecated,
	current_parsed_class_un, gclass_list.
	(fix_method_argument_names, issue_warning_error_from_context,
	resolve_package, lookup_package_type): New function prototypes.
	(resolve_expression_name): Fixed function prototype.
	(find_applicable_accessible_methods_list): Fixed indentation, added
	extra argument in prototype.
	(check_final_assignment, build_null_of_type, check_deprecation,
	check_method_redefinition, reset_method_name,
	java_check_regular_methods, java_check_abstract_methods,
	maybe_build_primttype_type_ref): New function prototype.
	* parse.y (conver.h): Include.
	(INSTANCEOF_TK): Tagged <operator>.
	(single_type_import_declaration): Use REGISTER_IMPORT macro.
	(relational_expression:): Build binop for instanceof.
	(java_push_parser_context): Remember ctxp->gclass_list across
	contexts.
	(java_pop_parser_context): Simply return if no context
	exists. Remember gclass_list across contexts.
	(issue_warning_error_from_context): New function.
	(parse_error_context): Don't setup ctxp->elc here. Call
	issue_warning_error_from_context instead.
	(parse_warning_context): Likewise.
	(maybe_create_class_interface_decl): Removed DECL_ARTIFICIAL
	setup. Link new class/interface to ctxp->gclass_list.
	(add_superinterfaces): Register interface as incomplete if not
	loaded.
	(create_class): Remember class unqualified name in
	ctxp->current_parsed_class_un. Check class deprecation.
	(register_fields): Check field deprecation. Remember static final
	field value in DECL_LOCAL_STATIC_VALUE. Changed comment in part
	processing INIT.
	(method_header): New local variable ORIG_ARG. Use unqualified
	current class name for check on constructor errors. Promote return
	type if of record type. Argument list fix moved in
	fix_method_argument_names, called here. Check method deprecation.
	(fix_method_argument_names): New function.
	(method_declarator): Promote record typed arguments.
	(safe_layout_class): Check class methods before layout.
	(java_complete_class): Compute field layout when patched.
	(do_resolve_class): Try to load class after having it renamed
	after the package name.
	(get_printable_method_name): Use DECL_CONTEXT.
	(reset_method_name): New function.
	(check_method_redefinition): Use reset_method_name.
	(java_check_regular_methods): New local variable
	SAVED_FOUND_WFL. Temporarily reinstall overriding/hiding method
	names for error report. Check for compile-time error when method
	found has default (package) access.
	(java_check_abstract_methods): Now takes an interface DECL node as
	an argument. Also reinstall real name on unchecked
	overriding/hiding methods for error report.
	(java_check_methods): Fixed leading comment. Get classes to verify
	from ctxp->gclass_list. Use CHECK_METHODS macro and set
	CLASS_METHOD_CHECKED_P on class verification.
	(lookup_java_method2): Get real method name if necessary.
	(find_in_imports): Don't check package class access here.
	(resolve_package, lookup_package_type): New functions.
	(java_layout_classes): Fixed leading comment. Take classes to be
	laid out from ctxp->gclass_list.
	(java_complete_expand_methods): Don't expand native and abstract
	methods.
	(java_expand_classes): New function.
	(resolve_expression_name): Use additional argument ORIG.  Retrieve
	values of static final field of primitive types.
	(resolve_field_access): Handles static final field of promotive
	type.
	(resolve_qualified_expression_name): Handle STRING_CST as
	primaries and package name resolution. Check deprecation on found
	decls. Set where_found and type_found on non static field resolved
	during qualification. Layout non primitive field decl types.
	(check_deprecation): New function.
	(maybe_access_field): Simplified.
	(patch_method_invocation_stmt): Local variable CLASS_TYPE
	removed. Reverse method's argument when primary is a type. Don't
	use CLASS_TYPE to report problems, use IDENTIFIER_WFL
	instead. Include abstract class in the list of class searchable
	for constructors. Use DECL_CONTEXT of found method for access
	checks. Check method deprecation.
	(patch_invoke): Pay extra care to NEW_CLASS_EXPR type call when
	converting arguments. Handle INVOKE_INTERFACE.
	(lookup_method_invoke): Search constructor using existing
	infrastructure (don't rely on lookup_java_constructor anymore).
	(find_applicable_accessible_methods_list): Extra argument flag
	LC. Now include constructor in the search.
	(qualify_ambiguous_name): Conditional expression are primaries.
	(not_initialized_as_it_should_p): static final are always
	initialized.
	(java_complete_tree): Pass extra NULL argument to
	resolve_expression_name. Stricter test to carry on patching
	assignments. New case for INSTANCEOF_EXPR.
	(complete_function_arguments): Inline PRIMTYPE.TYPE read access.
	(check_final_assignment, maybe_build_primttype_type_ref): New
	functions.
	(patch_assignment): Detect resolved static finals and carry normal
	assignment error check on them. Inline PRIMTYPE.TYPE read access.
	(try_builtin_assignconv): Access constant 0 on all primitive
	types.
	(valid_builtin_assignconv_identity_widening_p): Accept identical
	types. Accept all promoted type on int type.
	(valid_ref_assignconv_cast_p): Accept a null pointer to be
	assigned to a reference.
	(valid_method_invocation_conversion_p): Accept to check null
	pointers.
	(build_binop): Merge declaration and initialization of local
	variable BINOP.
	(patch_binop): New case for INSTANCEOF_EXPR. NE_EXPR to accept all
	numeric types. Improved validity test for qualify operators on
	references.
	(patch_unaryop): Broadened rejection test for PREDECREMENT_EXPR
	and PREINCREMENT_EXPR. Also detect resolved static finals of a
	primitive type and issue the appropriate error message.
	(resolve_type_during_patch): Mark class loaded when resolved.
	(patch_cast): Allow null to be cased to reference types.
	(build_null_of_type): New function.
	(patch_array_ref): Handle array on references correctly.
	(patch_return): Removed unused local variable MODIFY. Force
	boolean to be returned as integers. Allows null to be returned by
	a function returning a reference.
	* typeck.c (convert_to_integer, convert_to_real,
	convert_to_pointer): Prototypes moved to convert.h
	(lookup_argument_method): Use method real name, if necessary.

1998-10-30  Tom Tromey  <tromey@cygnus.com>

	* class.c (build_class_ref): Changed name of primitive classes to
	start with `_Jv_'.

	* class.c (make_class_data): Renamed fields: nmethods to
	method_count, method_count to dtable_method_count.  Always set
	`state' field to 0.
	* decl.c (init_decl_processing): Likewise.

1998-10-28  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class): Don't mangle <finit>, produce
	__finit<class> instead. Don't verify artificial methods.
	* decl.c (finit_identifier_node): New declared global.
	(init_decl_processing): finit_identifier_node initialized.
	* java-tree.def (CONDITIONAL_EXPR): New Java tree code.
	* java-tree.h (finit_identifier_node): Declared as extern.
	(struct lang_decl): New field called_constructor.
	(DECL_CONSTRUCTOR_CALLS): Access macro to called_constructor.
	(CLASS_HAS_FINIT_P): New macro.
	(CALL_CONSTRUCTOR_P): Leading comment changed. Macro now checks
	explicit constructor invocation.
	(CALL_EXPLICIT_CONSTRUCTOR_P, CALL_THIS_CONSTRUCTOR_P,
	CALL_SUPER_CONSTRUCTOR_P): New macros.
	(write_classfile): Added prototype.
	* jcf-parse.c (jcf_parse_source): Parse and remember for
	generation if the file was seen on the command line.
	(parse_source_file): Don't write the class file here.
	(yyparse): Loop on files rewritten. Set current_jcf.
	(parse_zip_file_entries): Parse class file only if it was found.
	* lang.c (init_parse): Don't open command line provided filename
	here.
	(lang_parse): Don't set main_jcf anymore.
	* parse.h (ABSTRAC_CHECK): Capitalized arguments.
	(JCONSTRUCTOR_CHECK): New macro.
	(JBSC_TYPE_P): New macro.
	(IN_TRY_BLOCK_P, EXCEPTIONS_P): Fixed leading comment.
	(COMPLETE_CHECK_OP_2): New macro.
	(struct parse_ctxt): New field explicit_constructor_p.
	(check_class_interface_creation): Fixed prototype indentation.
	(patch_method_invocation_stmt): Prototype reflects added argument.
	(patch_invoke): Likewise.
	(complete_method_declaration, build_super_invocation,
	verify_constructor_circularity,
	build_this_super_qualified_invocation, get_printable_method_name,
	patch_conditional_expr, maybe_generate_finit, fix_constructors,
	verify_constructor_super, create_artificial_method,
	start_artificial_method_body, end_artificial_method_body,
	generate_field_initialization_code): New function prototypes.
	* parse.y: Fixed leading comment
	(constructor_header:, constructor_body:, block_end:): Rules tagged
	<node>.
	(type_declaration:): Call maybe_generate_finit.
	(method_declaration:): Action for method_body: placed in new
	function complete_method_declaration, called here.
	(constructor_declaration:): Defined actions. Removed leading
	FIXME.
	(constructor_header:): New rule with action.
	(constructor_body:): Rule rewritten using block_begin: and
	block_end:. Defined actions.
	(constructor_declarator:, explicit_constructor_invocation:):
	Defined actions.
	(block:): Use new rules block_begin: block_end:.
	(block_begin:, block_end:): New rules and actions.
	(block_statements:): Fixed error message for explicit
	constructors.
	(method_invocation:): Call build_this_super_qualified_invocation
	if primary is `this' or `super' was seen.
	(conditional_expression:): Action defined.
	(extra_ctxp_pushed_p): New static global flag.
	(java_parser_context_save_global): Create parser context if
	necessary. Use extra_ctxp_pushed_p to remember it.
	(java_parser_context_restore_global): Pop extra parser context if
	one exists.
	(build_array_from_name): Array on primitive types are marked
	loaded.
	(register_fields): Restore new name in field initializer
	expression if type was altered. Non static fields initialized upon
	declaration marked initialized.
	(maybe_generate_finit): New function.
	(maybe_generate_clinit): Use create_artificial_method,
	start_artificial_method_body, end_artificial_method_body. Generate
	debug info for enclosed initialization statements.
	(method_header): Fixed leading comment. Check constructor
	flags. Detect constructor declarations and set DECL_CONSTRUCTOR_P
	accordingly.
	(complete_method_declaration, constructor_circularity_msg,
	verify_constructor_circularity): New functions.
	(get_printable_method_name): New function.
	(check_method_redefinition): Don't rename <finit> methods. Fix
	declared constructor names. Error message for
	constructors modified.
	(java_check_regular_methods): Local variable seen_constructor
	renamed saw_constructor. Skip verification on constructors. Create
	default constructor with create_artificial_method.
	(java_check_methods): Removed unnecessary empty line.
	(create_artificial_method, start_artificial_method_body,
	end_artificial_method_body): New functions.
	(java_layout_classes): Changed leading comment. Reverse fields
	list if necessary. Always layout java.lang.Object if being
	defined.
	(java_complete_expand_methods): Verify constructor circularity.
	(java_complete_expand_method): Call fix_constructor on
	constructors.  Local variable no_ac_found removed. Restore
	bindings if method body expansion failed.
	(fix_constructors, verify_constructor_super,
	generate_field_initialization_code): New function.
	(java_expand_classes): Fixed leading comment. Write class file
	here.
	(resolve_expression_name): Check for illegal instance variable
	usage within the argument scope of an explicit constructor
	invocation.
	(resolve_qualified_expression_name): Pass extra from_super flag
	when invoking patch_method_invocation_stmt. New case for
	conditional expression when used as a primary. Check for error
	when acquiring super.
	(patch_method_invocation_stmt): Added extra argument super. New
	local variable is_static_flag. Set class_to_search according to
	the nature of the constructor invocation. Don't add `this'
	argument when expanding NEW_CLASS_EXPR. Check for illegal method
	invocation within the argument scope of explicit constructor
	invocation. Set is_static according to is_static_flag. Provide
	extra `super' argument to patch_invoke invocation.
	(patch_invoke): New argument from_super. Loop on arguments
	indentation fixed. Pass from_super to invocation_mode. New switch
	case INVOKE_SUPER. Fixed error message in switch default case.
	Don't use CALL_CONSTRUCTOR_P but rather a test on the tree node
	value.
	(invocation_mode): Return INVOKE_SUPER mode when appropriate.
	(lookup_method_invoke): Fixed prototypes in candidates list. Error
	message takes constructors into account.
	(find_applicable_accessible_methods_list): Fixed indentation.
	(qualify_ambiguous_name): Take explicit constructor invocation
	into account. Deal with a conditional expression as a primary to
	a method call.
	(java_complete_tree): Added local wfl_op3. New CONDITIONAL_EXPR
	case. Added extra argument to patch_method_invocation_stmt.
	Register calls made to explicit constructor `this'. Don't call
	save_expr in ARRAY_REF case when emitting class files. Check for
	illegal use of this when expanding explicit constructor invocation
	arguments.
	(complete_function_arguments): Set and reset parser context
	explicit_constructor_p field value when appropriate.
	(build_super_invocation, build_this_super_qualified_invocation):
	New functions.
	(patch_assignment): Fixed typo.
	(patch_unaryop): Check on final fields occurs only when a decl
	exits.
	(patch_return): Take constructors into account.
	(patch_conditional_expr): New function.
	* typeck.c (build_java_signature): Removed unnecessary empty line.

1998-10-28  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (jcf-dump, gcjh): Link in $(LIBS) too.

1998-10-28  Tom Tromey  <tromey@cygnus.com>

	* decl.c (init_decl_processing): Renamed fields.
	* class.c (make_class_data): Renamed bfsize, nfields, nsfields,
	interface_len, msize fields.

	* class.c (make_class_data): Removed subclass_head and
	subclass_next fields.
	* decl.c (init_decl_processing): Removed subclass_head and
	subclass_next fields.

1998-10-28  Jeffrey A Law  (law@cygnus.com)

	* jcf-write.c (emit_load_or_store): Avoid implicit int arguments.
	* mangle.c (emit_unicode_mangled_name): Similarly.

1998-10-26  Nick Clifton  <nickc@cygnus.com>

	* jcf-parse.c (get_constant): Place braces around code to compute
	'd' when REAL_ARITHMETIC is not defined.

1998-10-25  H.J. Lu  (hjl@gnu.org)

	* Make-lang.in (jv-scan$(exeext)): Add stamp-objlist to
	dependency.

1998-10-23  Tom Tromey  <tromey@cygnus.com>

	* lang-specs.h: `.zip' files are input to jc1.

1998-10-22  Per Bothner  <bothner@cygnus.com>

	* jvspecs.c:  Add (but don't enable) support for combining multiple
	.class and .java input filenames to a single jc1 invocation.
	Add support for -C flag (copile to .class files).
	Translate -classpath and -CLASSPATH arguments.
	* lang-specs.h:  Don't set %2 spec.

1998-10-22  Tom Tromey  <tromey@cygnus.com>

	* jcf-path.c (add_entry): Don't add trailing separator if entry is
	a .zip file.
	(add_path): Don't add trailing separator to non-empty path
	elements.

	* lang.c (lang_decode_option): Check for -fclasspath and
	-fCLASSPATH before examining other `-f' options.

	* java-tree.h (finalize_identifier_node): Don't declare.
	* class.c (make_class_data): Don't push "final" field.
	* decl.c (init_decl_processing): Don't push "final" field.
	(finalize_identifier_node): Removed.
	(init_decl_processing): Don't set finalize_identifier_node.

	* config-lang.in (stagestuff): Added jcf-dump and jv-scan.

1998-10-11  Anthony Green  <green@cygnus.com>

	* Make-lang.in (java): Depend on jcf-dump and jv-scan.
	(JV_SCAN_SOURCES): New macro.
	(JCF_DUMP_SOURCES): Likewise.
	(jcf-dump$(exeext)): New target.
	(jv-scan$(exeext)): New target.

1998-10-22  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (LEX): Removed.
	(LEXFLAGS): Likewise.
	(SET_BISON): New macro.
	(BISON): Removed.
	($(PARSE_C)): Use SET_BISON.  Run bison from srcdir to avoid
	spurious diffs in parse.c.
	($(PARSE_SCAN_C)): Likewise.
	(PARSE_DIR): New macro.
	(PARSE_C): Use it.
	(PARSE_SCAN_C): Likewise.
	(PARSE_RELDIR): New macro.

	* jcf-io.c (saw_java_source): Define here, not in jcf-parse.c.

	* jcf-io.c (find_class): Use saw_java_source to determine when to
	look for `.java' file.
	* jcf-parse.c (saw_java_source): New global.
	(yyparse): Set it if `.java' file seen.

	* Make-lang.in (JAVA_SRCS): Added jcf-path.c.
	(GCJH_SOURCES): Likewise.
	* Makefile.in (datadir): New macro.
	(libjava_zip): Likewise.
	(JAVA_OBJS): Added jcf-path.o.
	(../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
	(../gcjh$(exeext)): Likewise.
	(jcf-path.o): New target.
	* java-tree.h (fix_classpath): Removed decl.
	* jcf-parse.c (fix_classpath): Removed.
	(load_class): Don't call fix_classpath.
	* parse.y (read_import_dir): Don't call fix_classpath.
	* lex.h: Don't mention classpath.
	* lex.c (java_init_lex): Don't initialize classpath.
	* jcf-io.c (classpath): Removed global.
	(find_class): Use jcf_path iteration functions.  Correctly search
	class path for .java file.
	(open_in_zip): New argument `is_system'.
	* jcf-dump.c (main): Call jcf_path_init.  Recognize all new
	classpath-related options.
	* lang.c (lang_decode_option): Handle -fclasspath, -fCLASSPATH,
	and -I.
	(lang_init): Call jcf_path_init.
	* lang-options.h: Mention -I, -fclasspath, and -fCLASSPATH.
	* lang-specs.h: Handle -I.  Minor cleanup to -M options.
	Correctly put braces around second string in each entry.
	* gjavah.c (main): Call jcf_path_init.  Recognize all the new
	classpath-related options.
	(help): Updated for new options.
	* jcf.h: Declare functions from jcf-path.c.  Don't mention
	`classpath' global.
	* jcf-path.c: New file.

	* jcf-depend.c: Include jcf.h.

	* jcf-write.c (localvar_alloc): Returns `void'.
	(localvar_free): Removed unused variable.

	* lang.c (OBJECT_SUFFIX): Define if not already defined.
	(init_parse): Use OBJECT_SUFFIX, not ".o".

1998-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (emit_register_classes): Renamed from
	emit_register_class.
	* java-tree.h (emit_register_classes): Prototype renamed from
	emit_register_class.
	* jcf-parse.c (yyparse): Call emit_register_classes once before
	returning.
	* parse.y (java_expand_classes): No longer register classes.

1998-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (is_compiled_class): New local variable
	seen_in_zip. Identify classes found in currently compiled source
	file(s).
	* decl.c (complete_start_java_method): Fixed typo.
	* java-tree.h (CLASS_FROM_CURRENTLY_COMPILED_SOURCE_P,
	HAS_BEEN_ALREADY_PARSED_P, IS_A_COMMAND_LINE_FILENAME_P): New macros.
	(CLASS_P): Moved around.
	(java_parse_abort_on_error): Macro moved from jcf-parse.c
	* jcf-parse.c (java_parse_abort_on_error): Macro moved to
	java-tree.h
	(jcf_parse_source): Changed leading comment. Removed unnecessary
	fclose and CLASS_FROM_SOURCE_P marking.
	(parse_source_file): New local variables remember_for_generation
	and filename. Mark parsed file name identifier node. Removed block
	executed when parse_only was null. Set remember_for_generation.
	Use it as an argument to java_pop_parser_context.
	(yyparse): New local variables several_files, list, next node and
	current_file_list. Split ampersand separated file names into
	current_file_list. Iterate through the list and parse accordingly.
	* parse.h (java_pop_parser_context): New function prototype.
	* parse.y (ctxp_for_generation): New static global variable.
	(java_pop_parser_context): New argument generate. Link popped ctxp
	to ctxp_for_generation list accordingly.
	(java_complete_expand_methods): Fixed indentation.
	(java_expand_classes): New function.

1998-10-17  Per Bothner  <bothner@cygnus.com>

	* Makefile.in:  Link with libiberty.a instead of memmove.o.

1998-10-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (setjmp.h): No longer included.
	* lex.h (setjmp.h): Included.
	* parse.h (SET_TYPE_FOR_RESOLUTION): New macro.
	(duplicate_declaration_error_p): Renamed from
	duplicate_declaration_error.
	(build_array_from_name): New function prototype.
	* parse.y (setjmp.h): No longer included.
	(variable_declarator_id): Define action.
	(build_array_from_name): New function.
	(duplicate_declaration_error_p): Renamed from
	duplicate_declaration_error.  Fixed leading comment.
	(register_fields): Main `for' loop reorganized. Uses
	SET_TYPE_FOR_RESOLUTION and build_array_from_name.
	(method_declarator): Uses SET_TYPE_FOR_RESOLUTION and call
	build_array_from_name.
	(resolve_class): Set CLASS_LOADED_P on newly build array dimension
	types.
	(read_import_dir): Don't try to skip `.' and `..'.
	(declare_local_variables): Uses SET_TYPE_FOR_RESOLUTION and
	build_array_from_name. Main `for' loop reorganized.
	(resolve_qualified_expression_name): When building access to a
	field, use the type where the field was found, not its own type.
	(maybe_access_field): Use field DECL_CONTEXT if the type where the
	field was found is null.
	(qualify_ambiguous_name): Sweep through all successive array
	dimensions.

1998-10-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (pop_labeled_block, lang_printable_name,
	maybe_add_interface, set_super_info, get_access_flags_from_decl,
	interface_of_p, inherits_from_p, fix_classpath,
	complete_start_java_method, emit_handlers, init_outgoing_cpool,
	make_class_data, register_class, alloc_name_constant): New
	function prototypes.
	* lang.c (lang_decode_option): Set argc argument unused. Fixed
	indentation. Added cast to remove warning.
	(lang_printable_name): Set v argument unused.
	(lang_print_error): Added argument to lang_printable_name call.
	(java_dummy_print, print_lang_decl, print_lang_type,
	print_lang_identifier, lang_print_xnode): All argument marked
	unused.
	* lex.c (java_unget_unicode): Removed unnecessary argument.
	(java_allocate_new_line): Unused local variable is gone.
	(java_read_char): Added parenthesis in expressions to remove
	warnings.  Added final return statement.
	(java_read_unicode): Added parenthesis in expression to remove
	warning.
	(java_parse_end_comment): Fixed java_unget_unicode invocation.
	(java_parse_escape_sequence): Likewise.
	(java_lex): Unused local variables are gone. Fixed
	java_unget_unicode invocation.
	* lex.h (set_float_handler): Prototype added when JC1_LITE not
	defined.
	* parse.h (ERROR_CANT_CONVERT_TO_BOOLEAN): Fixed
	lang_printable_name invocation in macro.
	(ERROR_CANT_CONVERT_TO_NUMERIC, ERROR_CAST_NEEDED_TO_INTEGRAL):
	Likewise.
	(duplicate_declaration_error): Suppressed unused argument in
	prototype.
	(identical_subpath_p): Function declaration is gone.
	(patch_invoke): Suppressed unused argument in prototype.
	(patch_cast, build_labeled_block, check_thrown_exceptions):
	Likewise.
	* parse.y (setjmp.h): Included
	(toplev.h): Likewise.
	(field_declaration:): Suppressed unused local
	(label_decl:): Fixed build_labeled_block invocation.
	(java_pop_parser_context): Put extra parenthesis around assignment
	in if.
	(yyerror): Suppressed unused local variables.
	(variable_redefinition_error): Fixed lang_printable_name
	invocation.
	(create_interface): Suppressed unused local variables.
	(create_class): Likewise.
	(duplicate_declaration_error): Suppressed unused argument. Fixed
	lang_printable_name invocation.
	(register_fields): Suppressed unused local variable. Fixed
	duplicate_declaration_error invocation.
	(method_header): Suppressed unused local variable.
	(method_declarator, parser_check_super): Likewise.
	(java_complete_class): Suppressed unused local variable. Fixed
	fatal error message.
	(complete_class_report_errors): Added default: in switch.
	(java_check_regular_methods): Fixed lang_printable_name
	invocations.
	(check_throws_clauses): Likewise.
	(java_check_abstract_methods): Suppressed unused local
	variable. Fixed lang_printable_name invocation.
	(read_import_entry): Added supplemental return statement.
	(read_import_dir): Suppressed unused local variables.
	(check_pkg_class_access, declare_local_variables): Likewise.
	(source_start_java_method): Suppressed unused extern variable
	declarations
	(expand_start_java_method): Suppressed unused extern and local
	variable declarations.
	(java_complete_expand_methods): Likewise.
	(java_complete_expand_method): Suppressed unused local variables.
	(make_qualified_name): Likewise.
	(resolve_qualified_expression_name): Added default: in
	switch. Fixed lang_printable_name invocation.
	(class_instance_creation_expression): Added parenthesis around
	expressions.
	(patch_method_invocation_stmt): Fixed lang_printable_name and
	patch_invoke invocations.
	(check_for_static_method_reference): Fixed lang_printable_name
	invocation.
	(patch_invoke): Suppressed unused arguments and local variables.
	(lookup_method_invoke): Suppressed unused local variables.
	(qualify_ambiguous_name): Added default: in switch.
	(identical_subpath_p): Function removed.
	(patch_assignment): Suppressed unused local variables. Suppressed
	unnecessary if statement. Fixed lang_printable_name invocations.
	(try_builtin_assignconv): Fixed lang_printable_name invocations.
	(valid_ref_assignconv_cast_p): Parenthesis around
	expression. Suppressed unused local variables.
	(build_binop): Suppressed unused local variables. fixed
	lang_printable_name invocations.
	(string_constant_concatenation): Suppressed unused local
	variables.
	(patch_unaryop): Fixed lang_printable_name invocation.
	(patch_cast): Suppressed unnecessary argument. Fixed
	lang_printable_name invocation.
	(patch_array_ref): Fixed lang_printable_name invocation.
	(patch_newarray, patch_return, patch_if_else_statement): Likewise.
	(build_labeled_block): Suppressed unused argument.
	(generate_labeled_block): Fixed build_labeled_block invocation.
	(build_loop_body): Suppressed unused local variables.
	(patch_loop_statement): Likewise.
	(patch_exit): Fixed lang_printable_name invocation.
	(patch_switch_statement): Likewise.
	(case_identity): First argument marked unused.
	(patch_try_statement): Fixed lang_printable_name invocations.
	(patch_synchronized_statement, patch_throw_statement): Likewise.
	(check_thrown_exceptions): Fixed check_thrown_exceptions and
	lang_printable_name invocations.
	(check_thrown_exceptions_do): Suppressed unused argument.

1998-10-14  Tom Tromey  <tromey@cygnus.com>

	* jcf-write.c (write_classfile): Add output class file as target.
	* lang-options.h: Added -MD, -MMD, -M, and -MM.
	* jcf.h: Added declarations for dependency-tracking functions.
	* lang-specs.h: Handle -M, -MM, MD, and -MMD.
	* lang.c (lang_decode_option): Recognize -MD and -MMD.
	(finish_parse): Call jcf_dependency_write.
	(dependency_tracking): New global.
	(DEPEND_SET_FILE): New define.
	(DEPEND_ENABLE): New define.
	(init_parse): Enable dependency tracking if required.
	Include "flags.h".
	* Makefile.in (JAVA_OBJS): Added jcf-depend.o.
	(../jcf-dump$(exeext)): Depend on and link with jcf-depend.o.
	(../gcjh$(exeext)): Likewise.
	(jcf-depend.o): New target.
	* Make-lang.in (JAVA_SRCS): Added jcf-depend.c.
	(GCJH_SOURCES): Likewise.
	* jcf-io.c (open_class): Call jcf_dependency_add_file.  Added
	dep_name argument.
	(find_classfile): Added dep_name argument.
	(find_class): Compute name of dependency.
	(open_in_zip): Call jcf_dependency_add_file.
	* gjavah.c (output_file): No longer global.
	(usage): Don't mention "gjavah".
	(help): Likewise.
	(java_no_argument): Likewise.
	(version): Likewise.
	(main): Recognize and handle -M family of options.
	(print_mangled_classname): Return is void.
	(process_file): Handle case where output is suppressed.
	(HANDLE_END_FIELD): Likewise.
	(HANDLE_METHOD): Likewise.
	* jcf-depend.c: New file.

1998-10-13  Jeffrey A Law  (law@cygnus.com)

	* java-tree.def: Add missing newline at EOF.

1998-10-13  Tom Tromey  <tromey@cygnus.com>

	* jcf-dump.c (process_class): Use FATAL_EXIT_CODE, not -1.
	(main): Likewise.  Exit with SUCCESS_EXIT_CODE at end of
	function.
	Include <config.h> and "system.h".
	(disassemble_method): Undefine RET to avoid clash with
	config/i386/i386.h.

1998-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (runtime_exception_type_node, error_exception_type_node):
	New global variables.
	(init_decl_processing): Initialized.
	* expr.c (java_lang_expand_expr): Set caught exception type to
	null if catch handler argument doesn't exit.
	* java-tree.def (SYNCHRONIZED_EXPR, THROW_EXPR): New Java specific
	tree codes.
	* java-tree.h (runtime_exception_type_node,
	error_exception_type_node): Global variables declared.
	(DECL_FUNCTION_THROWS): New macro.
	(DECL_FUNCTION_BODY): Modified comment.
	(DECL_SPECIFIC_COUNT): Likewise.
	(struct lang_decl): New field throws_list.
	(IS_UNCHECKED_EXPRESSION_P): New macro.
	* lex.c (java_lex): Generate location information for THROW_TK.
	* parse.h (PUSH_EXCEPTIONS, POP_EXCEPTIONS, IN_TRY_BLOCK_P,
	EXCEPTIONS_P): New macros.
	(enum jdep_code): New value JDEP_EXCEPTION.
	(BUILD_MONITOR_ENTER, BUILD_MONITOR_EXIT,
	BUILD_ASSIGN_EXCEPTION_INFO, BUILD_THROW, SET_WFL_OPERATOR,
	PATCH_METHOD_RETURN_ERROR): New macros.
	(patch_method_invocation_stmt): Added new argument to prototype.
	(patch_synchronized_statement, patch_throw_statement,
	check_thrown_exceptions, check_thrown_exceptions_do,
	purge_unchecked_exceptions, check_throws_clauses): New function
	prototypes.
	* parse.y Fixed typo in keyword section.
	(throw:): Rule tagged <node>.
	(THROW_TK): Keyword tagged <operator>.
	(method_header:): Last argument to call to method_header passed
	from throws: rule.
	(throws:, class_type_list:, throw_statement:,
	synchronized_statement:, synchronized:): Defined actions.
	(method_header): New local variable current. Register exceptions
	from throws clause.
	(java_complete_tree): Complete and verify exceptions from throws
	clause.
	(complete_class_report_errors): Error message on exceptions not
	found
	(java_check_regular_methods): Fixed typo. Shortcut on private
	overriding methods. Changed error message on method
	redefinition. Check for throws clause compatibility.
	(check_throws_clauses): New function.
	(java_check_abstract_methods): Use DECL_NAME for wfl or current
	method. Changed error message on method redefinition.
	(currently_caught_type_list): New static variable.
	(java_complete_expand_methods): Purge unchecked exceptions from
	throws clause list. Call PUSH_EXCEPTIONS before walk and
	POP_EXCEPTIONS after.
	(resolve_qualified_expression_name): Pass new argument as NULL to
	patch_method_invocation_stmt.
	(patch_method_invocation_stmt): New argument ref_decl. Invoke
	PATCH_METHOD_RETURN_ERROR when returning with error. Reverse
	argument list when appropriate. Use new argument if non null to
	store selected method decl.
	(patch_invoke): Convert if necessary args of builtin types before
	forming CALL_EXPR. Argument list no longer reversed here.
	(invocation_mode): Treat final methods as static methods.
	(java_complete_tree): New cases for THROW_EXPR: and
	SYNCHRONIZED_EXPR:. Check thrown exceptions when completing
	function call.
	(complete_function_arguments): No more RECORD_TYPE
	conversion. Function parameter nodes no longer saved.
	(valid_ref_assignconv_cast_p): Avoid handling null type.
	(patch_binop): Fixed null constant reference handling.
	(build_try_statement): Use BUILD_ASSIGN_EXCEPTION_INFO and
	BUILD_THROW macros.
	(patch_try_statement): Fixed comments. Record caught types in
	list, push the list, expand try block and pop the list.
	(patch_synchronized_statement, patch_throw_statement,
	check_thrown_exceptions, check_thrown_exceptions_do,
	purge_unchecked_exceptions): New functions.
	* typeck.c (lookup_argument_method): Allow WFL in place of method
	DECL_NAME during method definition check

1998-10-09  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (decode_signature_piece): New function.
	(print_c_decl): Use it.  Added `name_override' argument.
	(print_method_info): Use name_override argument to print_c_decl.
	(seen_fields): Removed.
	(print_field_info): Don't update seen_fields.
	(struct method_name): New structure.
	(method_name_list): New global.
	(print_method_info): Add new method to list of methods.
	(name_is_method_p): New function.
	(print_field_info): If field name has same name as method, then
	change field name.
	(process_file): Parse methods before fields.
	(field_pass): New global.
	(HANDLE_END_FIELD): Take field_pass into account.

1998-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (keyword.h): Add -L KR-C -F ', 0' flags to gperf.
	(keyword.h): Regenerate using gperf 2.7.1 (19981006 egcs).

1998-10-03  Anthony Green  <green@cygnus.com>

	* jvspec.c: Fix bug in jvgenmain_spec patch.

1998-10-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in (lang.o:): Install dependency on java-tree.def.
	* decl.c (soft_exceptioninfo_call_node): New global variable.
	(init_decl_processing): Fixed indentation. soft_badarrayindex_node
	takes extra integer argument. soft_exceptioninfo_call_node
	initialized.
	* except.c (java_set_exception_lang_code): New function
	(method_init_exceptions): Called here.
	(prepare_eh_table_type): New function.
	(expand_end_java_handler): Called here.
	* expr.c (build_java_throw_out_of_bounds_exception): Now features
	one argument. Modified generation of call to
	soft_badarrayindex_node to use new argument.
	(build_java_arrayaccess): Pass faulty index value to
	build_java_throw_out_of_bounds_exception.
	(generate_name): New function.
	(java_lang_expand_expr): New local variables node, current,
	has_finally_p. Expand TRY_EXPR node.
	(process_jvm_instruction): Replace top of the stack with thrown
	object reference when entering exception handler.
	* java-tree.def (TRY_EXPR, CATCH_EXPR, FINALLY_EXPR): New Java
	specific tree codes.
	* java-tree.h (soft_exceptioninfo_call_node): Declaration of new
	global.
	(DECL_SPECIFIC_COUNT): New macro.
	(prepare_eh_table_type, java_set_exception_lang_code,
	generate_name): New function declarations.
	(match_java_method): Declaration deleted.
	(FINALLY_EXPR_LABEL, FINALLY_EXPR_BLOCK, CATCH_EXPR_GET_EXPR): New
	macros.
	* lex.c (TRY_TK, CATCH_TK): Generate location information.
	* parse.h (redefinition_error, refine_accessible_methods_list,
	can_cast_to_p): Function declaration removed.
	(classitf_redefinition_error, variable_redefinition_error,
	parse_jdk1_1_error, find_applicable_accessible_methods_list,
	find_most_specific_methods_list, argument_types_convertible,
	enter_a_block, valid_builtin_assignconv_identity_widening_p,
	valid_cast_to_p, valid_method_invocation_conversion_p,
	try_reference_assignconv, add_stmt_to_compound,
	build_jump_to_finally, build_tree_list, patch_try_statement,
	java_get_catch_block): New function declarations.
	* parse.y (string_buffer_type): Global variable deleted.
	(group_of_labels, catches, catch_clause, catch_clause_parameter,
	finally): Rules tagged <node>.
	(TRY_TK, CATCH_TK): Token tagged <operator>.
	(class_body_declaration:, class_member_declaration:,
	formal_parameter:, explicit_constructor_invocation:,
	interface_member_declaration:, constant_declaration:,
	primary_no_new_array:, class_instance_creation_expression:,
	array_creation_expression:): Issue error on unsuported JDK1.1
	features.
	(try_statement:, catches:, finally:): Define actions.
	(catch_clause_parameter): New rule.
	(catch_clause:): Use new rule catch_clause_parameter.
	(parse_jdk1_1_error): New function.
	(redefinition_error): Renamed classitf_redefinition_error.
	(variable_redefinition_error): New function.
	(check_class_interface_creation): Call
	classitf_redefinition_error.
	(java_complete_tree): Added error message on JDEP_TYPE: case.
	(complete_class_report_errors): Fixed indentation.
	(declare_local_variables): Call variable_redefinition_error.
	(source_end_java_method): Call java_set_exception_lang_code and
	emit_handlers where appropriate.
	(java_method_add_stmt): Call add_stmt_to_block.
	(add_stmt_to_block): New function.
	(lookup_method_invoke): Fixed outside comment. new local variable
	candicates.  Call find_applicable_accessible_methods_list and
	find_most_specific_methods_list when searching for a
	method. Modified error report to list possible candidates when
	applicable.
	(find_applicable_accessible_methods_list,
	find_most_specific_methods_list, argument_types_convertible): New
	function.
	(refine_accessible_methods_list): Function deleted.
	(java_complete_tree): Handle TRY_EXPR. ARRAY_REF handling: save
	expr (if applicable) before calling patch_array_ref.
	(build_expr_block): Fixed BLOCK_EXPR_BODY assignment.
	(enter_block): Fixed comment.
	(enter_a_block): New function.
	(patch_assignment): Reorganized. Call try_reference_assignconv for
	references. Call valid_cast_to_p instead of can_cast_to_p.
	(try_reference_assignconv,
	valid_builtin_assignconv_identity_widening_p): New functions.
	(valid_ref_assignconv_cast_p): Fixed inverted test on CLASS_FINAL.
	(valid_cast_to_p, valid_method_invocation_conversion_p): New
	functions.
	(build_string_concatenation): Don't resolve StringBuffer.
	(patch_cast): Fixed inverted arguments.
	(patch_array_ref): Code to save array expr deleted. Call
	valid_cast_to_p instead of can_cast_to_p.
	(generate_labeled_block): Call generate_name.
	(build_jump_to_finally, build_try_statement, java_get_catch_block,
	patch_try_statement): New functions.
	* typeck.c (match_java_method): Function deleted.

1998-10-02  Anthony Green  <green@cygnus.com>

	* jvspec.c: jvgenmain_spec uses different temporary file names.

1998-10-02  Anthony Green  <green@cygnus.com>

	* jvspec.c (lang_specific_driver): Fail if user specifies
	--main= when not linking.

1998-09-28  Tom Tromey  <tromey@cygnus.com>

	* class.c (make_class_data): Push value for `thread' field.
	* decl.c (init_decl_processing): Added `thread' field to class.

	* class.c (add_field): Always make static fields externally
	visible.

1998-09-26  Anthony Green  <green@cygnus.com>

	* expr.c (build_java_athrow,
	build_java_throw_out_of_bounds_exception, expand_invoke,
	build_newarray, expand_java_multianewarray, build_java_monitor):
	Update comments to reflect _Jv_* function names.

1998-09-25  Per Bothner  <bothner@cygnus.com>

	* decl.c (complete_start_java_method):  DECL_RESULT is always promoted.
	* decl.c (start_java_method):  Handle PROMOTE_PROTOTYPES target macro.
	* parse.y (expand_start_java_method):  Likewise.

1998-09-24  Per Bothner  <bothner@cygnus.com>

	* expr.c (pop_arguments):  Handle PROMOTE_PROTOTYPES target macro.

	* class.c (push_class):  IDENTIFIER_SIGNATURE_TYPE is now POINTER_TYPE.
	(add_field):  No longer need to convert from RECORD_TYPE to pointer,
	* expr.c:  Remove no-longer-needed calls to promote_type.
	* decl.c (give_name_to_locals):  Liekwise.
	* jcf-parse.c (get_class_constant):  Compensate for new signatures.
	* parse.y:  Add/remove promote_type calls as appropriate.
	* typeck.c (parse_signature_type):  Returns POINTER_TYPE for objects.
	(parse_signature_string):  Likewise.
	(build_java_array_type):  Fix for now signature convenions.

	* lex.c (java_lex):  Fix (from Alex) for JC1_LITE problem.

1998-09-23  Tom Tromey  <tromey@cygnus.com>

	* class.c (init_class_processing): libjava function renamed to
	_Jv_RegisterClass.

1998-09-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (java_lang_expand_expr): New case for SWITCH_EXPR.
	* java-tree.def: Fixed DEFTREECODE third argument.
	(UNARY_PLUS_EXPR, NEW_ARRAY_EXPR, NEW_CLASS_EXPR, THIS_EXPR,
	CASE_EXPR, DEFAULT_EXPR): New tree codes for Java.
	* java-tree.h: (IS_CRAFTED_STRING_BUFFER_P): New macro.
	(JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
	JAVA_THIS_EXPR): Now replaced by tree code definitions.
	(CALL_CONSTRUCTOR_P): Now uses NEW_CLASS_EXPR.
	* lang.c (java_tree_code_type, java_tree_code_length,
	java_tree_code_name): New arrays.
	(lang_init): Append Java tree node definitions to Gcc ones.
	* lex.c (expression_obstack): Declared as extern when JC1_LITE
	defined.
	(java_init_lex): Initialize wfl_append, wfl_string_buffer,
	wfl_to_string.
	(java_lex): Allow declaration of empty string constants. Retain
	location information on CASE_TK and DEFAULT_TK.
	* parse.h (JFLOAT_TYPE_P, JINTEGRAL_TYPE_P, JNUMERIC_TYPE_P,
	JPRIMITIVE_TYPE_P, JSTRING_TYPE_P, JSTRING_P, JREFERENCE_TYPE_P):
	Modified to be more robust.
	(BUILD_APPEND, BUILD_STRING_BUFFER): New macros.
	(build_new_invocation, try_builtin_assignconv,
	patch_switch_statement, string_constant_concatenation,
	build_string_concatenation, patch_string_cst, patch_string,
	java_expand_switch): New function declarations.
	* parse.y: Rules related to switch and EH tagged <node>.
	(label_id): Set to NULL_TREE
	(wfl_string_buffer, wfl_append, wfl_to_string): New static global
	tree nodes.
	(this_or_super:): Fixed indentation.
	(statement:, statement_nsi:, statement_without_trailing_substatement:,
	statement_expression:): Removed call to RULE on all sub-rules.
	(switch_expression:, switch_labels:): New rules.
	(switch_statement:, switch_block:, switch_block_statement_groups:,
	switch_block_statement_group:, switch_labels:, switch_label:):
	Defined actions.
	(throw_statement:, synchronized_statement:, try_statement:):
	Defined temporary actions.
	(class_instance_creation_expression:): Call
	build_new_invocation. Fixed indentation.
	(field_access): Fixed indentation.
	(method_invocation): Likewise.
	(make_qualified_primary): Use THIS_EXPR.
	(resolve_qualified_expression_name): Use NEW_CLASS_EXPR. When
	resolving from SUPER, set *type_found.
	(qualify_ambiguous_name): Use NEW_CLASS_EXPR.
	(java_complete_tree): Removed unused local variable `location'. Case
	for SWITCH_EXPR, sharing code with LOOP_EXPR. Use NEW_ARRAY_EXPR,
	NEW_CLASS_EXPR, UNARY_PLUS_EXPR and THIS_EXPR. New string handling
	on MODIFY_EXPR: and all binary operator tree code cases. Removed
	STRING_CST: case. default: checks for patchable strings.
	(complete_function_arguments): Transform string constant or
	crafted StringBuffer if necessary.
	(build_method_invocation): Fixed comments.
	(build_new_invocation): New function.
	(patch_assignment): Call try_builtin_assignconv to figure a valid
	assignment conversion between builtin types.
	(try_builtin_assignconv): New function.
	(build_binop): Use URSHIFT_EXPR directly to call build.
	(operator_string): Use UNARY_PLUS_EXPR.
	(patch_binop): Use UNARY_PLUS_EXPR. Handle string concatenation
	operator.
	(do_merge_string_cste, merge_string_cste,
	string_constant_concatenation, build_string_concatenation,
	patch_string, patch_string_cst): New function.
	(build_unary_op): Use UNARY_PLUS_EXPR and CONVERT_EXPR.
	(patch_unaryop): Likewise. New test of valid ++/-- operands.
	(build_newarray_node): Use NEW_ARRAY_EXPR.
	(build_this): Use THIS_EXPR.
	(build_return): Enable debug information on return statement.
	(build_if_else_statement): Likewise.
	(complete_labeled_statement): Fixed related comment.
	(build_loop_body): Fixed comment.
	(build_bc_statement): Enable debug information on break/continue
	statements.
	(patch_bc_statement): Fixed typos. Handle SWITCH statement
	context.
	(patch_switch_statement, case_identity, java_expand_switch): New
	functions.

1998-09-21  Per Bothner  <bothner@cygnus.com>

	* buffer.h (BUFFER_INIT):  New macro.
	* jcf-write.c (struct jcf_partial):  New type.  Put global stuff here.
	Pass (struct jcf_partial *state) to most functions.
	(jcf_block, jcf_relocation):  New types.
	Support labels, branches, conditionals, loops.

1998-09-21  Tom Tromey  <tromey@cygnus.com>

	* decl.c (INT_TYPE_SIZE): Define as BITS_PER_WORD if not defined.

1998-09-21  Per Bothner  <bothner@cygnus.com>

	* decl.c (integer_type_node):  Make it have INT_TYPE_SIZE.
	* verify.c (verify_jvm_instructions):  Use int_type_not (32 bits),
	not integer_type_node (INT_TYPE_SIZ bits).

	* parse.y (patch_if_else_statement):  Accept promoted_boolean_type_node.

	* jcf-reader.c (get_attribute):  New HANDLE_EXCEPTION_TABLE hook.
	* jcf-dump.c (print_exception_table):  New function.
	(disassemble_method):  Better handling of wide instructions.
	Make more robust for bad input.

1998-09-30  Jeffrey A Law  (law@cygnus.com)

	* jcf-write.c (OP2, OP4): Use "_i", not "_I" to avoid problems on
	FreeBSD.

1998-09-17  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (jcf-dump, jvgenmain): Link in memmove.o too.

1998-09-17  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in ($(PARSE_H)): Removed target.

1998-09-17  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (JAVA_OBJS): Add memmove.o
	(memmove.o): New target & rules.

1998-09-15  Tom Tromey  <tromey@cygnus.com>

	* expr.c (expand_invoke): Don't generate a call to the class init
	code.

1998-09-14  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in: Add many missing dependencies.
	* buffer.c, class.c, constants.c, decl.c: Use system.h and toplev.h
	as appropriate.
	* except.c, expr.c, jcf-io.c jcf-parse.c, jcf-write.c: Likewise.
	* jvgenmain.c lang.c mangle.c typeck.c verify.c: Likewise.

1998-09-11  Per Bothner  <bothner@cygnus.com>

	* decl.c (complete_start_java_method):  If method is static (and
	not private) call _Jv_InitClass.
	* expr.c (expand_invoke):  Don't call build_class_init.

	* jvspec.c (jvgenmain_spec):  Fix spec for generated .o file.

1998-09-10  Jeffrey A Law  (law@cygnus.com)

	* Make-lang.in (GCJ): Define before using.

1998-09-09  Jeffrey A Law  (law@cygnus.com)

	* gjavah.c (java_no_argument): Renamed from no_argument to avoid
	losing due to namespace pollution in GNU getopt.h

1998-09-09  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (java.all.build): Don't mention jvgenmain or gcjh.
	(java.all.cross): Likewise.
	(java.rest.encap): Likewise.

1998-09-08  Jeffrey A Law  (law@cygnus.com)

	* gjavah.c (print_class_decls): Fix thinko in arglist
	* jcv-io.c (find_classfile): Similarly.

1998-09-07  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INCLUDES): Update for recent toplevel gcc changes.

1998-09-05  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (java.maintainer-clean): Don't remove parse.h.
	(java.mostlyclean): Remove parse.c and parse-scan.c, not parse.h.
	* Makefile.in (PARSE_C): New macro.
	(PARSE_H): Likewise.
	(PARSE_SCAN_C): Likewise.
	($(PARSE_C)): Target renamed from parse.c.
	($(PARSE_SCAN_C)): Target renamed from parse-scan.c.
	(clean): Remove parse-scan.c as well.
	(parse.o): Depend on $(PARSE_C).

1998-09-05  Anthony Green  <green@cygnus.com>

	* README, license.terms: Removed.

	* Make-lang.in, Makefile.in, class.c, config-lang.in, constants.c,
	decl.c, except.c, expr.c, gjavah.c, java-except.h, java-tree.h,
	javaop.def, javaop.h, jcf-dump.c, jcf-io.c, jcf-parse.c,
	jcf-reader.c, jcf-write.c, jcf.h, jvgenmain.c, jvspec.c,
	keyword.gperf, keyword.h, lang-options.h, lang-specs.h, lang.c,
	lex.c, lex.h, mangle.c, parse-scan.y, parse.h, parse.y, typeck.c,
	verify.c, zextract.c, zipfile.h: Fixed copyright assignment,
	and Java trademark attribution.

1998-09-04  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in: Use gcjh, not gjavah.
	* config-lang.in (stagestuff): Use gcjh, not gjavah.
	* Make-lang.in: Changed gjavah to gcjh everywhere.

1998-09-03  Per Bothner  <bothner@cygnus.com>

	* gjavah.c:  Support new -prepend -add -append flags.
	(print_method_info):  Method is not virtual if class is final.

1998-09-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jv-scan.c: Fixed copyright assignment.
	* keyword.gperf: Likewise.
	* keyword.h: Likewise.
	* lex.c: Fixed copyright assignment.
	(java_lex): Push unicode back when parsing '<'.
	* lex.h: Fixed copyright assignment.
	* parse-scan.y: Likewise.
	* parse.h: Fixed copyright assignment.
	(build_debugable_stmt, complete_for_loop): New function prototypes.
	* parse.y: Fixed copyright assignment.
	(for_statement:): Call complete_for_loop. Set EXIT_EXPR to be
	size_zero_node when completing a loop with no exit condition.
	(for_statement_nsi:): Define action.
	(for_init:, for_update:): Return size_zero_node when empty.
	(declare_local_variables): Call build_debugable_stmt.
	(build_debugable_stmt): New function.
	(build_loop_body): Build debugable statement around loop
	condition part.
	(complete_loop_body): Take into account the debugable statement
	around the EXIT_EXPR.
	(complete_loop_body): New function.
	(patch_exit_expr): Fixed condition inversion.

1998-09-02  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (jvspec.o): Use GCC_THREAD_FILE to compute correct
	name of thread define.
	* jvspec.c (THREAD_NAME): New macro.
	(GCLIB): Likewise.
	(THREADLIB): Likewise.
	(lang_specific_driver): Recognize attempt to link with thread
	library or gc library.  Recognize -ljava on command line so it
	isn't linked against more than once.

1998-09-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse-scan.y (report_main_declaration): Name of the class
	containing `main' can be a qualified name.

1998-08-31  Tom Tromey  <tromey@cygnus.com>

	* config-lang.in: Changed gjavac to gjc everywhere.
	* Make-lang.in: Changed gjavac to gjc everywhere.

1998-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Make-lang.in (JAVA_TARGET_INDEPENDENT_BIN_TOOLS): New variable.
	(java.install-common:): Loop over JAVA_TARGET_INDEPENDENT_BIN_TOOLS
	and install the files.
	* Makefile.in (JAVA_OBJS_LITE): New variable.
	(compiler:): Now include jv-scan as a dependency.
	(../jv-scan$(exeext), parse-scan.c): New targets.
	(../jcf-dump$(exeext)): Was jcf-dump$(exeext) before.
	* config-lang.in (compilers): Removed gcj, gjavah from the list.
	* jcf-parse.c (parse_source_file): Call java_layout_classes and
	check for errors even if parse_only.
	* lex.c (java_init_lex): Reorganized and skip parts if JC1_LITE is
	defined.
	(yylex): New function. Uses java_lex body.
	(java_lex): Removed commented out statement. Remove local variable
	literal. Use SET_LVAL_NODE_TYPE and SET_LVAL_NODE where
	appropriate.  Use macros FLOAT_TYPE_NODE, DOUBLE_TYPE_NODE,
	DCONST0, SET_FLOAT_HANDLER, SET_REAL_VALUE_ATOF,
	SET_LVAL_NODE_TYPE and GET_TYPE_PRECISION. Don't create STRING_CST
	if JC1_LITE is defined. Use BUILD_ID_WFL to build identifiers. Use
	SET_MODIFIER_CTX, SET_LVAL_NODE, BUILD_ID_WFL and GET_IDENTIFIER
	where appropriate.
	(java_lex_error): Empty if JC1_LITE is defined.
	(java_get_line_col): Return 0 if JC1_LITE is defined.
	* lex.h (JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR,
	SET_MODIFIER_CTX): Moved into the section containing the macros
	conditionally defined by JC1_LITE.
	(BUILD_OPERATOR,BUILD_OPERATOR2): Just return the TOKEN
	argument if JC1_LITE is defined.
	(HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, REAL_VALUE_ATOF,
	REAL_VALUE_ISINF, REAL_VALUE_ISNAN): Preset to values if JC1_LITE
	is defined.
	(DCONST0, SET_FLOAT_HANDLER, GET_IDENTIFIER, SET_REAL_VALUE_ATOF,
	FLOAT_TYPE, DOUBLE_TYPE, SET_MODIFIER_CTX, GET_TYPE_PRECISION,
	SET_LVAL_NODE, SET_LVAL_NODE_TYPE, BUILD_ID_WFL): New macros, set
	to different values according to JC1_LITE.
	* parse.h (int_fits_type_p, stabilize_reference): Prototype not
	declared if JC1_LITE set.
	(jdep_code, typedef struct _jdep, typedef struct _jdeplist): Not
	defined if JC1_LITE not set.
	(struct parser_ctx): Reorganized and skip the jc1 front end part
	if JC1_LITE set.
	(java_layout_classes): New function definition.
	(java_push_parser_context, java_init_lex, yyparse, yylex,
	yyerror): Prototype always declared. All other static function
	prototypes declared only if JC1_LITE is not set.
	* parse.y (yyparse, yylex, yyerror): No longer declared here. Now
	declared in parse.h.
	(java_layout_classes): New function.
	(java_complete_expand_methods): No longer layout the class here.
	* parse-scan.y: New file.
	* jv-scan.c: New file.

1998-08-25  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (main): Handle -friend option.
	(friend_specs): New global.
	(generate_access): Handle friend_specs.
	(process_file): Likewise.
	(MAX_FRIENDS): New macro.
	(friend_count): New global.
	(print_cxx_classname): Added `prefix' argument.  Ignore arrays.
	Changed all callers.

1998-08-24  Per Bothner  <bothner@cygnus.com>

	* jcf-dump.c (process_class):  Move JCF_FINISH use to main,
	(main):  Handle processing all the entries of a named .zip archive.
	* jcf-io.c (jcf_trim_old_input):  New function.
	* jcf.h (GET_u2_le,GET_u4_le,JCF_readu2_le,JCF_readu4_le):  New macros.

1998-08-24  Per Bothner  <bothner@cygnus.com>

	* lang.c (flag_assume_compiled):  Make default be on.

1998-08-21  Per Bothner  <bothner@cygnus.com>

	* jcf-dump.c:  Add bunches of flags to control output more.
	(process_class):  New function;  support printing more than one class.
	(main): Support new --print-main and --javap flags.
	* jcf-reader.c (IGNORE_ATTRIBUTE):  New hook.
	* jcf.h (CPOOL_INDEX_IN_RANGE):  New macro.

1998-08-20  Per Bothner  <bothner@cygnus.com>

	Change mangling of dispatch table to match C++ vtable (w/thunks).
	* class.c (build_dtable_decl), java-tree.h:  New function.
	(make_class_data):  Call it.
	* decl.c (init_decl_processing):  Likewise.

1998-08-19  Warren Levy  <warrenl@cygnus.com>

	* decl.c (init_decl_processing): Use _Jv_NewObjectArray, not
	soft_anewarray; adjust args passed.
	* expr.c (build_anewarray): Adjust args for soft_anewarray_node to
	match _Jv_NewObjectArray.

1998-08-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (push_labeled_block, pop_labeled_block): New functions.
	* expr.c (loopup_label): Call create_label_decl.
	(create_label_decl): New function.
	(java_lang_expand_expr): Call expand_start_bindings with argument
	set to zero.
	* java-tree.h Added space after PROTO in function declarations
	when necessary.
	(IS_FOR_LOOP_P, IS_BREAK_STMT_P): New macros.
	(create_label_decl, push_labeled_block): New function
	declarations.
	* lex.c (label_id): Initialize.
	(SUPER_TK, THIS_TK, RETURN_TK): Merged common actions in final
	switch.
	* parse.h Added space after PROTO in function declarations when
	necessary.
	(LOOP_EXPR_BODY_MAIN_BLOCK, LOOP_EXPR_BODY_UPDATE_BLOCK,
	LOOP_EXPR_BODY_CONDITION_EXPR, LOOP_EXPR_BODY_LABELED_BODY,
	LOOP_EXPR_BODY_BODY_EXPR, LOOP_HAS_LABEL_P, LOOP_HAS_LABEL_SKIP_P,
	PUSH_LABELED_BLOCK, POP_LABELED_BLOCK, PUSH_LOOP, POP_LOOP): New
	macros.
	(struct parser_ctxt): New fields current_loop,
	current_labeled_block.
	(build_if_else_statement, patch_if_else_statement,
	add_stmt_to_compound, patch_exit_expr, build_labeled_block,
	generate_labeled_block, complete_labeled_statement,
	build_bc_statement, patch_bc_statement, patch_loop_statement,
	build_new_loop, build_loop_body, complete_loop_body): New function
	declarations.
	* parse.y (java_warning_count): New global variable.
	(label_id): New static variable.
	(BREAK_TK, CONTINUE_TK): Token tagged <operator>.
	(block:): Return size_zero_node when block is empty.
	(empty_statement:): Return size_zero_node.
	(statement:): Implement supplemental action when for_statement: is
	reduced.
	(label_decl:): New rule.
	(labeled_statement:): Rewritten using label_decl. Actions
	implemented.
	(labeled_statement_nsi:): Likewise.
	(if_then_statement): Actions implemented.
	(while_expression): New rule.
	(while_statement:): Rewritten using while_expression. Actions
	implemented.
	(while_statement_nsi:): Likewise.
	(do_statement_begin:): New rule.
	(do_statement:): Rewritten using do_statement_begin. Actions
	implemented.
	(for_statement:): Rewritten using for_begin. Actions implemented.
	(for_statement_nsi:): Likewise.
	(for_header:, for_begin:): New rules.
	(for_init:): Actions implemented.
	(statement_expression_list:, break_statement:,
	continue_statement:): Likewise.
	(yyerror): Count number of issued warning(s).
	(java_report_errors): Report error(s) and/or warning(s).
	(java_complete_class): Use build_java_argument_signature to
	recompute completed method signature.
	(java_check_regular_methods): New locals method_wfl and aflags.
	Use method_wfl instead of lookup_cl during error reports. Fixed
	indentation and modified some error messages. Use
	lang_printable_name in method instead of the DECL_NAME. New code
	to issue warnings on methods not overriding corresponding methods
	private to a different package.
	(java_method_add_stmt): Call add_stmt_to_compound.
	(add_stmt_to_compound): New function.
	(java_complete_tree): Handle LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR,
	LOOP_EXPR, EXIT_EXPR and COND_EXPR.
	(build_if_else_statement, patch_if_else_statement,
	build_labeled_block, generate_labeled_block,
	complete_labeled_statement, build_new_loop, build_loop_body,
	complete_loop_body, patch_loop_statement, build_bc_statement,
	patch_bc_statement, patch_exit_expr): New functions.
	* typeck.c (build_java_signature): Build argument signature before
	enclosing it in between parenthesis.

1998-08-17  Warren Levy  <warrenl@cygnus.com>

	* Make-lang.in (JAVA_SRCS): Created for dependencies * Makefile.in
	(JAVA_OBJS): Added reminder comment

1998-08-13  Nick Clifton  <nickc@cygnus.com>

	* gjavah.c (D_NAN_MASK): Append LL to the constant to force it to
	be interpreted as a long long.

1998-08-13  Warren Levy  <warrenl@cygnus.com>

	* decl.c (init_decl_processing): Use _Jv_InitClass, not
	soft_initialise_class.  Use _Jv_NewMultiArray, not
	soft_multianewarray.  Use _Jv_ThrowBadArrayIndex, not
	soft_badarrayindex.  Use _Jv_CheckCast, not soft_checkcast.  Use
	_Jv_CheckArrayStore, not soft_checkarraystore.  Use
	_Jv_LookupInterfaceMethod, not soft_lookupinterfacemethod.

1998-08-12  Per Bothner  <bothner@cygnus.com>

	* decl.c, java-tree.h (this_identifier_node, super_identifier_node,
	length_identifier_node):  New global tree node constants.
	* parse.y (kw_super, kw_this, kw_length):  Removed globals.
	Replace uses by super_identifier_node etc.
	* lex.c (kw_super, kw_this, kw_length):  Don't initialize.

	* parse.y (resolve_field_access):  Don't special-case ".length" if
	flag_emit_class_files.
	(patch_array_ref):  Leave as ARRAY_REF if flag_emit_class_files.
	* jcf-write.c (generate_bytecode_insns):  Handle ARRAY_REF opcode
	and ARRAY.length.

1998-08-11  Per Bothner  <bothner@cygnus.com>

	* decl.c (init_decl_processing): Remove unused method_type_node fields.
	* class.c (make_method_value):  Remove init for removed fields.

	* class.c (layout_class):  Use build_java_argument_signature.
	* java-tree.h (TYPE_ARGUMENT_SIGNATURE):  New macro.

	* typeck.c (push_java_argument_signature):  Removed.  Merged into ...
	(build_java_argument_signature):  Use TYPE_ARGUMENT_SIGNATURE cache.
	(build_java_signature):  Don't use push_java_argument_signature.

	* typeck.c (lookup_argument_method):  New function.
	* parse.y (java_check_regular_methods):  Use lookup_argument_method
	instead of lookup_java_method2 followed by lookup_java_method.

	* parse.y (check_method_redefinition):  Minor optimization.

	* jcf-write.c (generate_bytecode_insns):  Handle RETURN_EXPR,
	MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, and RDIV_EXPR.

1998-08-10  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (jc1$(exeext)): Don't depend on c-common.o or
	c-pragma.o.

	* gjavah.c (java_float_finite): Use K&R-style definition.
	(java_double_finite): Likewise.
	(generate_access): Now returns void.  Changed all callers.
	(last_access_generated): Removed.
	(process_file): Only make a single pass over the .class file.

1998-07-29  Per Bothner  <bothner@cygnus.com>

	* class.c (get_dispatch_table):  Add extra dummy vtable entry,
	for compatibility for G++ (with -fvtable-thunks).
	* expr.c (build_invokevirtual):  Add one for extra dummy vtable entry.

	* gjavah.c (process_file):  Use public inheritance for super-class.

1998-07-29  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (java_init_lex): Initialize ctxp->package.
	* parse.h (struct parser_ctxt): package and package_len replaced
	by tree package, an identifier node. Field method_decl_list is
	gone. Fixed comments.
	(lookup_field_wrapper, merge_qualified_name, not_accessible,
	class_in_current_package): New function prototypes.
	* parse.y (array_type:): Set class loaded flag on primitive type
	arrays.
	(package_declaration:): Assign ctxp->package to the
	identifier node.
	(method_invocation:): Handle invocation of method qualified by
	`super'.
	(single_type_import_declaration:): Removed ambiguity check.
	(java_pop_parser_context): New local variable `next'. Reset and
	set IMPORT_CLASSFILE_NAME flags on current and previous import
	list.
	(java_accstring_lookup): Use new local macro COPY_RETURN.
	(lookup_field_wrapper): New function.
	(parser_qualified_classname): Use merge_qualified_name.
	(parser_check_super_interface): Broaden error message.
	(do_resolve_class): Check for qualified class name in the current
	compilation unit if appropriate.
	(process_imports): Check for already defined classes.
	(check_pkg_class_access): Got rid of call to
	get_access_flags_from_decl.
	(java_complete_expand_methods): Call safe_layout_class based on
	the current class size.
	(make_qualified_primary): Build a WFL qualification on primary if
	none exists.
	(merge_qualified_name): New function.
	(make_qualified_name): Use merge_qualified_name.
	(resolve_expression_name): Use safe_lookup_field.
	(resolve_field_access): Got rid of call to get_access_flags_from_decl.
	(resolve_qualified_expression_name): Likewise. Check on resolved
	element accessibility.
	(not_accessible_p, class_in_current_package): New functions.
	(maybe_access_field): Got rid of call to get_access_flags_from_decl.
	(patch_method_invocation_stmt): Merged common pieces. Check
	accessibility of invoked method.
	(check_for_static_method_reference): Add returned type in error
	message.
	(invocation_mode): Get rid of bogus check on PRIVATE methods.
	(refine_accessible_methods_list): Merged two conditions in test.
	(java_complete_class): Sanity check on stabilize_ref gone.
	* zextract.c (read_zip_archive): Cast lseek second argument to long.

1998-07-28  Per Bothner  <bothner@cygnus.com>

	* class.c (hashUtf8String):  Fix - use new JavaSoft specification.

1998-07-24  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (F_NAN): Removed.
	(F_NAN_MASK): New macro.
	(F_POSITIVE_INFINITY): Removed.
	(F_NEGATIVE_INFINITY): Likewise.
	(java_float_finite): Rewrote.
	(D_NAN_MASK): Renamed.
	(java_double_finite): Rewrote.
	(D_POSITIVE_INFINITY): Removed.
	(D_NEGATIVE_INFINITY): Likewise.

	* jcf-dump.c (print_constant): [CONSTANT_Double, CONSTANT_Float]
	If verbose, print underlying representation of value in hex.

1998-07-24  Per Bothner  <bothner@cygnus.com>

	* buffer.h, buffer.c:  New files.
	* Makefile.in (JAVA_OBJS):  Add buffer.o.

	Support locals variables and writing their debug entries to .class.
	* jcf-write.c:  Simplify some by user new buffer type.
	(vode_buffer_grow):  Removed.
	(struct localvar_info):  New type.
	(localsvars, localvartable):  New buffers.
	(localvar_alloc, localvar_free):  New functions.
	(generate_bytecode_insns):  Handle local variables.
	(generate_classfile):  Write LocalVariableTable attribute.

1998-07-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-io.c (open_in_zip): Check the zipfile magic number.
	* zipfile.h (ZIPMAGIC): New macro.

1998-07-24  Tom Tromey  <tromey@cygnus.com>

	* Makefile.in (gjavah.o): Updated dependencies.
	(jcf-dump.o): Likewise.
	(all.indirect): Use ../gjavah.
	(../gjavah$(exeext)): Likewise.
	(clean): Don't remove gjavah.
	(clean): Remove parse.c, not java/parse.c.
	* Make-lang.in (java): Added gjavah.
	(gjavah$(exeext)): New target.
	(GJAVAH_SOURCES): New macro.
	(java.all.build): Added gjavah.
	(java.all.cross): Likewise.
	(java.rest.encap): Likewise.
	* config-lang.in (compilers, stagestuff): Added gjavah.

1998-07-23  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (java_float_finite): New function.
	(java_double_finite): Likewise.
	(F_POSITIVE_INFINITY): New macro.
	(F_NEGATIVE_INFINITY): Likewise.
	(F_NAN): Likewise.
	(D_POSITIVE_INFINITY): Likewise.
	(D_NEGATIVE_INFINITY): Likewise.
	(D_NAN): Likewise.
	(print_field_info): Use java_float_finite and java_double_finite.

1998-07-23  Per Bothner  <bothner@cygnus.com>

	* parse.y (method_header):  Name "this" implicit argument.

1998-07-22  Per Bothner  <bothner@cygnus.com>

	* jcf-write.c:  Write out LineNumberTable attribute in .class file.
	(linenumber_buffer, linenumber_ptr, linenumber_limit):  New statics.
	(put_linenumber):  New function.
	(generate_bytecode_insns, generate_classfile):  Write line numbers.

1998-07-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (CALL_EXPR_FROM_PRIMARY_P): Changed in PRIMARY_P.
	(lookup_name, build_known_method_ref, build_class_init,
	build_invokevirtual, invoke_build_dtable, match_java_method,
	build_field_ref, pushdecl_force_head, build_java_binop,
	binary_numeric_promotion, build_decl_no_layout,
	build_java_arrayaccess, build_newarray, build_anewarray,
	build_java_array_length_access, build_java_arraynull_check): New
	extern function prototypes.
	(JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
	JAVA_THIS_EXPR, CALL_CONSTRUCTOR_P): Macro definition moved in
	java-tree.h.
	* jcf-parse.c (init_outgoing_cpool): Set current_constant_pool_data_ref
	to NULL
	* jcf.h (jcf_out_of_synch): New extern function prototype.
	* parse.h: Static/global function implemented in parse.y
	prototyped and declarations moved at the end of the file.
	(DECL_P): Check that the argument isn't null.
	(JAVA_UNARY_PLUS_EXPR, JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR,
	JAVA_THIS_EXPR): No longer defined here. See java-tree.h
	(QUAL_DECL_TYPE): New macro.
	(PARAMS): Macro definition removed.
	* parse.y: (yyparse, yyerror): Use PROTO instead of PARAMS.
	(return_statement:): Call build_return.
	(field_access:): Call make_qualified_primary in sub rule.
	(method_invocation:): Build method invocation and call
	make_qualified_primary when processing primaries.
	(java_complete_class): Set IDENTIFIER_SIGNATURE_TYPE by calling
	get_type_from_signature.
	(java_check_regular_method): Extra integer 0 argument when calling
	lookup_java_method2.
	(lookup_java_interface_method2): Extra method DECL argument when
	calling lookup_java_interface_method2.
	(java_method_add_stmt): Set TREE_SIDE_EFFECTS on newly created
	COMPOUND_EXPR node.
	(java_complete_expand_method): Layout current class iff not
	already done. Don't process interface's methods.
	(java_complete_expand_method): Use super class only if it
	exists. Use current class otherwise.
	(make_qualified_primary): New function.
	(resolve_expression_name): Process qualified expression or
	expression from primary the same way.
	(resolve_expression_name): Two last arguments to
	resolve_field_access are now NULL_TREEs.
	(resolve_field_access): New variable is_static. Local field must
	be DECLs. is_static computed on field DECLs only. Append code in
	where_found to the field access if necessary. Use QUAL_DECL_TYPE
	to initialize field_type.
	(resolve_qualified_expression_name): New local variable,
	previous_call_static and is_static. Handle primaries with function
	calls, casts, array references and `this'. `super' now handled as
	`(super_class)this'. Use is_static to clarify boolean expressions.
	Added code to handle case where a proper handle is required to
	access a field. Use QUAL_DECL_TYPE where applicable.
	(maybe_access_field): New function.
	(patch_method_invocation_stmt): New arguments primary, where,
	is_static. Branch of the test on CALL_EXPR_FROM_PRIMARY_P
	deleted. Use `where' as a type to search from if specified. Check
	for static method reference where forbidden. Append primary or
	current_this to the argument list if not calling constructor nor
	static methods.
	(check_for_static_method_reference): New function.
	(patch_invoke): Layout the class on which new is done if
	necessary.
	(lookup_method_invoke): Changed format to report errors on
	methods.
	(qualify_ambiguous_name): New local variable this_found. Now
	handle things from primaries. Method call are considered
	expression names.
	(identical_subpath_p): NULL_TREE arguments to breakdown_qualified
	changed into NULLs.
	(not_initialized_as_it_should_p): Comply with the new DECL_P.
	(java_complete_tree): New case fo RETURN_EXPR. Process function
	call arguments in separate function.
	(complete_function_arguments): New function.
	(build_method_invocation): Don't use CALL_EXPR_FROM_PRIMARY_P
	anymore.
	(patch_assignment): Take the return function slot into account as
	a RHS. Distinguish assignment from a return.
	(valid_ref_assignconv_cast_p): Use build_java_argument_signature
	when checking methods in interfaces.
	(resolve_type_during_patch): NULL argument to unresolve_type_p
	instead of NULL_TREE.
	(patch_newarray): Fixed typo in comment.
	(buid_this): Build a WFL with `kw_this' instead of a FIELD_DECL.
	(build_return, patch_return): New functions.
	* typeck.c (lookup_java_constructor): Fixed typo in comment.

1998-07-21  Per Bothner  <bothner@cygnus.com>

	* constants.c (find_name_and_type_constant, find_fieldref_index,
	find_methodref_index):  New methods.
	* expr.c (build_invoke_non_interface):  If flag_emit_class_files,
	just return given method.  Also, rename to build_known_method_ref.
	(expand_invoke):  Rename call to build_invoke_non_interface.
	* java-tree.h, parse.h:  Update prototype.
	* parse.y, decl.c, jcf-parse.c:  Suppress calls to back-end functions
	(such as expand_expr_stmt) if flag_emit_class_files.
	* jcf-write.c (RESERVE, OP1, OP2, OP4, NOTE_PUSH, NOTE_POP,
	STACK_TARGET, IGNORE_TARGET):  New macros.
	(code_buffer, code_ptr, code_limit, code_S, code_SP_max):  New globals.
	(generate_bytecode_insn):  New function to generate method's bytecode.
	(generate_classfile):  Node generate Code attribute for a method.
	(code_buffer_grow, push_constant1, push_constant2, push_int_const,
	push_long_const, field_op, adjust_typed_op, maybe_wide):
	New functions used by generate_bytecode_insn.

	* typeck.c (signature_include_return):  Remove variable.
	(push_java_argument_signature, build_java_argument_signature):  New.
	(build_java_signature):  Use push_java_argument_signature.
	* parse.y:  Use build_java_argument_signature instead of fiddling
	with signature_include_return.

1998-07-17  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_c_decl): Always generate JArray<>* for array
	types.

	* Makefile.in (all.indirect): Added gjavah$(exeext).
	(gjavah$(exeext)): Added $(exeext).
	(clean): Likewise.

1998-07-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (layout_class): Call to java_layout_parsed_class replace
	by safe_layout_class.
	* expr.c (build_java_array_length_access): Removed static storage
	class in the function definition.
	(build_java_arraynull_check): Likewise.
	Also fixed typos in two comments.
	* lex.c (java_init_lex): Initialize static global kw_length.
	(java_lex): Use BUILD_OPERATOR on RETURN_TK.
	* lex.h (JAVA_FLOAT_RANGE_ERROR): Add extra argument to
	java_lex_error.
	(JAVA_INTEGRAL_RANGE_ERROR): Likewise.
	* parse.h (resolve_no_layout): New static function declaration.
	(get_identifier_in_static): Declaration removed.
	(java_layout_parsed_class): Function name declaration changed to
	safe_layout_class.
	(build_newarray_node, patch_newarray, resolve_type_during_patch,
	not_initialized_as_it_should_p, build_this): New static function
	declarations.
	(pushdecl_force_head, build_java_binop, int_fits_type_p,
	binary_numeric_promotion, stabilize_reference,
	build_decl_no_layout, build_java_arrayaccess): Extern function
	declarations moved into their own section.
	(build_newarray, build_anewarray, build_java_array_length_access,
	build_java_arraynull_check): New extern function declarations.
	(UNARY_PLUS_EXPR): Macro renamed into JAVA_UNARY_PLUS_EXPR.
	(JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR, JAVA_THIS_EXPR): New
	fake tree codes.
	(CALL_CONSTRUCTOR_P): New macro.
	* parse.y (kw_length): New static global tree node.
	(return_statement): Tagged <node>.
	(RETURN_TK): Tagged <operator>.
	(variable_declarator_id:): Build variable declaration with an
	empty initialization value if a syntax error was found in the
	initialization part of the variable declaration.
	(statement_without_trailing_substatement:): return_statement: now
	uses the default rule.
	(return_statement:): Temporarily fixed to return NULL_TREE.
	(primary_no_new_array:): Call build_this when THIS_TK was parsed.
	(class_instance_creation_expression:): Class creation rules now
	call build_method_invocation upon reduction.
	(array_creation_expression:): Rules call build_newarray_node upon
	reduction.
	(dim_exprs:): Build a list of dimension expressions.
	(dim_expr:): Store location of the OSB_TK in the dimension
	expression node.
	(method_invocation:): Added a new error rule.
	(build_unresolved_array_type): WFL argument may also be an array
	on a primitive type. Name of the argument changed to reflect this.
	(method_declarator): Insert argument type at the beginning of the
	argument type list and later reverse the list.
	(unresolved_type_p): Argument 'returned' may be optionally
	NULL_TREE.
	(java_layout_class_from_source): Function renamed
	safe_layout_class.
	(resolve_and_layout): Now call resolve_no_layout and
	safe_layout_class.
	(resolve_no_layout): New function.
	(purify_type_name): New function.
	(complete_class_report_errors): Call purify_type_name during error
	report on a type not found.
	(process_imports): error_found local variable doesn't need to be
	initialized to zero.
	(declare_local_variables): New local type_wfl. Fixed typo in error
	message. type_wfl assigned to unresolved type and used to register
	incomplete type. Build a WFL around the variable initialization
	statement so that debug info can be generated on it.
	(source_start_java_method): Reverse argument list after they've
	been processed.
	(current_this): New static global variable.
	(java_complete_expand_methods): Set current_this when appropriate.
	(resolve_expression_name): Build correct static and non static
	field access bearing a simple name.
	(resolve_field_access): Resolve the length field of arrays. Handle
	f.m() cases.
	(patch_method_invocation_stmt): Set the type of the method
	invocation to error_mark_node. This value is later overridden by a
	valid type, if any. Don't handle qualified constructor invocation
	as qualified method invocation. Call lookup_method_invoke with its
	new flag. It's no longer necessary to access the selected method
	as the value of a tree list. Handle constructor invocation.
	(patch_invoke): Reverse argument list when invoking non interface
	methods. Insert call to new as the first argument of the
	constructor.
	(invocation_mode): Return a INVOKE_STATIC is the invoked method is
	defined within a final class. Return INVOKE_STATIC if the invoked
	method is a constructor.
	(lookup_method_invoke): New lc argument is a flag to indicate a
	constructor lookup. Now handle constructor lookup. Choose the most
	specific method in case several were matching the invocation
	requirements. Return a method decl instead of a tree list featuring
	one single method decl element.
	(refine_accessible_methods_list): New lc flag argument to
	indicate that a constructor is being looked up.
	(not_initialized_as_it_should_p): New function.
	(java_complete_tree): Now process fake tree codes
	JAVA_NEW_ARRAY_EXPR, JAVA_NEW_CLASS_EXPR and JAVA_THIS_EXPR. Call
	save_expr on resolved function call arguments. Case on
	UNARY_PLUS_EXPR changed into a case on JAVA_UNARY_PLUS_EXPR.
	(patch_assignment): LHS can be a field access expression. When
	dealing with reference, lhs_type is the promoted type of the
	rhs_type, not the RHS. Use not_initialized_as_it_should_p where
	applicable.
	(operator_string): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
	(patch_binop): Use not_initialized_as_it_should_p where
	applicable.
	(build_unaryop): JAVA_UNARY_PLUS_EXPR replaces UNARY_PLUS_EXPR.
	(patch_unaryop): Likewise. And use not_initialized_as_it_should_p
	where applicable.
	(resolve_type_during_patch): New function.
	(patch_cast): Call resolve_type_during_patch to resolve type and
	report error accordingly.
	(patch_array_ref): Use not_initialized_as_it_should_p where
	applicable. Array base expression is saved before being
	used. Promote the type of an array elements if it contains non
	builtin types.
	(build_newarray_node, patch_newarray, build_this): New functions.

1998-07-16  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_c_decl): UTF8_GET increments pointer; don't
	increment it in `for' statement.
	(print_field_info): If number is inf or nan, don't print it.
	(print_method_info): If method name is `delete', just ignore it.
	(print_c_decl): Special-case jstringArray.

	* gjavah.c (help): New function.
	(no_argument): New function.
	(usage): Changed text.
	(main): Rewrote argument handling.  Now handles -v, --help,
	--version.
	(version): New function.
	(found_error): New global.
	(main): Return found_error.
	(generate_access): Set found_error.
	(print_c_decl): Likewise.

1998-07-15  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_c_decl): Don't print "," when examining field.
	Skip type name when looking at "[L" types.
	(process_file): Now static.
	(generate_access): Now returns int.
	(last_access_generated): New global.
	(process_file): Clear last_access_generated; make multiple passes
	over the class.
	(print_field_info): Just return if generate_access returns true.
	(print_method_info): Likewise.  Also, allow <init> functions to
	pass through.
	(print_c_decl): Added is_init argument.  Print constructors
	properly.
	(print_cxx_classname): Use UTF8_GET to extract characters from
	string.
	(print_base_classname): New function.
	(print_class_decls): New function.
	(process_file): Use it.
	(utf8_cmp): New function.

1998-07-13  Nick Clifton  <nickc@cygnus.com>

	* lang-options.h: Format changed to match changes in gcc/toplev.c
	to implement a --help option.

1998-07-10  Brendan Kehoe  <brendan@cygnus.com>

	* decl.c (init_decl_processing): Revert change to dtable_type.

1998-07-09  Per Bothner  <bothner@cygnus.com>

	* java-tree.h (CLASS_P):  Changed DECL_LANG_FLAG_7 -> TYPE_LANG_FLAG_4.

1998-07-08  Brendan Kehoe  <brendan@cygnus.com>

	* decl.c (init_decl_processing): Set CLASS_LOADED_P on dtable_type.

	* lang.c (lang_init): Default flag_exceptions to 1, without
	checking to see if it's 2 first.

1998-07-08  Jeffrey A Law  (law@cygnus.com)

	* constants.c: Include "system.h".
	* decl.c: Likewise.
	* lang.c (flag_new_exceptions): Get via extern now.
	(lang_init_options): New functions.  Turn on flag_new_exceptions.

1998-07-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* lex.c (java_lex): Return 0 when we see an invalid character in
	the input.

	* lex.c (java_read_char): Specify extra argument when calling
	java_lex_error.
	(java_read_unicode, java_parse_end_comment,
	java_parse_escape_sequence): Likewise,
	(java_lex): Specify extra argument when calling
	java_lex_error. Test that IDs are beginning with a legal character
	for IDs. Handle invalid characters with an error message and a
	call to java_lex_error.
	(java_lex_error): Adjust column position by new argument
	`forward'. Issue an error even if in the middle of reporting an
	other error.

1998-07-07  Brendan Kehoe  <brendan@cygnus.com>

	* jcf-io.c (find_class): Zero out BUFFER before we use it, since
	we don't explicitly put a null pointer when we're copying it.

1998-07-07  Tom Tromey  <tromey@cygnus.com>

	* gjavah.c (print_cxx_classname): New function.
	(super_class_name): Likewise.
	(print_super_fields): Removed.
	(in_super): Removed.
	(print_field_info): Never generate #defines.
	(print_c_decl): Changed generated types to match JNI.  No longer
	print class name before method name.
	(print_method_info): Print "static" before static methods.
	Print "virtual" before non-final methods.
	(usage): Use exit(1), not exit(-1).
	(main): Likewise.
	(print_field_info): Use %.17g to print a double.
	(last_access): New globals.
	(process_file): Initialize last_access.
	(usage): Now static.
	(ACC_VISIBILITY): New define.
	(generate_access): New function.
	(print_field_info): Call it.
	(print_method_info): Likewise.  Also, generate information for all
	methods, not just native methods.  Return void.
	(print_c_decl): Return void.
	(print_field_info): Return void.

1998-07-02  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in (JAVABISONFLAGS): Specific flag for bison when
	processing the jc1 grammar file. Prefix bison functions and
	variables with java_.
	(parse.c): Dependencies on parse.h and lex.h
	* expr.c (build_java_arrayaccess): Function now global.
	* java-tree.h: Comment reorganized to carry on previous
	classification effort.
	(RESOLVE_EXPRESSION_NAME_P, RESOLVE_PACKAGE_NAME_P,
	RESOLVE_TYPE_NAME_P): New flags on WFLs.
	* jcf-parse.c (parse_source_file): java_parse_source_file renamed
	java_parse (new prefix java_ generated by bison).
	(java_layout_parsed_class, java_register_parsed_class): Function
	call removed.
	(yyparse): Removed unnecessary call to init_outgoing_cpool.
	* lex.c (static tree wfl_op): Variable deleted.
	(java_init_lex): Initialize kw_super and kw_this. Initialize more
	ctxp fields to NULL_TREE.
	(java_lex): No longer create WFL for operators. Filename caching
	mechanism deleted. Call BUILD_OPERATOR for `.', '(', '['. Strings
	created as STRING_CST and later expanded. Removed extra argument
	to BUILD_OPERATOR and BUILD_OPERATOR2. Build operators for THIS
	and SUPER.
	(build_wfl_node): Removed code in comments.
	* lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): No longer build a WFL but
	store token and location data in the current bison token.
	* parse.h: Removed pre-processor based symbol prefixes hack. Moved
	static/extern function declaration at the beginning of the file.
	(struct qualification): Data structure definition deleted.
	(RESOLVE_CHAIN_REMAINDER): Macro definition deleted.
	(qualify_ambiguous_name): Function declaration modified. Function
	now returns nothing.
	(build_array_ref, patch_array_ref, make_qualified_name,
	resolve_qualified_expression_name, maybe_generate_clinit,
	resolve_field_access): New static function declarations.
	(build_java_arrayaccess): New extern function declaration.
	(enum { RESOLVE_EXPRESION_NAME...}): Enum deleted.
	(CALL_EXPR_PRIMARY): Macro deleted.
	(EXPR_WFL_QUALIFICATION, QUAL_WFL, QUAL_RESOLUTION): New macros.
	(struct parser_ctxt): Field initialized_final
	removed. non_static_initialized, static_initialized: New fields.
	* parse.y (static tree kw_super, static tree kw_this): New global
	static.
	(%union): tree wfl field of operator member replaced by int
	location. WFLs are non longer created for operators.
	(OSB_TK, DOT_TK, THIS_TK, SUPER_TK): Tagged <operator>.
	(qualified_name:): Now calls make_qualified_name to build the
	identifier.
	(type_declaration:): Consider generating <clinit> when class
	parsing completed.
	(variable_declarator:): Directly build an assignment node when the
	variable is initialized when declared.
	(this_or_super:): Build a WFL and set current location when THIS
	or SUPER are parsed.
	(expression_statement:): Wrap statement around a WFL.
	(primary_no_new_array:): Fixed typo. Changed value returned by
	THIS_TK because of its new type (temporary).
	(dim_exprs:): Temporary fix because of OSB_TK's new type.
	(field_access:): Build qualified name with SUPER.
	(method_invocation:): Fixed returned value because of SUPER's new
	type.
	(array_access:): Use OSB_TK location information.
	(post_increment_expression:, post_decrement_expression:,
	unary_expression:, pre_increment_expression:,
	pre_decrement_expression:, unary_expression_not_plus_minus:,
	cast_expression:, multiplicative_expression:,
	additive_expression:, shift_expression:, relational_expression:,
	equality_expression:, and_expression:, exclusive_or_expression:,
	inclusive_or_expression:, conditional_and_expression:,
	conditional_or_expression:, assignment:): Use new location/token
	information available on operators.
	(create_class): Set super_decl_type to NULL_TREE when processing
	java.lang.Object.
	(register_fields): Field initialization is now a MODIFY_EXPR
	node. Chain initialization code to the matching lists (according
	to the field declaration modifiers).
	(maybe_generate_clinit): New function.
	(method_header): Don't set method's DECL_NAME to a WFL when adding
	methods to java.lang.Object.
	(resolve_and_layout): Now can return NULL_TREE if the type
	resolution fails. Otherwise, return the class DECL instead of its
	TYPE.
	(check_method_redefinition): Don't patch method DECL_NAME if it
	belongs to java.lang.Object.
	(process_imports): Simply assign error_found to the value returned
	by check_pkg_class_access.
	(declare_local_variables): Don't use their init statements (if
	any) when parsing error were previously found. Reuse MODIFY_EXPR
	build during parsing as an init statement.
	(java_method_add_stmt): Now return the current method body.
	(java_layout_parsed_class, java_register_parsed_class): Functions
	removed.
	(java_complete_expand_methods): Initialize the constant pool on a
	per class basis. Layout the classes before expanding their method
	bodies. Don't try expand artificial constructor code if error were
	found. Make the classes data and register them if no error were
	found.
	(java_complete_expand_method): Retrieve an artificial constructor
	argument list before entering its body. Assign the top block to
	the artificial constructor function body and set types of declared
	blocks and compound statements to void. Walk method body if not an
	artificial constructor.
	(make_qualified_name, cut_identifier_in_qualified): New functions.
	(resolve_expression_name): Fixed comments. Save/restore the
	current class CLASS_LOADED_P flag value. Build non qualified
	static field access and handle qualified expression names.
	(resolve_field_access, resolve_qualified_expression_name): New
	functions.
	(patch_method_invocation_stmt): Use the new expression resolution
	scheme, calling resolve_field_access when the function call is
	resolved as an expression.
	(qualify_ambiguous_name): Function rewritten to work on qualified
	expression produced by make_qualified_name.
	(java_complete_tree): Promote type when function's argument are
	RECORD_TYPEs. While processing the MODIFY_EXPR case: don't patch
	the assignment to discover further errors if RHS is a expression
	name that fails to evaluate. Declare LHS initialized even though
	the assignment failed. Don't use the location variable and removed
	extra argument in patch function calls. Now handle the ARRAY_REF
	case and build internal string representation when STRING_CSTs are
	walked.
	(build_method_invocation): Don't wrap function call around a WFL.
	(build_assignment): Likewise. Use the operator location
	information.
	(patch_assignment): Handle array access LHSs. Handle error
	provenance, resulting in a better error report.
	(build_binop): Use op_location from operator as binop location
	information.
	(build_unaryop, build_incdec, build_cast): Likewise.
	(patch_binop): Extract location information from the node. Fixed
	typo in error message.
	(patch_unary_op): Extract location information from the node.
	(build_array_ref, patch_array_ref): New functions.

1998-07-01  Tom Tromey  <tromey@cygnus.com>

	* expr.c (expand_java_INSTANCEOF): Changed calling convention to
	match _Jv_IsInstanceOf.
	* decl.c (init_decl_processing): Use _Jv_NewArray, not
	soft_newarray.  Use _Jv_IsInstanceOf, not soft_instanceof.

1998-06-30  Tom Tromey  <tromey@cygnus.com>

	* decl.c (init_decl_processing): Functions are now named
	_Jv_MonitorEnter and _Jv_MonitorExit, and return jint.

1998-06-29  Per Bothner  <bothner@cygnus.com>

	* java-tree.h (load_class):  Add prototype.
	* class.c (is_compiled_class):  Add missing arg to load_class.
	* expr.c (expand_java_NEW):  Call load_class.
	* parse.y (process_import):  Removed bogus use of void return value.

1998-06-25  Per Bothner  <bothner@cygnus.com>

	* decl.c, java-tree.h (soft_athrow_node):  Renamed to soft_node.
	Function name is "_Jv_Throw" instead of "soft_athrow".
	* decl.c, java-tree.h (soft_new_node):  Renamed to alloc_object_node.
	Function name is "_Jv_AllocObject" instead of "soft_new".
	Takes an extra parameter (object size).
	* expr.c:  Update calls.

1998-06-24  Per Bothner  <bothner@cygnus.com>

	* lex.c (java_get_line_col):  Handle end-of-file.
	* except.c (expand_end_java_handler):  Handle null type (i.e. finally).

1998-06-24  Andrew MacLeod  <amacleod@cygnus.com>

	* lang.c (lang_init): Make -fexceptions the default.
	* except.c (maybe_start_try, maybe_end_try): Don't do anything if
	exception handling is not turned on.

1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>

	* lang.c (flag_new_exceptions): Make this this default.
	* decl.c (end_java_method): Call emit_handlers.
	* except.c (method_init_exceptions): Set language code and version.
	(expand_start_java_handler): Enable exception, and call
	expand_eh_region_start.
	(expand_end_java_handler): Enable exception, and set up catch blocks.
	(emit_handlers): New routine to generate the saved handlers.
	* java-except.h (emit_handlers): Add prototype.

1998-06-12  Per Bothner  <bothner@cygnus.com>

	We used to have three different representations of the constant pool:
	the CPool structure, the tree_constant_pool, and the constructures
	used to build the Class object (which may need class and string
	constants) in compiled code.  None were appropriate for compiling
	to .class files, so I did a major overhaul.

	First, the tree_constant_pool array was removed.  Things were
	modified to the CPool structure in the JCF could be used.
	Second, a "capacity" field was added to the CPool, and functions
	written to search for a matching constant, adding one if not found.
	The code that generated the Class object was changed to use a CPool.
	The actual TREE_LISTs used to build the CONSTRUCTORs used for
	the static Class object are now only in build_constants_constructor.
	Finally, I wrote code which can generate a .class file (including its
	constant pool) from the RECORD_TYPE of a class.  This is a big step
	on the way to compiling Java source into .class files.

	* jcf-write.c:  New file. Writes out a RECORD_TYPE as a .class file.
	* Makefile.in (JAVA_OBJS):  Added jcf-write.o.

	* java-tree.h (CPOOL_UTF, CONSTANT_ResolvedFlag,
	CONSTANT_ResolvedString, CONSTANT_ResolvedClass):  New macros.
	(NAME_AND_TYPE_NAME, NAME_AND_TYPE_SIGNATURE, COMPONENT_REF_NAME,
	COMPONENT_REF_NAME_AND_TYPE, COMPONENT_REF_SIGNATURE): Redefined.
	(COMPONENT_REF_CLASS):  Replaced by COMPONENT_REF_CLASS_INDEX.
	(lang_type):  Removed constant_pool field.
	* jcf.h (CPool):  Renamed size to count.  Added field capacity.
	(CPOO_COUNT, CPOOL_UINT, CPOOL_USHORT1, CPOOL_USHORT2,
	CPOOL_FINISH, CPOOL_INIT, CPOOL_REINIT):  New macros.
	Rewrite some of the old JCF_XXX in terms of CPOOL_XXX macros.

	* constants.c (current_constant_pool_tags, current_constant_pool_data,
	current_constant_pool_length), java-tree.h: Replaced by outgoing_cpool.
	* constants.c (build_constants_constructor):  Use new outgoing_cpool.
	(set_constant_entry, find_constant1, find_constant2,
	find_class_constant, count_constant_pool_bytes, write_constant_pool,
	find_utf8_constant, find_class_or_string_constant):  New functions.

	* jcf-parse.c (load_class):  Don't save/restore tree-constant_pool.
	(get_constant):  Use current_jcf.cpool instead of tree_constant_pool.
	(give_name_to_class, get_class_constant):  Likewise.
	* jcf-parse.c, java-tree.h (tree_constant_pool):  Removed.
	(get_name_and_type_constant, get_ref_constant):  Removed.
	* parse.h (parser_ctxt):  Remove field tree_constant_pool.
	* parse.y:  Don't save/restore tree_constant_pool.
	* verify.c (verify_jvm_instructions):  Update for new approach.
	* expr.c (expand_invoke, expand_java_field_op): Likewise.

	* lang-options.h:  Added -femit-class-file, -femit-class-files.
	* lang.c (flag_emit_class_files), java-tree.h:  New flag.
	(lang_f_options):  Added "emit-class-file(s)".

	* expr.c (build_java_arrayaccess):  Generate more efficient array
	bounds checking, by using unsigned compare.

	* expr.c (expand_invoke):  Re-arrange error checks to make more robust.

1998-06-10  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.h: New comment on the handling of unresolved type
	identifiers. JDEPs are now part of the jdep_code enum.
	(typedef struct jdep): Now use enum jdep_code or int, depending on
	availability. Both are narrowed down to an 8 bits bitfield.
	(CALL_EXPR_PRIMARY): Fixed comment.

1998-06-10  Tom Tromey  <tromey@cygnus.com>

	* Make-lang.in (java): Added gjavac and jvgenmain.
	(java.start.encap): Depend on gjavac.
	(java.rest.encap): Depend on jvgenmain.

	* Make-lang.in (JAVA_INSTALL_NAME): Name is gjavac, not c++.
	(JAVA_CROSS_NAME): Likewise.
	(java.all.build): Depend on jvgenmain and gjavac.
	(java.all.cross): Depend on jvgenmain and gjavac-cross.
	(jvgenmain$(exeext)): New target.
	(java.install-common): Wrote.
	* config-lang.in (compilers, stagestuff): Added gjavac and
	jvgenmain.

1998-06-10  Dave Brolley  <brolley@cygnus.com>

	* lang.c (lang_decode_option): New argc/argv interface.

1998-06-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* ChangeLog: Fixed entries not compliant with the Gnu Coding Standard.
	* decl.c (build_decl_no_layout): New function.
	* expr.c (java_lang_expand_expr): Layout declarations found in
	blocks before they're pushed.
	* jcf-parse.c (load_class): Save current line when parsing class
	file.
	(parse_source_file): Register class before expanding their
	methods.
	* lang.c (put_decl_node): Produce `null' when `void *' is
	processed.
	* lex.c (static tree wfl_op): New static global, for error report
	on casts.
	(java_init_lex): wfl_operator and wfl_op initialized
	here. Filename caching added for wfl_op. Return wfl_op when `(' is
	parsed.
	* parse.h (build_unaryop, build_incdec, patch_unaryop, build_cast,
	patch_cast, valid_ref_assignconv_cast_p, can_cast_to_p,
	build_unresolved_array_type): New static function definitions.
	(build_decl_no_layout): New extern function declared.
	(OBSOLETE_MODIFIER_WARNING): Report error only if the WFL of the
	faulty modifier exists.
	(TYPE_INTERFACE_P, TYPE_CLASS_P): New macros.
	(ERROR_CAST_NEEDED_TO_INTEGRAL): Error message tuned.
	(UNARY_PLUS_EXPR): New fake operator.
	(struct parser_ctxt): New field osb_number.
	* parse.y (static tree wfl_operator): New static WFL for operator
	bound error messages.
	(DECR_TK, INCR_TK): Moved.
	(OP_TK): Tagged <operator>.
	(array_type:): Now call build_unresolved_array_type.
	(dim_expr:): Count the number of '[' seen.
	(post_increment_expression, post_decrement_expression,
	pre_increment_expression, pre_decrement_expression,
	unary_expression_not_plus_minus, unary_expression:): Actions are
	now building the corresponding unary expressions.
	(cast_expression:): Actions are now building cast expressions.
	(build_unresolved_array_type): New function.
	(create_interface): Reset the number of declared interfaces.
	(create_class): Likewise.
	(method_header): Methods declared within the scope of an interface
	are now implicitly set public and abstract.
	(java_complete_class): Variable's and parameter's type are patched
	with a promoted type.
	(declare_local_variables): Resolved non builtin types are promoted
	before being used to build a variable decl. Removed type patch
	posted on variable initialization statement.
	(source_start_java_method): Use build_decl_no_layout to build the
	decl of a parameter of incomplete type.
	(java_register_parsed_class): Process interfaces too. Call
	rest_of_decl_compilation on each processed class declarations.
	(java_complete_expand_methods): Don't attempt to expand things in
	interfaces.
	(java_complete_tree): Process CONVERT_EXPR, even though it always
	has a type. Propagate error_mark_node to node's type too. Promote
	method's call argument type and return error_mark_node if
	argument's completion didn't work. MODIFY_EXPR can have a WFL as a
	RHS. Fixed bug in the handling of bogus RHS of a fixed type. Now
	handle unary operator nodes.
	(build_assignment): Added comment.
	(print_int_node): New function.
	(patch_assignment): New second argument. New error handling. Use
	print_int_node. Handle references. Use can_cast_to_p to issue
	different error message according to the context and check upon
	the initialization of the RHS.
	(can_cast_to_p, valid_ref_assignconv_cast_p): New functions.
	(operator_string): Handle more operators.
	(patch_binop): No longer use a function static
	wfl_operator. Improved error message on shift distance.
	(build_unaryop, build_incdec, build_cast, patch_unaryop,
	patch_cast): New functions.

1998-06-05  Per Bothner  <bothner@cygnus.com>

	* jvspec.c:  New file.
	* Make-lang.in:  New rules to build gjavac from jvspec.c and ../gcc.c.

	* java-tree.h (identifier_subst):  Add declaration.

1998-06-04  Tom Tromey  <tromey@cygnus.com>

	* jvgenmain.c (main): Generate call to JvRunMain.

	* class.c (make_class_data): Push value for "sync_info" field.
	* decl.c (init_decl_processing): Push "sync_info" field.

1998-06-03  Per Bothner  <bothner@cygnus.com>

	* typeck.c (build_java_array_type):  Set TYPE_NAME to actual
	Java (source) name, not signature.
	Set TYPE_ALIGN to (at least) that of element_type.

1998-06-02  Per Bothner  <bothner@cygnus.com>

	* class.c:  Moved classname-mangling-rekated code to ...
	* mangle.c:  ... this new file.
	* jvgenmain.c:  New program (needs mangle.c) to generate main program.
	* Makefile.in:  Update for above changes.

1998-06-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (truthvalue_conversion): Convert integer and floating
	point value to their truth value.
	* lex.c (java_lex): Handle the `null' literal.
	* parse.h (JREFERENCE_TYPE_P, DECL_P): New macros.
	(ERROR_CANT_CONVERT_TO_BOOLEAN, ERROR_CANT_CONVERT_TO_NUMERIC,
	ERROR_CAST_NEEDED_TO_INTEGRAL, ERROR_VARIABLE_NOT_INITIALIZED):
	New macros.

	* parse.y: Reorganization/documentation on token declaration.
	(binop_lookup[]): New added new tree codes.
	(relational_expression): Build corresponding binary operators.
	(equality_expression, conditional_and_expression,
	conditional_or_expression): Likewise.
	(java_complete_class): Fix crash in debug message.
	(java_complete_tree): Check initialization of method call
	arguments. Further bogus node evaluation to detect more error
	during assignments. Handles more binary operators.
	(patch_assignment): Use DECL_P.
	(build_binop): Fix crash when using URSHIFT_EXPR, a Java only tree
	code.
	(operator_string): Handle more case. Compacted source.
	(patch_binop): Changed function comment. Checking for
	uninitialized first operand takes the compound assignment into
	account and uses DECL_P. Checking for uninitialized second operand
	delayed to routine's end. Use macros to issue type bound error
	messages and issue messages on both operands if their types are
	different. Force fixed type into node. Handle all binary
	operators.

1998-05-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* java-tree.h (COMPOUND_ASSIGN_P, INITIALIZED_P): New macros.
	* lex.c (java_lex): Use BUILD_OPERATOR and BUILD_OPERATOR2 to
	build operator node and return tokens.
	* lex.h (BUILD_OPERATOR, BUILD_OPERATOR2): New macros.
	* parse.h (java_complete_tree): Changed returned type in prototype.
	(build_method_invocation, build_assignment, patch_assignment,
	patch_binop): New static function declarations.
	(JFLOAT_TYPE_P, JNUMERIC_TYPE_P, JPRIMITIVE_TYPE_P, JSTRING_P,
	BUILD_EXPR_WFL): New macros.
	* parse.y (enum tree_code binop_lookup[]): New static for token to
	TREE_CODE lookup.
	(%union): Parser union has new sub-structure `operator'.
	(ASSIGN_TK, MULT_ASSIGN_TK, DIV_ASSIGN_TK, REM_ASSIGN_TK,
	PLUS_ASSIGN_TK, MINUS_ASSIGN_TK, LS_ASSIGN_TK, SRS_ASSIGN_TK,
	ZRS_ASSIGN_TK, AND_ASSIGN_TK, XOR_ASSIGN_TK, OR_ASSIGN_TK,
	ASSIGN_ANY_TK): Tokens tagged `operator'.
	(EQ_TK, GTE_TK, ZRS_TK, SRS_TK, GT_TK, LTE_TK, LS_TK, BOOL_AND_TK,
	AND_TK, BOOL_OR_TK, OR_TK, INCR_TK, PLUS_TK, DECR_TK, MINUS_TK,
	MULT_TK, DIV_TK, XOR_TK, REM_TK, NEQ_TK, NEG_TK, REL_QM_TK,
	REL_CL_TK, NOT_TK, LT_TK): Tokens tagged `operator'.
	(assignment_operator:): Rule tagged `operator'.
	(expression_statement:): Re-installed default rule.
	(method_invocation:): Sub rules call build_method_invocation.
	(postfix_expression:): Don't attempt to resolve name here. Just
	return an ID.
	(multiplicative_expression:): Sub-rules build corresponding binop
	expression node.
	(additive_expression:, shift_expression:, and_expression:,
	exclusive_or_expression:, inclusive_or_expression:): Likewise.
	(assignment:): Sub rule invoke build_assignment.
	(assignment_operator:): Default rules on sub rules.
	(force_error): Added documentation on this variable.
	(declare_local_variables): Build initialization calling
	build_assignment.
	(expand_start_java_method): Removed unused rtx declaration. Mark
	arguments as already initialized.
	(java_method_add_stmt): Type of built COMPOUND_EXPR set to NULL.
	(java_complete_expand_methods): Don't process next method if
	completion of the previous one triggered errors.
	(java_complete_expand_method): Call source_end_java_method if no
	error were found during completion.
	(resolve_expression_name): Use IDENTIFIER_LOCAL_VALUE to retrieve
	locals declaratilon. Handle names found within a class. Return
	error_mark_node when things aren't found.
	(patch_method_invocation_stmt): Return error_mark_node on failures.
	(patch_invoke): Removed unused local. Return the correct node.
	(java_complete_tree): Now returns a value. The BLOCK section binds
	local identifiers and the type of a BLOCK is now void. Assign the
	result of operand completion on COMPOUND_EXPR. Assign the
	encapsulated node of a WFL to the result of its completion, except
	when the node is an identifier. Now handle MODIFY_EXPR and several
	binary operators. Return error_mark_node on errors.
	(build_method_invocation, build_assignment, patch_assignment,
	build_binop, operator_string, patch_binop): New functions.
	* typeck.c (binary_numeric_promotion): New function.

1998-05-21  Per Bothner  <bothner@cygnus.com>

	* class.c (identifier_subst):  New convenience wrapper for ident_subst.
	Replace most uses of ident_subst by identifier_subst.

	* class.c (push_class_static_dummy_field):  Removed function.
	(build_class_ref):  Find Class object decl by looking up "CNAME.class",
	instead of looking got "class" static field.  Create that decl here.
	(class_identifier_node):  Removed;  no longer needed.
	(init_class_processing):  Don't init class_identifier_node.
	* jcf-parse.c (jcf_parse):  Don't call push_class_static_dummy_field.
	Do nreverse 0 times (instead of twice) for Object and Class.
	* parse.y (java_layout_parsed_class): No push_class_static_dummy_field.

1998-05-20  Per Bothner  <bothner@cygnus.com>

	* jcf-parse.c (parse_class-file):  Set lino to smallest line number,
	while initializing linenumber_count and linenumber_table.
	Do it before init_function_start (which calls emit_line_note).
	* expr.c (expand_byte_code):  Don't need to clear lineno here.

1998-05-18  Tom Tromey  <tromey@cygnus.com>

	* class.c (append_gpp_mangled_type): If `qualifications' is >=9,
	then mangle number as _N_.

	* class.c (mangle_class_field): New function.
	(build_class_ref): Set assembler name of class reference using
	mangle_class_field.
	(push_class_static_dummy_field): Likewise.

1998-05-17  Michael Tiemann <tiemann@cygnus.com>

	* parse.y (source_start_java_method): Use TREE_SET_CODE instead
	of assigning to TREE_CODE.  The latter method exploits a feature
	of GCC that is not ANSI compliant.

1998-05-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (pushdecl_force_head): New function.
	(pushlevel): Removed conditional printf.
	(complete_start_java_method): Don't enter local variable scope if
	function is compiled from source code.
	* expr.c: parse.h now included
	(java_lang_expand_expr): New function.
	* jcf-io.c (find_class): Use SOURCE_FRONTEND_DEBUG instead of
	printf. Terminate buffer when doing directories.
	* jcf-parse.c (parse_source_file): Call lang_init_source before
	parsing and before code generation.
	* jcf.h (SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally
	use printf if the macro is defined.
	* lang.c (lang_init): Install lang_expand_expr hook on
	java_lang_expand_expr.
	(java_dummy_print): New function.
	(lang_init_source): New function.
	* lex.c (java_lex): Remember location of an opening brace at the
	second nesting level.
	(java_is_eol): Unget character seen after a CR if it is EOF.
	* parse.h: Now includes lex.h
	(SOURCE_FRONTEND_DEBUG): Macro redefined to conditionally use
	printf if the macro is defined.
	(expand_start_java_method, build_expr_block, enter_block,
	exit_block, lookup_name_in_blocks, maybe_absorb_scoping_blocks):
	New static function declarations.
	(pushdecl_force_head): New extern function declaration.
	(INCOMPLETE_TYPE_P): New macro.
	(JDEP_PARM, JDEP_TYPE): New entries in JDEPs enum.
	(BLOCK_CHAIN_DECL, BLOCK_EXPR_DECLS, BLOCK_EXPR_BODY,
	BLOCK_EXPR_ORIGIN): New macros.
	(DECL_SOURCE_LINE_MERGE, DECL_SOURCE_LINE_FIRST,
	DECL_SOURCE_LINE_LAST): New macros.
	(struct parser_ctxt): Removed field current_method_decl, redundant
	with the field current_function_decl. Added fields
	first_ccb_indent1 and pending_block.
	* parse.y (method_body, literal, INT_LIT_TK, FP_LIT_TK,
	BOOL_LIT_TK, CHAR_LIT_TK, STRING_LIT_TK, NULL_TK, VOID_TK): Rules
	tagged <node>
	(SOURCE_FRONTEND_DEBUG): Used as macro accepting varargs.
	(compilation_unit:): Cosmetic on sub rule.
	(type_declaration:): Cosmetic on sub rules. Added an error rule.
	(variable_initializer:): Installed default rule on expression:.
	(method_declaration:): method_header: starts a new
	method. method_body: installs the function body, absorbs blocks
	emitted for temporary variable scopings, pops function's body block
	and merges function's last statement lineno in DECL_SOURCE_LINE.
	(method_body:): Installed default rules.
	(block:): Call enter_block when an opening brace is seen.  Absorb
	scoping blocks and call exit_block when a closing brace is seen.
	(block_statement:): Cosmetic changes.
	(method_invocation:): Create WFL around CALL_EXPR node.
	(patch_stage): Added comment around definition.
	(method_header): Try to use first_ccb_indent1 as the first line of
	the method, so BP debug info are emitted at the first opening
	brace of the function. If the function has no body, use the
	location of the function's name. Override currently defined method
	name with the matching WFL so we can point redefinition errors
	using the location where the function's name was declared.
	(check_abstract_method_header): Interprets DECL_NAME as an
	identifier or as a WFL, accordingly.
	(java_complete_class): New cases for JDEP_TYPE and JDEP_PARM.
	(check_method_redefinition): Use DECL_NAME as a WFL. Extract
	location and name information out of it and reinstall DECL_NAME to
	its original identifier node value.
	(lookup_cl): Use DECL_SOURCE_LINE_FIRST (first line of the
	function's source code).
	(read_import_dir): Test the value returned by find_class and issue
	a fatal accordingly.
	(declare_local_variables): Push a new block for the scope of the
	new variable(s) if code has been already generated at that nesting
	level. Pinpoint redefinition errors using the variable id
	WFLs. Generate initialization code if necessary. If the variable
	type is incomplete, register a patch on its decl.
	(source_start_java_method): Rewritten. Define a new block for the
	function's parameters. Build parameter decl out of function's
	arguments and register them for a patch if their types are
	incomplete.
	(expand_start_java_method): Includes the part of
	source_start_java_method that was pushing the parameter decls and
	completing the method start code.
	(source_end_java_method): Removed call the expand_end_bindings and
	poplevel (already taken care of). Reinstall function's arguments
	and get function's last line of code before calling
	expand_function_end.
	(java_method_add_stmt): New comment before the function's
	code. Complement the second operand of the current COMPOUND_EXPR
	if necessary.
	(java_complete_expand_methods): Don't generate debug info on line
	zero when expanding a generated constructor.
	(java_complete_expand_method): Set start and end line numbers for
	a artificially generated constructor to one and manually call
	enter_block and exit_block when defining it. For all methods:
	expand function's start calling the new expand_start_java_method
	and invoke java_complete_tree on the effective method's body, if
	any.
	(resolve_expression_name): Now use lookup_name_in_blocks to search
	local variable decls and print out an error when variables are
	undefined.
	(patch_method_invocation_stmt): Inserted comment before the
	function's code.
	(lookup_method_invoke): Chain method's arguments using chainon
	with the current arg list as a second argument. Inserted missing
	IDENTIFIER_POINTER when reporting an error on methods not found.
	(refine_accessible_methods_list): Don't retain constructors.
	(patch_arguments): Function removed.
	(java_complete_tree): Inserted comment before the function's
	code. New case for BLOCKs. Moved the WFL case a bit
	further. Complete function's arguments.
	(build_expr_block, enter_block, exit_block, lookup_name_in_blocks,
	maybe_absorb_scoping_blocks): New functions.

1998-04-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-io.c (find_class): Reset jcf->java_source after JCF_ZERO, if
	previously set.
	* jcf-parse.c (parse_source_file, java_error_count): New forward
	and extern declarations.
	(java_parse_abort_on_error): Macro moved.
	(jcf_parse_source): fatal called if fopen fails. Now calls
	parse_source_file.
	(parse_source_file): New parse_only parameter. Reflects the
	elimination of the second pass.
	(yyparse): parse_source_file called with argument set to 0.
	* jcf.h (JCF_ZERO): Sets java_source to zero.
	* lex.c (java_init_lex): pass argument is gone. Function modified
	to be called once during the analysis of a file.
	(java_unget_unicode): Fixed typo in fatal message.
	(java_get_line_col): Likewise.
	(java_lval): Likewise. String literals no longer built during
	second pass.
	* lex.h (JAVA_COLUMN_DELTA): Take the tabulation character into
	account.
	* parse.h (MODIFIER_WFL): New macro.
	(parse_check_super, parser_check_super_interface): Now return int.
	(parser_chain_incomplete_item, not_builtin_p,
	complete_method_decl): Declarations removed.
	(build_method_invocation_stmt, build_invoke): Renamed using the
	`patch' instead of `build'
	(register-incomplete_type, obtain_incomplete_type,
	java_complete_tree, java_complete_expand_method,
	unresolved_type_p, create_jdep_list): New function declarations.
	(IC_TYPE, IC_DEPEND, DEPEND_DECL, DEPEND_WFL, BEGIN_ONLY_PASS,
	END_ONLY_PASS, ELSE_ONLY_PASS): Macro deleted.
	(jdep): New typedef on new struct _jdep.
	(JDEP_DECL, JDEP_DECL_WFL, JDEP_KIND, JDEP_SOLV, JDEP_WFL,
	JDEP_MISC, JDEP_APPLY_PATCH, JDEP_GET_PATCH, JDEP_CHAIN,
	JDEP_TO_REVOLVE, JDEP_RESOLVED_DECL, JDEP_RESOLVED,
	JDEP_RESOLVED_P): New macros.
	(JDEP_NO_PATCH, JDEP_SUPER, JDEP_FIELD, JDEP_METHOD,
	JDEP_METHOD_RETURN, JDEP_METHOD_END, JDEP_INTERFACE,
	JDEP_VARIABLE): New enum values and jdep kinds.
	(jdeplist): New typedef on struct _jdeplist.
	(CLASSD_FIRST, CLASSD_LAST, CLASSD_CHAIN, JDEP_INSERT): New
	macros.
	(CALL_EXPR_PRIMARY): New macro.
	(struct parser_ctxt): Fields java_pass, current_method_decl,
	method_decl_list deleted. New field jdeplist.
	(INCOMPLETE_P): Macro deleted.
	* parse.y (single_type_import_declaration:): Removed pass switch.
	(type_import_on_demand_declaration): Likewise.
	(field_declaration:): Removed pass switch on all sub rules.
	(class_declaration:): Call the complete_class_decl removed on
	class_body rules.
	(method_declaration:): Removed second pass switch. No longer chain
	methods decl when method_header reduced.
	(method_header:): Sub rules no longer depend on pass switch.
	(method_declarator:): Likewise.
	(method_body:): Likewise.
	(abstract_method_declaration:): Likewise.
	(block_statement:): Likewise.
	(local_variable_declaration:): Likewise.
	(argument_list:): Likewise.
	(method_invocation:): Likewise. Call to	build_method_invocation_stmt
	removed. Partial CLASS_EXPR tree node built instead.
	(postfix_expression:): Removed pass switch on all sub rules.
	(java_pop_parser_context): Free classd_list content.
	(yyerror): Call obstrack_grow0 to finalize error message.
	(check_class_interface_creation): Comment modified to reflect new
	returned value meaning. Removed second pass switch. Return 1 if an
	error was found, 0 otherwise. Adjust pointer on filename if a
	leading path separator was found.
	(maybe_create_class_interface_decl): Removed first pass switch
	when linking the class decl to the class_list. Install a new
	jdep_list for the class.
	(add_superinterfaces): List of unresolved interfaces is
	gone. Unresolved interfaces are directly added to the current
	dependencies list.
	(create_interface): Second pass shortcut removed.
	ctpx->modifier_ctx access through MODIFIER_WFL.
	(create_class): Second pass shortcut removed. Call to
	register_incomplete_type replaces the call to
	parser_chain_incomplete_item.
	(complete_class_decl): Function removed.
	(duplicate_declaration_error): New way of retrieving redeclared
	item type.
	(register_fields): Call to lookup_modifier_cl replaced by
	MODIFIER_WFL. New way of handling unresolved type, using
	unresolved_type_p and obtain_incomplete_type.
	register_incomplete_type replaces call to parser_chain_incomplete_item.
	(patch_stage): New static global variable.
	(method_header): New way of handling unresolved type, using
	unresolved_type_p and obtain_incomplete_type. patch_stage used to
	indicates that the method decl needs to be patched.
	(check_abstract_method_header): Call to lookup_modifier_cl
	replaced by MODIFIER_WFL.
	(method_declarator): Incomplete argument type are registered
	calling register_incomplete_type. Patch on the declared method is
	issued in that case.
	(unresolved_type_p): New function.
	(parser_check_super_interface): New comment to reflect function's
	modified returned type (int). Function and has a new argument
	this_wfl. Call to parse_error_context uses this_wfl instead of
	relying on lookup_cl.
	(parser_check_super): Comment reflects function's new returned
	type (int). Function returns nonzero value on error.
	(create_jdep_list, reverse_jdep_list, obtain_incomplete_type,
	register_incomplete_type, jdep_resolve_class): New functions to
	handle incomplete types in declarations.
	(java_complete_class): Rewritten to work with the new incomplete
	type handling scheme.
	(complete_class_report_errors): Likewise.
	(complete_method_decl): Removed: it jobs is now handled by
	java_complete_class.
	(do_resolve_class): Class loaded in not already loaded and not
	found in Java source code.
	(java_check_regular_methods, java_check_abstract_methods): Don't
	call complete_method_decl anymore.
	(lookup_modifier_cl, not_builtin_p): Functions deleted.
	(read_import_dir): Got rid of the pass number dependency.
	(declare_local_variables): New handling of unresolved types (patch
	issued).
	(source_start_java_method): New parameter level. Function called
	with level set to 1 when argument types are potentially
	unresolved.  Called to complete the job with level set to 2 once
	types are complete.
	(source_end_java_method): Call to permanent_allocation
	removed. Waiting to be replaced by a more suitable obstack
	management.
	(java_complete_expand_methods, java_complete_expand_method,
	java_expand_finals): New functions.
	(build_method_invocation_stmt): Renamed
	patch_method_invocation_stmt. Extracts function call expression
	(wfl) and arguments (args) from CALL_EXPR tree operands.
	(build_invoke): Renamed patch_invoke. Fixed typo in fatal
	call. Patch the function and argument operand of the CALL_EXPR
	tree argument.
	(patch_argument, java_complete_tree): New functions.

1998-04-20  Per Bothner  <bothner@cygnus.com>

	Recover from missing fields and methods (i.e. error instead of fatal).
	* decl.c, java-tree.h (TYPE_identifier_node):  New global constant.
	* expr.c (expand_invoke):  Recover from missing method.
	(expand_java_field_op):  Recover from missing field.
	Inline references to java.lang.{Integer,Char,...}.TYPE.
	* typeck.c (get_type_from_signature), java-tree.h:  New function.
	* class.c (add_method):  Use get_type_from_signature.
	(build_class_ref):  Handle a class that was not found.
	* typeck.c (convert):  Handle conversion to pointers (for convenience).
	* verify.c (verify_jvm_instructions):  Use get_type_from_signature
	instead of lookup_field to handle missing fields.

	* jcf-parse.c (process_zip_dir):  Set java_source.

1998-04-20  Brendan Kehoe  <brendan@cygnus.com>

	* jcf-parse.c (set_source_filename): Use TYPE_NAME, not DECL_NAME.

1998-04-14  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c (load_class): Don't change input_filename before
	calling jcf_parse_source (but still do it before calling
	jcf_parse).
	(jcf_parse_source): Assign input_filename after having saved the
	parser context.
	* lex.c (java_init_lex): Chain a WFL node to the import on demand
	list. ctxp->modifier_ctx zeroed according to its new
	definition. ctxp->filename initialized. Removed
	JAVA_MODIFIER_CTX_UNMARK.
	(java_unget_unicode): Update the character based column position.
	(java_allocate_new_line): ref_count not used anymore. Always free
	ctxp->p_line. Initialize c_line->char_col to 0.
	(java_get_unicode): Update the character based column position.
	(java_lex): Use ctxp->elc to store current position in source
	file, at the beginning of the parsed token. Set modifier_ctx entry
	corresponding to the parse modifier to a WFL node. Return a WFL
	node when an identifier is parsed.
	(java_lex_error): Now uses ctxp->elc to store current position in
	source.
	(build_wfl_node, java_is_eol, java_get_line_col): New functions.
	* lex.h (build_wfl_node): New function definitions.
	(struct java_line): ref_count and next fields are gone. New field
	char_col.
	(JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
	JAVA_LINE_UNMARK, ID_NAME, ID_CL): Macro definitions deleted.
	(JAVA_COLUMN_DELTA): New macro.
	(java_lc): New typedef on new struct _java_lc.
	* parse.h (lookup_cl, lookup_modifier_cl): Changed returned types.
	(parse_error_context, parse_warning_context): Changed prototypes.
	(java_get_line_col): Added as an available global function.
	(JAVA_MODIFIER_CTX_UNMARK): Macro removed.
	(IC_DECL): Replaced by macro IC_TYPE
	(DEPEND_WFL): New macro.
	(THIS_MODIFIER_ONLY): Now works with WFL and only remembers the first
	wrong modifier.
	(exit_java_complete_class): Removed a commented out statement.
	(struct parser_ctxt): Added comments on fields. modifier_ctx is
	now an array of tree nodes. Deleted fields line_list and
	e_line. New field elc, to replace e_line.
	* parse.y (array_type:): Build WFL node.
	(qualified_name:): Build a single WFL node out of two. Retain
	the location information of the first node in the resulting node.
	(package_declaration:): Use package name as a WFL node
	(single_type_import_declaration:): Use imported name as a WFL node.
	(type_import_on_demand_declaration:): Use root of the imported
	packages as a WFL node.
	(field_declaration:): Removed unused local variable cl.
	(method_declaration:): Don't call JAVA_MODIFIER_CTX_UNMARK.
	(yyerror): New static elc. Removed static error_line, error_pos.
	New local code_from_source. Save ctxp->elc into elc at the first
	pass. Call java_get_line_col to get a string of the line where
	the error occurred.
	(debug_line): Removed static function.
	(parse_error_context, parse_warning_context): Parameter cl is now
	a WFL node. Use its value to initialize ctxp->elc.
	(redefinition_error): Parameter cl is now a WFL node.
	(parse_add_interface): New parameter wfl. No longer call
	lookup_cl, use wfl instead.
	(check_class_interface_creation): Parameter cl is now a WFL node.
	(maybe_create_class_interface_decl): Likewise.
	(add_superinterfaces): New function.
	(create_interface): Removed local cl, node, super_decl,
	super_decl_type.  Function now uses id as a WFL node. Better
	warning/error report on obsolete or forbidden mix of
	modifiers. Now calls add_superinterfaces to register interfaces.
	(create_class): Removed local cl, node. Local variable id is used
	as a WFL node. Better error report on forbidden modifier
	mix. Uses add_superinterfaces to register interfaces.
	(find_field): Argument cl is now a WFL node. Now store the WFL
	node of a fields that needs to be checked for their
	initialization.
	(method_header): Local variable node non longer used. Local
	variable id replaces cl.
	(check_modifiers_consistency): Local variable cl is now a WFL
	node.
	(method_declarator): Local variable cl replaced by parameter id.
	(parser_qualified_name): Now uses parameter name as a WFL node.
	(parser_check_super_interface): New parameter wfl, for achieve
	greater accuracy during error reports.
	(parser_chain_incomplete_item): New parameter named location. Used,
	along the decl, to construct the incomplete item node.
	(java_complete_class): resolve_class now uses WFL node extracted
	from the incomplete item node. Macro IC_TYPE replaces TREE_PURPOSE
	where appropriate.
	(complete_method_decl): Unresolved function's argument types are WFL.
	(resolve_class): Parameter cl is now a WFL node.
	(resolve_and_layout): Likewise.
	(do_resolve_class): Likewise. Try first to use cl and then do the
	lookup on the decl when calling check_pkg_class_access.
	(complete_class_report_errors): Use IC_TYPE in place of
	TREE_PURPOSE where appropriate. Use DEPEND_WFL on dependency
	instead of doing a lookup over the decl.
	(java_check_final): Use WFL info from field tree list.
	(lookup_cl): Rewritten and returns a statically defined WFL node.
	(lookup_modifier_cl): Now uses information from WFL nodes.
	(process_imports): Likewise.
	(read_import_dir): name and cl arguments replaced by a single WFL
	node. Function modified accordingly.
	(find_in_imports_on_demand): Now uses WFL node.
	(check_pkg_class_access): cl argument is now a WFL node.
	(declare_local_variables): Fixed to use WFL nodes.
	(resolve_expression_name): Likewise.
	(build_method_invocation_stmt): name_combo argument renamed
	wfl. Function modified to use WFL nodes.
	(build_invoke): cl used as a WFL node when calling build_expr_wfl.
	(lookup_method_invoke): cl is now a WFL node. Added missing
	IDENTIFIER_POINTER to class type decl name.

1998-04-14  Dave Brolley  <brolley@cygnus.com>

	* lang.c (init_parse): Now returns char* containing the filename.

1998-04-10  Per Bothner  <bothner@cygnus.com>

	* class.c (layout_class):  Mangle repeated arg types to match cc1plus.

	* decl.c, java-tree.h (integer_four_node):  New INTEGER_CST node.
	* class.c (make_class_data):  If flag_assume_compiled, initial class
	state is CSTATE_PREPARED; make superclass and interfaces direct
	references, rather than constant pool indexes.

1998-04-09  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parser.y: Include flags.h. Removed debug variable pl.
	(method_declaration:): Uses ctxp->parser_ccb_indent instead of pl.
	(block:): Likewise.
	(labeled_statement_nsi:): Generate debug info when reducing
	expression_statement:.
	(check_pkg_class_access): get_access_flags_from_decl invocation
	fixed for new CLASS_* flags location.
	(source_end_java_method): Save/restore parser context when
	entering/leaving this routine. Restore lineno to its right value
	before calling expand_end_bindings.
	(build_method_invocation_stmt): build_invoke called with the
	current line information.
	(build_invoke): New argument cl. Wrap the function call around a
	wfl node.
	(refine_accessible_methods_list): Changed comment, removed
	unnecessary code.
	* parse.h: Fixed typo in comments.
	(CLASS_OR_INTERFACE): Handle the new CLASS_* flags location.
	(JAVA_MAYBE_GENERATE_DEBUG_INFO): New macro.
	(struct parser_ctxt): New fields ccb_indent, last_ccb_indent1,
	parser_ccb_indent.
	* lex.c (java_lex): Record the last closing curly bracket of a
	function.
	* jcf-parse.c (jcf_parse_source): Now calls
	java_check_methods. Clarified comment, fixed typo.

1998-04-09  Dave Brolley  <brolley@cygnus.com>

	* lang.c (init_parse): Expose for non USE_CPPLIB builds.
	(finish_parse): Expose for non USE_CPPLIB builds.

1998-04-08  Jeffrey A Law  (law@cygnus.com)

	* lang.c (lang_print_xnode): New function.

1998-04-03  Per Bothner  <bothner@cygnus.com>

	* decl.c (class_dtable_decl), java-tree.h:  New tree node.
	* class.c (get_dispatch_vector, get_dispatch_table):  New functions
	used to build a class's dispatch table.
	(make_class_data):  Generate dispatch table if flag_assume_compiled.
	Set dtable of class object to address of class_dtable_decl.

	* decl.c (int_decl_processing):  Make soft_badarrayindex_node
	be volatile and have side effects - generates better code.

	* class.c, expr.c, parse.y:  CLASS_INTERFACE, CLASS_FINAL, etc:
	These flags were defined for TYPE_DECLs, but used on RECORD_TYPEs.

	* expr.c (expand_invoke):  If class is final, method is
	effectively final, so can call it directly.

	* java-tree.h (TYPE_NVIRTUALS, TYPE_VTABLE):  New macros.

	* Makefile.in, Make-lang.in:  Add missing $(exeext)s.

1998-03-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (build_method_invocation_stmt): Removed extra argument
	to build_invoke.

1998-03-16  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (dtable_indent): Now static global.
	(expand_invoke): Now call invoke_build_dtable and
	build_invokevirtual.
	(invoke_build_dtable, build_invokevirtual): New functions.
	* jcf-io.c (find_class): Defer issuing a warning by setting
	jcf->outofsynch to 1.
	* jcf-parse.c (jcf_out_of_synch): New function.
	(load_class): Test this_jcf.outofsynch flag and call
	jcf_out_of_synch accordingly.
	* jcf.h: (typedef struct JCF): New flag outofsynch. Fixed typo in
	comment indentation.
	* lex.c (java_get_unicode): Fixed code indentation.
	(java_lex): Create string literal. Fixed typo. Removed several
	premature obstack_free.
	* parse.h: New enums for name resolution and invocation mode.
	(struct qualification): New data structure.
	(RESOLVE_CHAIN_REMAINDER, BUILD_PTR_FROM_NAME): New macros.
	(do_resolve_class, build_method_invocation_stmt,
	breakdown_qualified, qualify_ambiguous_name, resolve_and_layout,
	debug_line, identical_subpath_p, invocation_mode,
	refine_accessible_methods_list, build_invoke,
	lookup_method_invoke): New functions declared.
	(build_invokevirtual, invoke_build_dtable, match_java_method,
	build_field_ref, jcf_out_of_synch): New references to external
	functions.
	(struct parse_ctxt): Removed artificial_constructor field.
	* parse.y: (array_type:): Type defined for this rule.
	(class_type:): Installed default rule for interface_type:.
	(array_type:): Now build Java array type.
	(qualified_name:): Now use obstack_grow0.
	(method_declaration:): Skip the artificial constructor added to
	the list, if any.
	(abstract_method_declaration:): Execute the code only during pass 1.
	(block:): Installed default rule in block_statements:.
	(block_statement:): Add the statement to the method during pass 2.
	(statement_expression): Installed default rule for
	method_invocation:.
	(argument_list:): Added code to build the argument list.
	(method_invocation:): Added call to create the method invocation
	node.
	(yyerror): Now use obstack_grow0. Removed bogus obstack_free.
	(debug_line): New function for debug.
	(complete_class_decl): No longer do something during pass 1.
	(method_header): Use BUILD_PTR_FROM_NAME.
	(parser_qualified_classname): Use obstack_grow0. Removed bogus
	obstack_free.
	(parser_chain_incomplete_item): Use BUILD_PTR_FROM_NAME. Modified
	function's main comment.
	(java_complete_class): Set CLASS_LOADED_P on all fixed incomplete
	classes.
	(complete_method_decl): Use BUILD_PTR_FROM_NAME and promote types.
	(resolve_class): Now works with arrays.
	(do_resolve_class, resolve_and_layout): New functions.
	(java_check_regular_methods): Reverse method list before and after
	having processed it. No longer set ctxp->artificial_constructor.
	(read_import_dir): Test jcf->outofsynch and call jcf_out_of_synch
	accordingly. Fixed typo in issued error message. Now use
	obstack_grow0.
	(find_in_imports_on_demand): Now use obstack_grow0.
	(declare_local_variables): Use BUILD_PTR_FROM_NAME.
	(source_end_java_method): Call expand_expr_stmt instead of
	expand_expr. Calls it before calling expand_function_end.
	(java_method_add_stmt): Do nothing if errors were found during
	parsing.
	(java_layout_parsed_class): Set CLASS_LOADED_P and fixed typo.
	(build_method_invocation_stmt, build_invoke, invocation_mode,
	lookup_method_invoke, refine_accessible_methods_list,
	qualify_ambiguous_name, breakdown_qualified, identical_subpath_p):
	New functions.
	* typeck.c (build_java_signature): Properly end method signature
	if return type skipped.
	(match_java_method): New function.

1998-03-16  Per Bothner  <bothner@cygnus.com>

	* jcf-io.c (find_classfile):  If USE_JCF_STDIO, fopen in binary mode.

1998-02-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (build_invoke_non_interface): New function.
	(methods_ident, ncode_ident): Now static globals.
	(expand_invoke): Use build_invoke_non_interface.
	* java-tree.h (struct lang_decl): New field function_decl_body.
	(DECL_FUNCTION_BODY): New macro.
	* jcf-parse.c (jcf_parse_source): Deeper check before setting
	CLASS_FROM_SOURCE_P.
	(parse_source_file): Fixed typos. Call java_layout_parsed_class
	before starting pass 2. Call to java_generate_parsed_class replaced
	by java_register_parsed_class.
	* lex.c: Fixed typo in header. Some line width related formating.
	* lex.h: Some line width related formating.
	* parse.h (source_end_java_method, resolve_expression_name,
	complete_class_decl, maybe_create_class_interface_decl,
	check_class_interface_creation): New static function declarations.
	(java_layout_parsed_class, java_method_add_stmt): New function
	declarations.
	(struct parser_ctxt): Field mark_class_generate removed. New
	fields class_list and artificial_constructor.
	* parse.y: Fixed typo in header.
	(class_declaration:): Call complete_class_decl when class body
	parsed.
	(method_declaration:): Call source_end_java_method in pass 2 when
	the method body is defined.
	(postfix_expression:): Do expression name resolution on sub-rule
	name during pass 2.
	(create_class, create_interface): Merged common pieces.
	(check_class_interface_creation, maybe_create_class_interface_decl):
	New functions.
	(complete_class_decl): New function.
	(register_fields): Fixed line width related typo.
	(method_header): Correctly skip first argument when fixing
	argument line. Changed the loop.
	(java_check_circular_reference): Now use ctxp->class_list.
	(java_complete_class): Removed start/stop marking.
	(java_check_regular_methods): Now takes a class decl as an
	argument.  Add default constructor if none were encountered.
	(java_check_methods): Now use ctxp->class_list. Changed call to
	java_check_regular_methods.
	(source_start_java_method): Set DECL_ARG_TYPE for each function
	arguments.
	(source_end_java_method, java_method_add_stmt): New functions.
	(java_generate_parsed_class): No longer exists.
	(java_layout_parsed_class, java_register_parsed_class): New functions.
	(resolve_expression_name): New function.

1998-02-12  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-parse.c: (parse_source_file): Check on errors after init lex.
	* lex.c: (java_init_lex): Defer ctxp->java_pass initialization
	until pass initializations are done. Call read_import_dir with
	pass set to 0.
	* parse.h: (lookup_modifier_cl): New function declared.
	(INTERFACE_FIELD_MODIFIERS): New macro.
	(OBSOLETE_MODIFIER_WARNING): New macro.
	* parse.y: (register_fields): Class type and current field name in
	local variables. Check modifier(s) if adding field(s) to an interface.
	(check_abstract_method_header): Now use OBSOLETE_MODIFIER_WARNING
	and report errors using the faulty modifier line context.
	(lookup_modifier_cl): New function.
	(read_import_dir): Detect and report default import processing
	failure.

1998-02-11  Brendan Kehoe  <brendan@cygnus.com>

	Add a pair of -fassume-compiled/-fno-assume-compiled options.
	* class.c (is_compiled_class): Return 1 after making sure it
	qualifies as loaded, if FLAG_ASSUME_COMPILED is set.
	* lang-options.h: Add -fassume-compiled/-fno-assume-compiled.
	* java-tree.h (flag_assume_compiled): Add decl.
	* lang.c (lang_f_options): Add the flag.
	(flag_assume_compiled): Add decl, default to 0.

1998-02-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (class_depth): Call to load_class uses extra VERBOSE arg.
	(is_compiled_class): Likewise.
	(layout_class): Likewise.
	(layout_class): Detect and lay out classes defined in source code.
	(interface_of_p, add_interface_do, may_add_interface): New
	function.
	(add_interface): Now use add_interface_do.
	(add_method_1): New function.
	(add_method): Now use add_method_1.
	(pushlevel): Debug message conditional to SOURCE_FRONTEND_DEBUG.
	(complete_start_java_method): New function.
	(start_java_mehod): Now call complete_start_java_method.
	* expr.c (lookup_field): Call to load_class uses extra VERBOSE arg.
	(expand_invoke): Likewise and fixed typo.
	*gjava.c: (print_super_field): Use new argument to find_class
	DO_CLASS_FILE.
	(main): Likewise.
	*java-tree.h: (CLASS_FROM_SOURCE_P): New flag on RECORD_TYPE.
	(IS_A_SINGLE_IMPORT_CLASSFILE_NAME_P, IS_A_CLASSFILE_NAME,
	QUALIFIED_P, IS_AN_IMPORT_ON_DEMAND_P): New flags on
	IDENTIFIER_NODE.
	(CLASS_COMPLETE_P): New flag on TYPE_DECL.
	(add_method_1, push_class): New prototypes.
	*jcf-dump.c: find_class now uses new DO_CLASS_FILE argument.
	*jcf-io.c: (open_in_zip): jcf now stores a pointer to the Zip
	directory where the class was found.
	(find_class): New argument DO_CLASS_FILE. Function find_class
	modified accordingly.
	*jcf-parse.c: (fix_class_path): New function.
	(load_class): Use new VERBOSE argument. load_class now finds and
	loads/parses .class/.java files. Save read_state of current_jcf
	if necessary.
	(java_parser_abort_on_error): New macro.
	(jcf_parse_source, parse_source_file): New function.
	(jcf_parse): Fixed typo.
	(yyparse): Call parse_source_file () only.
	(process_zip_dir): Fixed typo, fix zdir->filename_length when
	writing the real class name back in the zip directory entry.
	(find_in_current_zip): IDENTIFIER_CLASS_VALUE may be null.
	(jcf_figure_file_type): Fixed bogus alloc and bcopy.
	*jcf.h: (typedef struct JCF): New fields java_source and zipd.
	(find_class): Prototype fixed.
	*lex.c: Added 1998 time stamp.
	Removed all static global variables, moved into the parser
	context data structure.. Now include unistd.h if SEEK_SET not
	defined.
	(java_init_lex): Rewritten.
	(java_sneak_unicode): Modified current unicode access in current line.
	(java_unget_unicode): Likewise.
	(java_allocate_new_line): New allocation management.
	(java_read_char): Modified access and storage of unget_utf8_value.
	New way of processing current unicode.
	(java_store_unicode, java_read_unicode): Fixed typo in declaration.
	(java_get_unicode): Now use the parser context.
	(java_lineterminator): Likewise.
	(java_lex): Now used java_lval argument (pointer to YYSTYPE), part
	of the reentrant parser implementation. Function now use the
	parser context data structure and java_lval. Fixed production of
	the float and double constant "out of range" error message. Fixed
	obstack use. Return integer value when hitting a modifier. Now
	return type for TRUE, FALSE and other predefined types. Return
	identifier as a TREE_LIST list containing the current line context
	as the TREE_VALUE sub-node.
	(java_unicode_2_utf8): Fixed typo in declaration.
	(java_lex_error): Now use the parser context data structure.
	*lex.h: Added 1998 time stamp.
	(struct java_line): New fields ref_count and next.
	(JAVA_LINE_CHECK, JAVA_LINE_MARK, JAVA_LINE_CHAIN,
	JAVA_LINE_UNMARK, ID_NAME, ID_CL): New macros.
	(JAVA_FLOAT_RANGE_ERROR, JAVA_INTEGRAL_RANGE_ERROR, UNGETC): Fixed.
	*parse.h: Added 1998 time stamp.
	(java_parse_source_file): Renamed from parse_source_file.
	(YYERROR_NOW, YYNOT_TWICE): Fixed.
	(CLASS_MODIFIERS, FIELD_MODIFIERS, METHOD_MODIFIERS,
	INTERFACE_MODIFIER, INTERFACE_METHOD_MODIFIERS,
	JAVA_MODIFIER_CTX_UNMARK, IC_DECL, IC_DEPEND, DEPEND_DECL,
	THIS_MODIFIER_ONLY, ABSTRACT_CHECK, BEGIN_ONLY_PASS,
	END_ONLY_PASS, ELSE_ONLY_PASS, exit_java_complete_class,
	CLASS_OR_INTERFACE, INCOMPLETE_P): New macros.
	(struct parser_ctxt): New data structure to keep the parser context.
	*parse.y: Added 1998 time stamp, got rid of static global variables.
	(java_error_count, ctxp): New global variables.
	(%union): New value field.
	(numeric_type, integral_type): Rules removed.
	(primitive_type): Rule defined to handle integral, float, double and
	boolean types.
	(qualified_name, package_declaration,
	single_type_import_declaration, type_import_on_demand_declaration,
	modifiers, class_declaration, super, interfaces,
	interface_type_list, class_body, field_declaration,
	field_declaration, variable_declarators, variable_declarator,
	variable_declarator_id, method_declaration, method_header,
	formal_parameter_list, formal_parameter, method_body, block,
	static, interface_declaration, extends_interfaces,
	abstract_method_declaration, local_variable_declarators): Rules now
	define actions.
	(force_error, do_warning): New global statics.
	(push_parser_context, parser_context_save_global,
	parser_context_restore_global, pop_parser_context): New functions.
	(yyerror): Now uses the global parser context. Fixed use of obstack.
	(parse_error, parse_error_context, parse_warning_context,
	java_accstring_lookup, redefinition_error, check_modifiers,
	parser_add_interface, create_interface, create_class, find_field,
	duplicate_declaration_error, register_fields, method_header,
	check_modifiers_consistency, check_abstract_method_header,
	method_declarator, parser_qualified_classname,
	parser_check_super_interface, parser_check_super,
	parser_chain_incomplete_item, java_check_circular_reference,
	layout_class_from_source, java_complete_class,
	complete_method_decl, resolve_class, complete_class_report_errors,
	java_check_final, check_method_redefinition,
	java_check_regular_methods, java_check_abstract_methods,
	java_check_methods, lookup_java_interface_method2,
	lookup_java_method2, lookup_cl, find_name_in_single_imports,
	process_imports, find_in_imports, read_import_entry,
	read_import_dir, find_in_imports_on_demand,
	check_pkg_class_access, not_builtin_p, declare_local_variables,
	source_start_java_method, java_generate_parsed_class): New
	functions.
	*typeck.c: (signature_include_return): New global variable.
	(build_java_signature): Use SIGNATURE_INCLUDE_RETURN figure whether
	to add the function returned type in the signature.

1998-02-09  Brendan Kehoe  <brendan@cygnus.com>

	* jcf-io.c (open_in_zip): Use strncmp and LEN.

1998-01-29  Dave Brolley  <brolley@cygnus.com>

	* Make-lang.in (java.info): Added.
	(java.install-info): Added

1998-01-27  Brendan Kehoe  <brendan@cygnus.com>

	* Makefile.in (clean): Also remove java/parse.c.

1998-01-26  Brendan Kehoe  <brendan@cygnus.com>

	Add a pair of -fbounds-check/-fno-bounds-check options.
	* lang.c (lang_decode_option): Add code to grok arguments.
	(flag_bounds_check): Add decl.
	(lang_f_options): New array w/ the option in it.
	* java-tree.h (flag_bounds_check): Add decl.
	* lang-options.h: New file.
	* expr.c (build_java_arrayaccess): Use flag_bounds_check instead
	of a static macro value.
	(JAVA_ARRAY_EXCEPTION): Delete macro.

1998-01-23  Per Bothner  <bothner@cygnus.com>

	* typeck.c (build_java_array_type):  Fix two bugs in previous change.
	* expr.c (build_anewarray):  Add missing promote_type.

1998-01-22  Per Bothner  <bothner@cygnus.com>

	Add array types with known length to optimize bounds checking.
	* typeck.c (build_java_array_type):  Take length parameter.
	(java_array_type_length, build_prim_array_type):  New functions.
	* java-tree.h:  Update for new functions.
	* expr.c, typeck.c, verify.c: Update build_java_array_type calls.
	* class.c:  Use build_prim_array_type.
	* expr.c (can_widen_reference_to):  Handle known-length array types.
	(verify_jvm_instructions):  Keep track of integer push instructions
	followed by newarray/anewarray, so we can build known-length arrays.
	(JAVA_ARRAY_DATA_OFFSET):  Replace by ...
	(java_array_data_offset):  New function.
	(build_java_array_length_access):  New function.  Optimize if constant.
	(build_java_arrayaccess):  Constant fold bounds check.
	(expand_java_newarray, expand_java_anewarray):  Replaced by ...
	(build_newarray, build_anewarray):  New functions.
	(ARRAY_NEW_NUM, ARRAY_NEW_PTR):  Use build_{a,}newarray.
	* verify.c (merge_types):  Handle known-lengh array types.

1998-01-19  Per Bothner  <bothner@cygnus.com>

	* expr.c (expand_byte_code):  Fix performace bug, which caused
	searching linenumber_table to be linear rather than constant.

1997-12-12  Per Bothner  <bothner@cygnus.com>

	* Makefile.in (BISON, BISONFLAGS):  Add missing macros.

	* decl.c, java-tree.h (soft_fmod_node):  New global.
	* decl.c (init_decl_processing):  Define __builtin_fmod.
	* expr.c (build_java_binop):  Implement TRUNC_MOD_EXPR for REAL_TYPE
	using __builtin_fmod.

1997-12-04  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* keyword.h: New file, output of keyword.gperf as processed by
	gperf.
	* lex.c (java_lex_init): Initialize java_error_flag.
	* parse.c (YYERROR_NOW): Uses java_error_flag.
	* parse.y: New static java_error_flag. Useless definition of
	buffer_error gone.
	* parse.y (java_error): Portable error recovery using
	java_error_flag	(not yet completely tuned).

1997-12-04  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* Makefile.in (parse.c): Use $(srcdir) for parse.y.

1997-12-03  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* Makefile.in: (JAVA_OBJS): New object jcf-parse.o.
	(parse.c, lex.c, keyword.h): New rules for Java source code
	front-end.
	* parse.c: Renamed into jcf-parse.c.
	* jcf-parse.c (yyparse): Invoke the parser to process Java source code.
	* keyword.gperf: New file, Java keywords.
	* parse.y: New file, Java language grammar.
	* parse.h: New file, Java language grammar definitions.
	* lex.c: New file, Java language lexer.
	* lex.h: New file, Java language lexer definitions.

1997-12-03  Per Bothner  <bothner@cygnus.com>

	* decl.c (clinit_identifier_node), java-tree.h:  New global.
	* java-tree.h (IS_METHOD_INIT_P, IS_METHOD_CLINIT_P):  Removed.
	* verify.c (verify_jvm_instructions):  Inline use of removed macros.
	* expr.c (expand_java_field_op):  Check for invalid assignment
	to final field.

	* jcf-reader.c (get_attribute):  Test for wrong attribute length.

1997-10-27  Per Bothner  <bothner@cygnus.com>

	* verify.c (verify_jvm_instructions):  When processing a handler,
	attempt to set the current_subr to the right value.
	(More complicated code combines Sep 17 and Oct 22 versions.)

1997-10-24  Per Bothner  <bothner@cygnus.com>

	* class.c (push_class):  Figure out (guess) name of source file.
	* parse.c  (set_source_filename):  Set DECL_SOURCE_FILE of class decl.
	(give_name_to_class):  Don't guess source name;  use DECL_SOURCE_FILE.
	(parse_class_file):  Change return type from int to void.
	Call debug_start_source_file/debug_end_source_file.

	* expr.c (build_java_binop):  Fix masking 2nd operand.
	* decl.c (init_decl_processing):  Set sizetype first.

1997-10-22  Per Bothner  <bothner@cygnus.com>

	* verify.c (verify_jvm_instructions):  Don't set current_subr to NULL.
	(Revert Sep 17 change.)

1997-10-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.c (process_zip_dir): Skip ZIP entries not bearing the
	.class extension in their name and fix thing so we don't process
	them parse_zip_file_entries().
	(parse_zip_file_entries): Cleaned unused local variables.

1997-10-20  Per Bothner  <bothner@cygnus.com>

	* expr.c (can_widen_reference_to):  Allows equal array element types.
	(expand_byte_code):  PRE_RET must expand OPERAND_VALUE (to get index).
	* jcf-dump.c (RET):  Get (and print) index.

	* verify.c (verify_jvm_instructions case OPCODE_anewarray):
	Promote element type to POINTER_TYPE.

1997-10-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* jcf-reader.c, parse.c: (parse_zip_file, process_zip_dir,
	find_in_current_zip, jcf_figure_file_type): Moved from
	jcf-reader.c to parse.c.
	* zextract.c: (read_zip_archive): takes file_comment_length possible
	field into account.

1997-10-20  Per Bothner  <bothner@cygnus.com>

	* verify.c (verify_jvm_instructions):  Var can also be promoted to int.

	* verify.c (merge_types):  Handle array types even better ...

1997-10-17  Per Bothner  <bothner@cygnus.com>

	* expr.c (java_stack_pop):  Fix use of NULL_TREE for TYPE_SECOND.

	* java-tree.h (PUSH_FIELD):  Set DECL_ARTIFICIAL.
	* class.c (make_class_data):  Don't build fields_decl if no fields.
	When building fields_decl, skip if DECL_ARTIFICIAL.

	* expr.c (java_stack_swap):  Update stack_type_map.
	* verify.c (merge_types):  Handle array types better.

1997-10-15  Per Bothner  <bothner@cygnus.com>

	* class.c (add_field):  Don't promote short integral fields to
	int any more (unless JAVA_PROMOTE_TO_INT), since Kaffe doesn't.
	* expr.c (push_value):  Promote and convert short integral values.

	* decl.c, java-tree.h (integer_two_node):  New constant node.
	* verify.c (merge_types):  Check for TYPE_RETURN_ADDR.

1997-10-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (append_gpp_mangled_type): Use function argument
	unpromoted type to generate mangled name.

1997-10-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* constants.c (build_constant_data_ref): Now uses current_class
	instead of main_class.
	(build_constants_constructor): Now uses current_class instead of
	main_class.
	* zipfile.h: (struct ZipFileCache): Now defined here. Declaration
	of the global variable SeepZipFiles done here.
	* zextract.c (read_zip_archive): extra_field optional field taken
	into account while computing the position of the class file in the
	archive.
	* verify.c (verify_jvm_instructions): Use current_jcf to search
	the constant pool.
	* parse.c (load_class): First search for the class to load in the
	current zip file. Saves current_jcf (restored before returning
	from that function). Don't call JCF_FINISH in the class was found
	in the current ZIP file.
	(jcf_parse): If the class was found in the current ZIP file, save
	its tree_constant_pool (for later reuse).
	(parse_class_file): New function. Process each method defined in
	the current class and record the class as to be later registered.
	(yyparse): Rewritten. Figure the type of the current file and switch
	accordingly.
	* lang.c: New global variable current_jcf.
	(lang_init): Removed compiling_from_source test (done later, in
	yyparse). Removed call the jcf_parse ().
	* jcf.h (JCF_ZIP, JCF_CLASS, JCF_SOURCE): New defined values.
	(typedef struct JCF): New fields seen_in_zip (to mark a class found
	in the current ZIP file) and zip_offset (offset to the class data in
	the current zip file).
	* jcf-reader.c: zipfile.h included.
	localToFile: New ZipFileCache static global variable
	(parse_zip_file_entries): New function. Browse the current ZIP
	file directory and process each class found.
	(process_zip_dir): New function. Register each class found in the
	ZIP file directory. The class aren't parsed but a valid JCF is
	link to each of them.
	(find_in_current_zip): New function. Search for a class in the
	current ZIP file directory. If found, prepare the class so that it
	can be loaded.
	(jcf_figure_file_type): New function. Examine the file structure
	to figure a class file, a ZIP file. If none of these categories are
	matched, a source file is assumed.
	* jcf-io.c: Removed definition of ZipFileCache (moved in zipfile.h).
	SeenZipFile: New global variable.
	(open_in_zip): Use zipmember's length to accelerate the search for
	a member. If zipmember was NULL and zip file successfully read,
	return 0.
	* java-tree.h: New global variable current_jcf declared.  Added
	declaration for current_constant_pool_tags, current_constant_pool_data,
	current_constant_pool_length, current_constant_pool_data_ref.
	(struct lang_type): Augmented with two fields. struct JCF *jcf (to
	store the JCF of classes seen in a zip file) and tree *constant_pool
	(to save a loaded class constant pool). current_class declared here.
	* expr.c (expand_invoke): Use current_jcf instead of main_jcf to
	retrieve method_ref_constant.
	(PUSHC): java_push_constant_from_pool now uses current_jcf.
	(OBJECT): get_class_constant now uses current_jcf.
	(ARRAY_NEW_PTR): get_class_constant now uses current_jcf.
	(ARRAY_NEW_MULTI): get_class_constant now uses current_jcf.
	(expand_invoke): Now uses current_class instead of main_class
	(build_class_init): Now uses current_class instead of main_class
	* class.c: New static global variable registered_class.
	(register_class): New function.
	(emit_register_class): Modified to use registered_class instead of
	main_class
	(is_compiled_class): Now take into account class seen in the archive.

1997-10-06  Per Bothner  <bothner@cygnus.com>

	* except.h:  Renamed to: java-except.h.
	* parse.c, except.c, expr.c, verify.c:  Update #include accordingly.
	* except.c:  Add semi-working (commented out) implementation.

	* expr.c (expand_iinc):  Add needed flush_quick_stack.
	* parse.c (set_source_filename):  New function.
	(give_name_to_class):  Set input_filename from package.classname.java.

	* jcf-io.c (find_class):  Don't look first in ".".

1997-10-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* zextract.c (read_zip_archive): Now takes into account the
	extra_field field.
	* expr.c (can_widen_reference_to): Modified to handle sub-interfaces.

1997-09-20  Per Bothner  <bothner@cygnus.com>

	* constants.c, java-tree.h (build_internal_class_name):  New function.
	(alloc_class_constant):  Re-implement using build_internal_class_name.
	* class.c (make_class_data):  Likewise.
	* class.c (hashUtf8String):  Make hash algorithm match String.hashCode.

1997-09-17  Per Bothner  <bothner@cygnus.com>

	* verify.c (verify_jvm_instructions):  Temporarily set current_subr
	to NULL before pushing an exception handler target.

	* expr.c (flush_quick_stack):  Save from low stack indexes to high.
	(java_stack_swap, java_stack_dup):  Re-write to be safe from
	clobbering registers.
	(build_class_init):  New function.

1997-09-17  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* typeck.c (build_java_array_type): Temporary use
	permanent_obstack to create the array 'length' field.
	* expr.c (lookup_label): Temporay use permanent_obstack to create
	label if not found.
	* class.c (push_super_field): Tempory use permanent_obstack.

1997-09-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* typeck.c (type_for_mode): Now handles double_type_node and
	float_type_node.
	* verify.c (verify_jvm_instructions): The instruction following
	the wide bytecode is checked. OPCODE_ret added to the list of
	wide.

1997-09-11  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (make_class): Temporary use permanent_obstack. Set the
	class CLASS_P field to 1.
	(push_class): Temporary use permanent_obstack.
	(set_super_info): Temporary use permanent_obstack.
	(add_method): Temporary use permanent_obstack, set
	METHOD_TRANSIENT().
	(add_field): Temporary use permanent_obstack. Sets
	FIELD_VOLATILE() and FIELD_TRANSIENT().
	(build_class_ref): Temporary use permanent_obstack if the class
	isn't compiled.
	(build_static_field_ref): Temporary use permanent_obstack when
	creating field's rtl.
	(get_access_flags_from_decl): Handle ACC_VOLATILE, ACC_TRANSIENT,
	ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT flags for methods
	and fields. Function finalized, as far as flag handling.
	(push_class_static_dummy_field): Temporary use permanent_obstack.
	(emit_register_class): Force generation of class registration at
	-O3 or deeper.
	* decl.c (end_java_method): Call permanent_allocation() before
	returning.
	* expr.c (can_widen_reference_to): Added comment to interface
	handling, fixed typo.
	(lookup_field): Now uses CLASS_P() to correct FIXME
	(expand_invoke): Verification on public && !static &&
	!abstract moved into soft_lookupinterfacemethod (kaffe).
	Use Object class dtable if objectref is an array when expanding
	invokeinterface.
	(java_push_constant_from_pool): Temporary use permanent_obstack
	for CONSTANT_string
	* parse.c (get_ref_constant): Temporary use permanent_obstack to
	create constant references.
	(get_constant): Temporary use permanent_obstack to create constant.
	(load_class): Temporary use permanent_obstack to load class.
	(jcf_parse): Temporary use permanent_obstack to perform class
	layout.
	* typeck.c: (parse_signature_string): Temporary use permanent_obstack.
	(build_java_signature): Temporary use permanent_obstack.
	* verify.c: (verify_jvm_instruction): removed unnecessary verification
	on ACC_SUPER flag.
	* java-tree.h (METHOD_NATIVE, METHOD_TRANSIENT): Defined.
	(FIELD_VOLATILE, FIELD_TRANSIENT): Defined.
	(CLASS_P): Defined

1997-09-11  Per Bothner  <bothner@cygnus.com>

	* class.c (append_gpp_mangled_type):  Fix typo.
	(emit_register_class):  Use main_class to get class object, rather
	than looking for no-longer-existing static decl starting with _CL.
	* typeck.c (parse_signature_type):  Promote array element type
	if it is a RECORD_TYPE.

1997-09-10  Per Bothner  <bothner@cygnus.com>

	* class.c (push_class_static_dummy_field):  New function.
	(mangle_static_field):  New. Do G++-style mangling of static fields.
	(layout_class):  Mandle static fields here, not in add_field.
	(build_class_ref):  The class object is now a dummy static field.
	* decl.c (find_local_variable):  Look for best, instead of first match.
	* expr.c (push_type):  Always promote_type, not just for RECORD_TYPE.
	(build_java_athrow):  Don't check here if exception is Throwable.
	* java-tree.h (TYPE_UNSET):  Renamed to TYPE_UNKNOWN.
	(TYPE_USED):  Removed.  No longer used ...
	* parse.c (jcf_parse):  Call push_class_static_dummy_field.
	* verify.c (push_pending_label):  New function.
	(push_pending_block):  Renamed to check_pending_block.
	(merge_types):  Remove unneeded suuport for TYPE_UNUSED.
	(verify_jvm_instructions):  Only reset prev_eh_ranges (to force
	re-checking possible handlers) after a store (less wasted work).
	Check for null handler (finally) before calling add_handler.
	Various changes to (finally?) correctly handle try/finally.

1997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* class.c: Include stdio.h.

1997-09-04  Per Bothner  <bothner@cygnus.com>

	* expr.c (expand_invoke):  Use COMPOUND_EXPR (and TREE_SIDE_EFFECTS)
	to make sure class is initialized before static/special invoke.

	* verify.c (verify_jvm_instructions):  On a store instruction,
	call find_local_variable to force pre-allocation of decl and rtx.
	* decl.c (push_jvm_slot):  Set DECL_REGISTER on stack slots.

1997-09-03  Per Bothner  <bothner@cygnus.com>

	* class.c (build_class_ref):   Strip off "promoted_" if need be.
	(make_field_value): Call build_java_signature when needed.
	(layout_class):  Don't make_function_rtl if METHOD_ABSTRACT.
	* expr.c (build_java_athrow):  Don't push_value of exception.
	(build_java_binop):  Implement COMPARE_L_EXPR and COMPARE_G_EXPR to
	match specification of [fd]cmp[lg] for NaNs.
	(expand_byte_code):  Add support for exception handler ranges.
	* except.c:  Add skeleton for EH code-generation.
	* verify.c (merge_types):  Treat all promoted integral types as equal.
	* constants.c (build_constants_constructor):  To force creation of
	current_constant_pool_data_ref, call build_constant_data_ref.

	* javaop.def (lload):  Fix typo.
	* jcf-dump.c (main):  Clear filename to prevent possibly-bad free.

1997-09-02  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* parse.c: Don't include function.h.

1997-08-27  Per Bothner  <bothner@cygnus.com>

	* except.[ch]:  New files.
	* Makefile.in (JAVA_OBJS):  Add except.o
	* expr.c:  Temporary warning about unimplemented exceptions.
	* verify.c:  Verify exception handlers.

	* jcf-dump.c (disassemble_method):  Print exception table.

1997-08-27  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (verify_jvm_instructions): Started a thorough
	verification of invoke* bytecodes.
	(expand_byte_code): flush quick stack if PC is the target of a
	branch.  and undef RET (conflicting with config/i386/i386.h).
	(expand_java_arrayload): Fixed bogus cast, when Boolean type is
	used.
	(expand_invoke): Now handles invokeinterface and do more
	verification according to the bytecode.
	(lookup_field): Don't try to load the class if processing
	dtable_type.
	(can_widen_reference_to): Now handles interfaces.
	* decl.c (init_decl_processing): New global variable
	soft_lookupinterfacemethod_node, declared in java-tree.h.
	Call set_super_info on string_type_node.
	* java-tree.h (CLASS_INTERFACE, CLASS_ABSTRACT, CLASS_SUPER): Now
	defined.
	* class.c (set_super_info): Fills the CLASS_* flags according to
	access_flags.
	(get_access_flags_from_decl): Handles all class flags.

1997-08-26  Per Bothner  <bothner@cygnus.com>

	* class.c (add_method):  Zero out newly-allocated DECL_LANG_SPECIFIC.
	* parse.c (yyparse):  Check for abstract method, and missing code.
	* expr.c (expand_byte_code):  Change interface.
	* lang.c (put_decl_node):  Print promoted types prettier.
	* verify.c (verify_jvm_instruction):  Change interface.
	Partial support for scanning exception table.
	For load instructions, handle promoted integral types.

1997-08-21  Per Bothner  <bothner@cygnus.com>

	* verify.c:  New file, with contents moved from expr.c.
	* expr.c:  Bunch of stuff (mostly verification) moved to verify.c.
	* typeck.c (is_array_type_p):  Moved here from expr.c.
	* java-tree.h:  Add some now-needed function declarations.
	* Makefile.in (JAVA_OBJS): Added verify.o.

1997-08-20  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* class.c (add_method): Sets the METHOD_SYNCHRONIZED flag, sets the
	METHOD_ABSTRACT flag.

	* java-tree.h (METHOD_SYNCHRONIZED): Set to DECL_LANG_FLAG_4.
	(IS_METHOD_CLINIT_P, IS_METHOD_INIT_P): New macros.
	(METHOD_ABSTRACT): Set to DECL_LANG_FLAG_5

	* decl.c (soft_monitorenter_node, soft_monitorexit_node): New global
	variables.
	(start_java_method): Hook for SYNCHRONIZED methods.

	* expr.c (build_java_jsr, build_java_ret): New functions
	(JSR,PRE): New macros
	(PRE_TABLE_SWITCH, PRE_LOOKUP_SWITCH): Fixed and secured.
	(verify_jvm_instructions): tableswitch, lookupswitch,
	monitorenter, monitorexit, goto_w: verified.
	(LOOKUP_SWITCH, TABLE_SWITCH): Fixed generation of default: label
	(build_java_monitor): New function.
	(MONITOR_OPERATION): Modified to call build_java_monitor()
	(verify_jvm_instructions): Started a thorough verification of
	invoke* bytecodes.

1997-08-19  Per Bothner  <bothner@cygnus.com>

	Support verification of jsr/ret subroutines (used for try/finally).
	* decl.c (return_address_type_node):  New type node.
	* java-tree.h (LABEL_RETURN_LABEL, LABEL_RETURN_TYPE_STATE,
	RETURN_MAP_ADJUSTED, LABEL_RETURN_LABELS, LABEL_IN_SUBR,
	LABEL_SUBR_START, LABEL_SUBR_CONTEXT, BCODE_VERIFIED):  New macros.
	(TYPE_UNSET, TYPE_SECOND, TYPE_NULL, TYPE_RETURN_ADDR, TYPE_UNUSED,
	TYPE_USED):  New macros for special types in type_map.

	* java-tree.h (BCODE_JUMP_TARGET):  Renamed to BCODE_TARGET.
	(BCODE_BACKWARDS_TARGET, CODE_FORWARDS_TARGET):  Replaced by
	BCODE_JUMP_TARGET.
	* expr.c (expand_byte_code):  Fix logic to warn of unused instructions.

	* expr.c (can_widen_reference_to):  New function.
	(pop_type):  Use it.
	(merge_type_state):  Support handling start of subroutine.
	(push_pending_block):  Return char* error message, instead of calling
	fatal on an error.  Also handle subroutines.
	(verify_jvm_instructions):  Handle errors from push_poending_block.
	Support jsr and ret instructions.

1997-08-19  Per Bothner  <bothner@cygnus.com>

	* jcf-io.c (find_classfile):  Fix thinko.
	* jcf-dump.c:  Add CONVERT2 (to match changed javaop.def).

1997-08-12  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in (BISON): Remove.

1997-08-07  Per Bothner  <bothner@cygnus.com>

	* Makefile.in:  Convert to autoconf.
	* config-lang.in (outputs):  Added java/Makefile.

	* Make-lang.in, lang-specs.h, config-lang.in, Makefile.in:
	Rename cc1java to jc1.

	* lang.c (init_parse, finihs_parse):  New functions #ifdef USE_CPPLIB.
	* Makefile.in (INTERNAL_CFLAGS):  Add @extra_c_flags.

	* class.c (class_depth):  Do load_class if needed.

	Mostly better verification.
	* decl.c (pushdecl):  Set TYPE_STUB_DECL for a type.
	(init_decl_processing):  Change return type of soft_checkcast.
	* expr.c (expand_java_CHECKCAST):  Do push_value of the "casted" value.
	* lang.c (put_decl_string, put_decl_node, lang_printable_name,
	lang_print_error):  New functions.
	(lang_init):  Set global hook print_error_function to lang_print_error.
	* expr.c:  In the type_map ptr_type_node is only used for null now.
	(pop_type, merge_types):  Hence ptr_type_node matches any reference.
	(merge_types):  Dererence pointer to record types before comparing.
	(decode_newarray_type, merge_types):  On error just return NULL.
	(build_java_binop):  Add preliminary implementation (with warning)
	for COMPARE_L_EXPR and COMPARE_G_EXPR (i.e. [fd]cmp[lg]).
	(lookup_label):  Set DECL_IGNORED_P (for dwarf2out).
	(expand_compare, expand_java_goto, expand_java_call):  Don't
	push_pending_block, since that only makes sense when verifying.
	(merge_type_state):  Different return codes.
	(push_pending_block):  A block may need to be verified more than once.
	(expand_byte_code):  Warn about unused code at code generation time.
	(verify_jvm_instruction):  Changed logic, since code may need to be
	re-verified if type-state has changed.  Also, better error handling.
	Implement acmpeq, acmpne, pop, pop2, swap, checkcast, instanceof.
	Improve newarray, anewarray, ?aload, athrow,
	* java-tree.h (LABEL_CHANGED):  New macro.

1997-08-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* decl.c (soft_athrow_node): New global variable initialized.
	* javaop.def (i2b, i2c, i2s): Invoke CONVERT2
	* typeck.c (convert): Added support for REAL_TYPE.
	(convert_to_char): New function.
	(convert): Handle CHAR_TYPE.
	* expr.c (expand_java_arraystore): Modified because CHAR/BYTE/BOOLEAN/
	SHORT now expect INT but store as CHAR/BYTE/BOOLEAN/SHORT.
	(expand_java_arrayload): CHAR/BYTE/BOOLEAN/SHORT now convert result to
	promoted type.
	(verify_jvm_instructions): Added break a the end of bogus unop: label.
	(OPCODE_<b|c|s>astore): Pop an int operand from the type stack
	(OPCODE_<b|c|s>astore): Push the promoted type onto the stack
	(process_jvm_instruction): New macro CONVERT2 for i2c, i2s and i2b.
	(JAVA_ARRAY_LENGTH_OFFSET, JAVA_ARRAY_DATA_OFFSET): Modified
	to Use The Right Things.
	(pop_type): Accept CHAR/BYTE/BOOLEAN/SHORT promoted type as
	compatible with INT. BOOLEAN is made equivalent to BYTE.
	(OPCODE_athrow, OPCODE_aconst_null, OPCODE_ifnull,
	OPCODE_ifnonnull): Now supported.
	(build_java_athrow): New function.

1997-08-04  Per Bothner  <bothner@cygnus.com>

	Rename method name <init> to match G++ (and fix mangling).
	* class.c (layout_class):  Replace method name of <init> by class name.
	(make_method_value):  Do inverse renaming of constructor from <init>.
	* java-tree.h (DECL_CONSTRUCTOR_P):  New macro.
	* typeck.c (lookup_java_constructor):  New function.
	* expr.c (expand_invoke):  If method_name is <init>, call
	lookup_java_constructor to find constructor.

	* parse.c (get_constant):  Handle CONSTANT_Float and CONSTANT_Double.

1997-08-01  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.c (get_class_constant): Modified to handle array "classes"
	* typeck.c (set_local_type): Bug fixed when filling type_map[] with
	wide type.
	(convert): Modified to handle real type.
	* java-tree.h (soft_badarrayindex_node, soft_anewarray_node,
	soft_multianewarray, soft_newarray_node, soft_throw_node): New global
	variables declared.
	* decl.c (soft_badarrayindex_node, soft_anewarray_node,
	soft_multianewarray, soft_newarray_node, soft_throw_node): New
	global variables initialized.
	(find_local_variable): Handles the case of a pointer
	(end_java_method): Restore the use of one more scope
	* expr.c (build_java_arraynull_check, build_java_arrayaccess,
	build_java_array_length_access, expand_java_arrayload,
	expand_java_arraystore, expand_java_array_length,
	expand_java_multianewarray, expand_java_anewarray,
	build_java_check_indexed_type, is_array_type_p,
	build_java_throw_out_of_bound_exception): New functions.
	(STORE_INTERNAL): Now forces type of the decl to be type of the value.
	(OPCODE_arraylength, OPCODE_newarray, OPCODE_<t>astore,
	OPCODE_<t>aload): Implemented code for verification.
	(ARRAY_STORE, ARRAY_LOAD, ARRAY_LENGTH, ARRAY_NEW_PTR, ARRAY_NEW_NUM
	ARRAY_NEW_MULTI): Macro defined.
	(CONVERT): Modified to invoke convert().
	(case OPCODE_aload2): Fixed index typo from 2 to 1.

1997-07-31  Per Bothner  <bothner@cygnus.com>

	* class.c (push_class):  Set DECL_ARTIFICIAL (for dbxout.c).
	(build_class_ref, is_compiled_class):  Handle pointer-to-record types.
	(make_class_data):  Field name needs '/' as package prefix.
	* expr.c (type_stack_dup, java_stack_dup):  Fix fencepost errors.

1997-07-25  Per Bothner  <bothner@cygnus.com>

	Implement debug information for local variables.
	* java-tree.h (DECL_CODE_LENGTH, DECL_ARG_SLOT_COUNT,
	DECL_LOCAL_SLOT_NUMBER, DECL_LOCAL_START_PC, DECL_LOCAL_END_PC,
	DECL_LOCAL_SLOT_CHAIN):  New macros.
	(struct lang_decl_var):  New type.
	* parse.c (give_name_to_locals):  Move to decl.c.
	* decl.c (give_name_to_locals):  Re-written to Do The Right Thing.
	(start_java_method):  Re-write parameter handling.
	(pending_local_decls):  New global variable.
	(push_jvm_slot, maybe_pushlevels, maybe_poplevels):  New functions.
	(find_local_variable):  Accept pc so we can skips decls not in range.
	(struct binding_level):  Add end_pc field.
	* expr.c (expand_byte_code): Call maybe_pushlevels and maybe_poplevels.
	(various):  Change so current pc gets passed to find_local_variable.

	* decl.c (init_decl_processing):  Re-arrange fields in
	class_type_node and and method_type_node to match kaffe 0.9.1.
	* class.c (make_method_value, make_class_data):  Update
	initializations to match.

1997-07-16  Per Bothner  <bothner@cygnus.com>

	* class.c (unicode_mangling_length, emit_unicode_mangled_name,
	append_gpp_mangled_name, append_gpp_mangled_type):  New functions.
	(push_super_field):  New function.
	(make_class_data):  Handle inheritance of class static initializer.
	(layout_class):  New name mangling.
	* constants.c (build_constant_data_ref):  Init type of data array
	to a one-element array.
	(build_constants_constructor):  Set DECL_SIZE from complete array type.
	* decl.c:  Rename class_type, object_type etc to class_type_node,
	object_type_node etc.  Make former inherit from latter.
	* expr.c (expand_invoke):  Add cast of function address.
	* java-tree.h (TYPE_ARRAY_ELEMENT, PUSH_SUPER_VALUE):  New.
	* parse.c (yyparse):  Don't call layout_class here.
	* typeck.c (build_java_array_type):  Set TYPE_ARRAY_ELEMENT.

1997-06-14  Per Bothner  <bothner@cygnus.com>

	* decl.c, class.c:  Update method type to match latest Kaffe snapshot.
	* constants.c (lookup_name_constant):  Renamed to alloc_name_constant.
	(alloc_class_constant):  New.
	* expr.c (expand_invoke):  Make sure method's class is initialized.
	* class.c (interits_from_p, emit_register_class):  New functions.
	* parse.c (yyparse):  Call emit_register_class.

1997-06-09  Per Bothner  <bothner@cygnus.com>

	* constants.c:  New file, to handle constant pool.
	* Makefile.in (JAVA_OBJS):  Add constants.o.
	* decl.c (init_decl_processing):  Update, fix, finish various structs.
	(pushdecl_top_level):  New.
	* parse.c (layout_class):  Moved to class.c.
	* expr.c (java_push_constant_from_pool):  New function.
	* class.c (build_class_ref):  Make work fully
	(make_class_data):  Emit super-class, constant pool, interface vector.

1997-06-03  Per Bothner  <bothner@cygnus.com>

	java-tree.h (DECL_SIGNATURE, BCODE_EMITTED):  Remove.
	(LABEL_VERIFIED, BCODE_EXCEPTION_TARGET, TYPE_ARRAY_P):  New.
	* class.c (class_depth):  New function.
	(lookup_named_class):  Replaced by new function lookup_class.
	* decl.c (object_type_node, string_type_node):  New.
	Remove various types that we no longer need.
	* expr.c (verify_jvm_instructions):  New separate verifier pass.
	(push_type, pop_type):  New functions for verifier.
	(type_stack_dup, pop_argument_types, merge_types):  Likewise.
	(expand_byte_code):  Simplify, since we assume already verified.
	(expand_invoke):  Now mostly works.
	* javaop.def:  Rename ldc1->ldc, ldc2->ldc_w, ldc2w->ldc2_w.
	* lang.c (main_class):  Move to parse.c.  Don't make_class yet.
	* parse.c:  Wait to allocate class object until we know its name.
	(layout_class):  Calculate DECL_VINDEX for each virtual method.
	* typeck.c (get_array_type):  Rename to ...
	(build_java_array_type):  ... and provide working implementation.
	(build_java_signature):  New function - build Java signature of type.
	(set_java_signature):  New function - cache signature with type.
	(lookup_java_method):  New function.

1997-05-06  Per Bothner  <bothner@deneb.cygnus.com>

	* class.c (ident_subst):  Take extra SUFFIX parameter.
	(add_field):  Set DECL_ASSEMBLER_NAME of static fields;  more.
	(set_constant_value, build_static_field_ref, is_compiled_class):  New.
	(build_class_ref):  Actually implement.
	* decl.c, java-tree.h:  Renamed some xx_type to xx_type_node.
	* decl.c (builtin_function):  New.
	(init_decl_processing):  Update for current Kaffe.  Declare some
	builtin Kaffe functions.
	* expr.c (build_address_of):  New.
	(expand_java_NEW, expand_java_INSTANCEOF, expand_java_CHECKCAST):
	Renamed (from expand_java_new etc), and added working implementations.
	(build_field_ref):  Now also handle static fields.
	(expand_invoke):  Implement invokestatic, and start implement rest.
	* java-opcodes.h:  Use javaop.def to avoid duplicated list.
	* javaop.def:  Rename invokevirt -> invokevirtual.
	* lang.c (use_handles):  Removed.
	* parse.c:  Add support for ConstantValue attribute.
	Handle nested loading of a class.  (JPOOL_UTF):  New.

1997-03-11  Per Bothner  <bothner@deneb.cygnus.com>

	* expr.c (expand_java_pushc):  Support #ifndef REAL_ARITHMETIC case.

1997-02-27  Per Bothner  <bothner@deneb.cygnus.com>

	* Make-lang.in (java.install-man):  New empty rule.
	* typeck.c (set_local_type):  New function.
	* expr.c (STORE_INTERNAL):  Call find_local_variable,
	not find_stack_slot.  Call set_local_type.

1997-02-12  Per Bothner  <bothner@kalessin.cygnus.com>

	* java-tree.h:  Various new macros for constructing RECORD_TYPEs,
	and building RECORD_TYPE CONSTRUCTORs.
	Also support for creating Utf8Const objects from an INDETIFIER_NODE.

	* lang.c (use_handles):  Change the default to 0.
	* decl.c:  Define and build class_type, field_type, utf8const_type.
	* class.c (make_class_data, make_field_value,
	get_access_flags_from_decl, build_class_ref, build_utf8_ref,
	hashUtf8String, strLengthUtf8, mangled_classname:
	Functions to build reflective data structures.
	* parse.c (yyparse):  Call make_class_data.

	* jcf-io.c (open_class, find_classfile):  New functions.
	* jcf-dump.c:  Support reading classfile from explicitly-named
	class file (without CLASSPATH searching).

1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>

	* jcf-reader.c:  Add parameter list to HANDLE_CONSTANT_Utf8.
	* parse.c (JPOOL_UTF_LENGTH, JPOOL_UTF_DATA, HANDLE_CONSTANT_Utf8):
	Override jcf-reader macros so CONSTANT_Utf8 becomes tree node here.
	(get_constant):  Now trivial for CONSTANT_Utf8.

	* jcf.h:  Make NEW_CPOOL the default.
	* jcf.h, jcf-reader.c, parse.c:  Remove support for !NEW_CPOOL.

1996-10-24  Per Bothner  <bothner@deneb.cygnus.com>

	New directory.


Copyright (C) 1996-2013 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
