Commit Graph

567 Commits

Author SHA1 Message Date
Alexandre Petit-Bianco
ce06965e6a parse.y (find_as_inner_class): Follow current package indications not to mistakingly load an unrelated class.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-03/msg01712.html)

From-SVN: r40851
2001-03-26 14:12:16 -08:00
Kaveh R. Ghazi
cb9b7a8c9f constants.c (PUTN): Use memcpy, not bcopy.
* 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.

From-SVN: r40836
2001-03-26 02:26:09 +00:00
Per Bothner
fa029f453a re PR java/1208 (Gcj can't compile a class file it generates.)
e
	* 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.

From-SVN: r40801
2001-03-23 17:13:30 -08:00
Andrew Haley
3e02b1c3e8 gcj.texi (Configure-time Options): Add -fcheck-references.
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.

From-SVN: r40782
2001-03-23 17:31:42 +00:00
Alexandre Petit-Bianco
96c6f62867 re PR java/2333 (ICE in mark_reference_fields)
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-03/msg01582.html)

From-SVN: r40719
2001-03-21 15:50:29 -08:00
Per Bothner
546468116e Fixes to process to command-line .class files in two passes. See ChangeLog.
From-SVN: r40637
2001-03-19 13:57:37 -08:00
Per Bothner
daaaf29f2a parse.h (JDEP_SOLV): Removed.
* parse.h (JDEP_SOLV):  Removed.
	* parse.y (incomplete_class_list):  Removed.
	(register_incomplete_type):  Use JDEP_TO_RESOLVE instead of JDEP_SOLV.

	* parse.y (obtain_incomplete_type): Removed.  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.

From-SVN: r40584
2001-03-17 12:25:10 -08:00
Per Bothner
b16e8f08b4 java-tree.h (BLOCK_IS_IMPLICIT): New flag.
* 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.

From-SVN: r40542
2001-03-15 22:30:28 -08:00
Per Bothner
3a2e5926e6 jcf-parse.c (yyparse): Set/reset input_filename for source file.
* jcf-parse.c (yyparse):  Set/reset input_filename for source file.
	* parse.y (java_expand_classes):  Likewise.

From-SVN: r40541
2001-03-15 22:12:53 -08:00
Per Bothner
47a50de993 parse.y (expand_start_java_method): Was only called once and had a misleading name...
* 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.

From-SVN: r40540
2001-03-15 21:57:30 -08:00
Per Bothner
fea2d5da9c Handle compiling multiple input files at once, and @FILE syntax. See ChangeLog.
From-SVN: r40024
2001-02-23 19:28:39 -08:00
Alexandre Petit-Bianco
064a552c29 parse.y (check_inner_class_access): Moved declaration of local `enclosing_decl_type' to the right location.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg01258.html)

From-SVN: r39933
2001-02-20 13:18:13 -08:00
Bryce McKinlay
a648f4e4c8 parse.y (parser_check_super_interface): Don't call check_pkg_class_access for an inner interface.
* 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.

From-SVN: r39909
2001-02-19 22:48:16 +00:00
Bryce McKinlay
35ab11f05f typeck.c (build_java_array_type): Don't try to poke a public `clone' method into array types.
* 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.

From-SVN: r39906
2001-02-19 21:10:14 +00:00
Alexandre Petit-Bianco
e101152f86 [multiple changes]
2001-02-14  Tom Tromey  <tromey@redhat.com>
            Alexandre Petit-Bianco  <apbianco@redhat.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.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00849.html)

From-SVN: r39701
2001-02-14 17:23:32 -08:00
Alexandre Petit-Bianco
863cd85ab5 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@redhat.com>

	* parse.y (resolve_qualified_expression_name): Try to resolve as
	an inner class access only if `decl' is a TYPE_DECL.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00762.html)

From-SVN: r39653
2001-02-13 16:36:22 -08:00
Alexandre Petit-Bianco
94807d3318 decl.c (classdollar_identifier_node): Initialize.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00760.html)

From-SVN: r39650
2001-02-13 16:03:11 -08:00
Alexandre Petit-Bianco
1ebb5e73d6 parse.y (process_imports): Save the original name of the import for better error report.
2001-02-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (process_imports): Save the original name of the import
        for better error report.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00250.html)

From-SVN: r39461
2001-02-05 10:09:45 -08:00
Richard Kenner
400500c4a5 diagnostic.h (set_internal_error_function): Renamed.
* diagnostic.h (set_internal_error_function): Renamed.
	* toplev.h (internal_error): Renamed from fatal.
	(pfatal_with_name): Deleted.
	(fatal_io_error): Now has printf-style arguments.
	* diagnostic.c (pfatal_with_name): Deleted.
	(fatal_io_error): Rework to have args in printf-style.
	(set_internal_error_function): Renamed from set_fatal_function.
	(internal_error): Renamed from fatal.
	(error_recursion, fancy_abort): Call internal_error instead of fatal.
	* dwarf2out.c (get_cfa_from_loc_descr): Likewise.
	* emit-rtl.c (gen_realpart, gen_imagpart): Likewise.
	* expr.c (check_max_integer_computation_mode, expand_expr): Likewise.
	* flow.c (verify_flow_info): Likewise.
	* config/arm/arm.c (thumb_unexpanded_epilogue): Likewise.
	* config/mips/mips.c (save_restore_insns): Likewise.
	* cp/init.c (build_java_class_ref): Likewise.
	(dsp16xx_reg_class_from_letter): Likewise.
	(limit_reload_class, double_reg_to_memory): Likewise.
	(print_operand_address, emit_1600_code_shift): Likewise.
	(gen_tst_reg, gen_compare_reg): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise.
	* cp/decl.c (pushdecl): Likewise.
	* java/check-init.c (check_init): Likewise.
	* java/expr.c (java_lang_expand_expr): Likewise.
	* java/jcf-parse.c (get_constant): Likewise.
	* java/mangle.c (java_mangle_decl): Likewise.
	* java/parse.y (make_nested_class_name, java_complete_lhs): Likewise.
	(operator_string): Likewise.

	* except.c (duplicate_eh_handlers): Call abort instead of fatal.
	* flow.c (verify_flow_info): Likewise.
	* ch/convert.c (convert): Likewise.
	* ch/except.c (pop_handler, chill_check_no_handlers): Likewise.
	* ch/expr.c (chill_expand_expr): Likewise.
	* ch/parse.c (peek_token_, pushback_token, require): Likewise.
	* config/arm/arm.c (thumb_load_double_from_address): Likewise.
	* config/avr/avr.c (pttreg_to_str, unique_section): Likewise.
	(avr_normalize_condition): Likewise.
	* config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise.
	* config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise.
	(limit_reload_class, double_reg_to_memory): Likewise.
	(print_operand_address, emit_1600_code_shift): Likewise.
	(gen_tst_reg, gen_compare_reg): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise.
	* cp/decl.c (pushdecl): Likewise.
	* java/check-init.c (check_init): Likewise.
	* java/class.c (build_class_ref): Likewise.
	* java/constants.c (write_constant_pool): Likewise.
	* java/decl.c (start_java_method): Likewise.
	* java/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/java-tree.h (INNER_CLASS_P): Likewise.
	* java/jcf-parse.c (parse_signature, get_name_constant): Likewise.
	(give_name_to_class, get_class_constant): Likewise.
	* java/jcf-write.c (CHECK_PUT, CHECK_OP, get_access_flags): Likewise.
	(find_constant_index, generate_bytecode_conditional): Likewise.
	(generate_bytecode_insns, perform_relocations): Likewise.
	* java/lex.c (java_unget_unicode, java_lex): Likewise.
	* java/mangle.c (mangle_type, mangle_record_type): Likewise.
	(mangle_pointer_type, mangle_array_type, init_mangling): Likewise.
	(finish_mangling): Likewise.
	* java/parse.h (MARK_FINAL_PARMS): Likewise.
	* java/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.
	* java/typeck.c (set_local_type, parse_signature_type): Likewise.
	(parse_signature_string, build_java_signature): Likewise;
	(set_java_signature): Likewise.
	* java/verify.c (type_stack_dup, CHECK_PC_IN_RANGE): Likewise.

	* c-parse.in (methoddef): Call fatal_error instead of fatal.
	* objc/objc-act.c (build_ivar_chain): Likewise.
	* cp/except.c (decl_is_java_type): Likewise.
	* cp/init.c (build_java_class_ref): Likewise.
	* cp/init.c (build_new_1): Likewise.
	* f/com.c (ffecom_init_0): Likewise.
	* java/class.c (add_method, build_static_field_ref): Likewise.
	* java/expr.c (build_known_method_ref, expand_invoke): Likewise.
	* java/jcf-parse.c (get_constant, jcf_parse): Likewise.
	* java/lex.c (java_new_new_lexer): Likewise.
	* java/jv-scan.c (main): Likewise.
	(fatal_error): Renamed from fatal.

	* dwarfout.c (dwarfout_init): Call fatal_io_error instead of
	pfatal_with_name.
	* graph.c (clean_graph_dump_file): Likewise.
	* profile.c (init_branch_prob): Likewise.
	* ch/grant.c (write_grant_file): Likewise.
	* ch/lex.c (init_parse, same_file, yywrap): Likewise.
	* f/com.c (init_parse): Likewise.
	* java/jcf-parse.c (yyparse): Likewise.
	* objc/objc-act.c (objc_init): Likewise.

	* java/jcf-parse.c (jcf_parse_source): Call fatal_io_error, not fatal.
	(yyparse): Likewise.
	* java/jcf-write.c (make_class_file_name, write_classfile): Likewise.
	* java/lex.c (java_get_line_col): Likewise.

	* hash.c (hash_allocate): Don't check for failure returns from
	obstack functions that can't fail.
	(hash_table_init_n, hash_table_init): Likewise; also now return void.
	* hash.h (hash_table_init_n, hash_table_init): Now return void.
	* cp/decl.c (build_typename_type): hash_table_init now returns void.

	* ch/lang.c (GNU_xref_begin, GNU_xref_end): Deleted.
	* ch/lex.c (convert_bitstring): Delete check for alloca failure.
	* config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare):
	Deleted.
	* config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it.

	* f/com.c (ffecom_decode_include_option_): Make errors non-fatal.
	* f/lex.c (ffelex_cfelex_, ffelex_get_directive_line_): Likewise.
	(ffelex_hash_): Likewise.
	* config/arm/arm.c (arm_override_options): Likewise.
	* config/avr/avr.c (avr_override_options): Likewise.
	* config/c4x/c4x.c (c4x_expand_prologue): Likewise.
	* config/dsp16xx/dsp16xx.c (function_prologue): Likewise.
	* config/h8300/h8300.c (h8300_init_once): Likewise.
	* config/mips/mips.c (override_options): Likewise.
	* config/i386/i386.c (override_options): Likewise, rework.
	* config/m68k/m68k.c (override_options): Likewise.
	* cp/decl.c (init_decl_processing): Likewise.
	* java/jcf-parse.c (load_class): Likewise.

	* config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage
	instead of fatal.
	* config/mips/mips.c (print_operand): Likewise.

	* java/lex.c (byteswap_init, need_byteswap): Only #ifdef HAVE_ICONV.
	* objc/objc_act.c (objc_check_decl): Remove unneeded fatal call.
	(get_object_reference): Likewise.

From-SVN: r39443
2001-02-04 17:44:12 -05:00
Alexandre Petit-Bianco
c0b00d3729 jcf-parse.c (init_jcf_parse): Added cast to ggc_add_root's last argument.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00005.html)

From-SVN: r39388
2001-02-01 02:35:50 -08:00
Kaveh R. Ghazi
c913b6f18e configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.
* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.

	* Makefile.in: Remove all dependencies on defaults.h.
	* builtins.c: Don't include defaults.h.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* i386.c: Likewise.
	* frame-ia64.c: Likewise.
	* cppexp.c: Likewise.
	* crtstuff.c: Likewise.
	* dbxout.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* frame-dwarf2.c: Likewise.
	* libgcc2.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* sdbout.c: Likewise.
	* toplev.c: Likewise.
	* tradcif.y: Likewise.
	* tree.c: Likewise.
	* varasm.c: Likewise.

ch:
	* Makefile.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* timing.c: Likewise.

cp:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* call.c: Don't include defaults.h.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

f:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* com.c: Don't include defaults.h.

java:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* expr.c: Likewise.
	* parse.y: Likewise.

From-SVN: r39308
2001-01-28 01:50:22 +00:00
Alexandre Petit-Bianco
c4faeb9287 ChangeLog (2001-01-21): Fixed typo.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01954.html)

From-SVN: r39274
2001-01-25 14:25:22 -08:00
Alexandre Petit-Bianco
493d561d62 class.c (layout_class): Don't lay the superclass out if it's already being laid out.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01812.html)

From-SVN: r39230
2001-01-24 00:08:36 -08:00
Per Bothner
e6b6db0dd8 parse.y (method_header): Don't set the DECL_NAME of a FUNCTION_DECL to a EXPR_WITH_FILE_LOCATION - that...
* 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.

From-SVN: r39169
2001-01-21 12:18:31 -08:00
Alexandre Petit-Bianco
b1117741f1 lang-options.h (-Wunsupported-jdk11): Removed.
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.

(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01479.html)

From-SVN: r39107
2001-01-17 19:07:01 -08:00
Alexandre Petit-Bianco
dc08e60389 All files with updated copyright when applicable.
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 accomodate 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.

(This is the new C++ ABI compatibility patch:
  http://gcc.gnu.org/ml/gcc-patches/2001-01/msg01225.html)

From-SVN: r39031
2001-01-15 00:01:22 -08:00
Per Bothner
00b4575d1e parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is constant, return body without wrapper.
* 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.

From-SVN: r39017
2001-01-14 12:46:32 -08:00
Bryce McKinlay
7e1376a14c parse.y (resolve_expression_name): Permit instance variables from enclosing context in super constructor call.
* 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.

From-SVN: r38892
2001-01-11 03:00:56 +00:00
Alexandre Petit-Bianco
761491c8dc [multiple changes]
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-05  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (patch_binop): Compute missing type in error situations.

(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg00752.html)

From-SVN: r38870
2001-01-10 09:05:43 -08:00
Bryce McKinlay
ac39dac023 From patha@softlab.ericsson.se:
* parse.y (switch_label): Use build, not build1, to construct
	DEFAULT_EXPR.

From-SVN: r38745
2001-01-06 05:06:02 +00:00
Bryce McKinlay
6d003d5c8f re GNATS gcj/373: (interface inner classes are implicitly static)
Fix for PR gcj/373:
	* parse.y (create_class): Set ACC_STATIC if class is declared in an
	interface.

From-SVN: r38365
2000-12-18 21:23:02 +00:00
Bryce McKinlay
c1eacb709f 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.

From-SVN: r38363
2000-12-18 21:15:52 +00:00
Alexandre Petit-Bianco
1e0cdc1036 parse.y (end_artificial_method_body): Fixed undefined behavior.
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.

(http://gcc.gnu.org/ml/gcc/2000-12/msg00495.html)

From-SVN: r38278
2000-12-15 00:50:12 -08:00
Mike Stump
e9e42530cd * parse.y (check_static_final_variable_assignment_flag): Fix spelling.
From-SVN: r38241
2000-12-14 04:28:50 +00:00
Tom Tromey
568aac9cf7 parse.y (java_complete_lhs): Only allow compound assignment of reference type if type is String.
* parse.y (java_complete_lhs): Only allow compound assignment of
	reference type if type is String.

Co-Authored-By: Alexandre Petit-Bianco <apbianco@cygnus.com>

From-SVN: r38236
2000-12-13 22:36:24 +00:00
Alexandre Petit-Bianco
46142b263c parse.y (end_artificial_method_body): Fixed typo.
2000-12-06  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (end_artificial_method_body): Fixed typo.

(http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00320.html)

From-SVN: r38071
2000-12-06 12:02:02 -08:00
Alexandre Petit-Bianco
c7303e411e [multiple changes]
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-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-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.

(http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00317.html)

From-SVN: r38070
2000-12-06 10:55:42 -08:00
Alexandre Petit-Bianco
f8b93ea75d parse.y (patch_method_invocation): Pick the correct enclosing context when creating inner class instances.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00217.html)

From-SVN: r38026
2000-12-04 23:08:56 -08:00
Alexandre Petit-Bianco
5e18f6d629 parse.y (build_outer_field_access): New local `decl_ctx', use it.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-11/msg01335.html)

From-SVN: r37689
2000-11-22 22:04:16 -08:00
Alexandre Petit-Bianco
ee5f86dcd7 [multiple changes]
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-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

       * parse.h (INNER_ENCLOSING_SCOPE_CHECK): Check inherited type in
       scope.

(http://gcc.gnu.org/ml/gcc-patches/2000-11/msg01217.html)

From-SVN: r37645
2000-11-21 21:25:15 -08:00
Tom Tromey
d828bc4251 lex.c (yylex): Added STRICT_TK case.
* 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.

From-SVN: r37594
2000-11-20 22:37:22 +00:00
Kaveh R. Ghazi
7e9355c669 java-tree.h (cyclic_inheritance_report): Constify.
* java-tree.h (cyclic_inheritance_report): Constify.
	* parse.y (cyclic_inheritance_report): Likewise.

From-SVN: r37564
2000-11-19 12:56:21 +00:00
Zack Weinberg
a8a05998de ggc.h: Delete ggc_add_string_root and ggc_mark_string.
* ggc.h: Delete ggc_add_string_root and ggc_mark_string.  Add
        digit_vector and digit_string.
        * stringpool.c (digit_vector): New.
        (ggc_alloc_string): Use digit_string.

        * stmt.c (digit_strings): Delete.
        (init_stmt): Do not initialize digit_strings.
        (expand_asm_operands): Use ggc.h's digit_string macro.
        * toplev.c (mark_file_stack): Delete.
        (compile_file): Don't call init_tree_codes.
        (main): No need to make the file stack a GC root.
        * tree.c (init_tree_codes): Delete.
        * tree.h (init_tree_codes): Delete.

        * c-lex.c: Don't include ggc.h.
        (mark_splay_tree_node, mark_splay_tree): Delete.
        (init_c_lex): No need to ggc_strdup string constant.  Don't add
        file_info_tree to GGC roots.
        (cb_enter_file, cb_rename_file): No need to ggc_strdup
        ip->nominal_fname.

        * Makefile.in (c-lex.o): No longer depends on $(GGC_H).

        * dbxout.c (dbxout_init),
        dwarf2out.c (dwarf2out_line),
        ggc-common.c (ggc_mark_rtx_children, ggc_mark_trees),
        varasm.c (mark_const_hash_entry, mark_pool_constant, init_varasm_once),
        xcoffout.c (xcoffout_source_file),
        i386.c (load_pic_register):
        Delete call(s) to ggc_add_string_root and/or ggc_mark_string.

        * except.c (create_rethrow_ref),
        profile.c (init_edge_profiler),
        toplev.c (compile_file),
        varasm.c (named_section, assemble_static_space,
        assemble_trampoline_template, output_constant_def, force_const_mem),
        i386.c (load_pic_register),
        ia64.c (ia64_encode_section_info),
        rs6000.c (rs6000_emit_load_toc_table, create_TOC_reference,
        rs6000_emit_prologue, rs6000_emit_epilogue),
        rs6000.md (load_toc_aix_si, load_toc_aix_di):
        Change ggc_alloc_string (var, -1) to ggc_strdup (var).

        * profile.c (output_func_start_profiler),
        tree.c (make_node),
        i386.c (load_pic_register): No need to ggc_strdup string constant.

cp:
        * lex.c (mark_impl_file_chain): Delete.
        (init_parse): Remove call to ggc_add_string_root.  No need to
        ggc_strdup a string constant.  Do not add impl_file_chain to GC
        roots.
        (handle_pragma_implementation): No need to ggc_strdup main_filename.

f:
        * lex.c (ffelex_hash_): Change ggc_alloc_string (var, -1) to
        ggc_strdup (var).

java:
        * parse.y (goal): Remove call to ggc_add_string_root.

From-SVN: r37522
2000-11-17 17:31:13 +00:00
Zack Weinberg
520a57c81c stringpool.c: New file.
* stringpool.c: New file.
	* ggc-common.c (ggc_mark_string_ptr, ggc_add_string_root): Delete.
	(ggc_alloc_string): Now in stringpool.o.
	* ggc-page.c, ggc-simple.c: Do not define or allocate empty_string.
	* ggc.h: Delete prototype of ggc_add_string_root.  #define
	ggc_add_string_root and ggc_mark_string to nothing.  Prototype
	init_stringpool and stringpool_statistics.
	(ggc_alloc_string): Returns a const char *.
	* tree.c (hash_table, do_identifier_warnings): Delete.
	(init_obstacks): Don't initialize the identifier hash table.
	(get_identifier, maybe_get_identifier, start_identifier_warnings,
	set_identifier_size): Now in stringpool.c.
	* tree.h (struct tree_string): Constify pointer field.
	(approx_sqrt): Prototype.

	* Makefile.in (stringpool.o): Add rule, mention in OBJS.

	* toplev.c (approx_sqrt): New function.
	(compile_file): Call stringpool_statistics if mem_report is on.
	(main): Call init_stringpool.

	* builtins.c (c_strlen), c-decl.c (finish_decl), c-lex.c
	(process_directive), c-typeck.c (constructor_asmspec, struct
	initializer_stack, start_init), except.c (create_rethrow_ref),
	stmt.c (digit_strings), toplev.c (decode_f_option), tree.c
	(built_in_filename), varasm,c (in_named_name,
	assemble_static_space, struct constant_descriptor, struct
	deferred_string, struct pool_constant, force_const_mem),
	i386.c (pic_label_name, global_offset_table_name), rs6000.c
	(rs6000_emit_prologue, rs6000_emit_epilogue) : Constify a char *.

	* c-common.c (combine_strings): Combine strings in scratch
	buffer, then pass to build_string.
	* optabs.c (init_libfuncs), profile.c (init_edge_profiler,
	output_func_start_profiler), stmt.c (init_stmt), alpha.c
	(alpha_need_linkage), arm.c (arm_encode_call_attribute),
	i386.c (load_pic_register), ia64.c (ia64_encode_section_info),
	rs6000.c (rs6000_encode_section_info): Create string in
	scratch buffer, then pass to ggc_alloc_string.

	* stmt.c (expand_asm_operands): If we must adjust the
	constraint strings, do so by creating a new one, not by
	modifying the old one in place.  Constify some char *s.
	* config/pa/pa.c (hppa_encode_label): Drop unnecessary second
	argument.  Create string in scratch buffer, then pass to
	ggc_alloc_string.
	* config/pa/pa-protos.h: Update prototype.
	* config/pa/elf.h, config/pa/pa.h, config/pa/som.h:
	hppa_encode_label takes only one argument.

	* c-parse.in (if_prefix): Find the filename and line number at
	$-2 and $-1 respectively.
	* diagnostic.c (error_recursion): Add missing newline, use
	fputs, translate string.

cp:
	* lex.c (struct impl_files, internal_filename): Constify a char *.
java:
	* jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
	Create string in scratch buffer, then pass to build_string.

From-SVN: r37514
2000-11-17 06:05:31 +00:00
Joseph Myers
88f3c47786 diagnostic.c (vbuild_message_string, [...]): Add ATTRIBUTE_PRINTF.
* diagnostic.c (vbuild_message_string, output_do_printf, vnotice):
	Add ATTRIBUTE_PRINTF.
	* tradcpp.c (v_message, warning, error, fatal, error_with_line):
	Add ATTRIBUTE_PRINTF*.

java:
	* parse.y (issue_warning_error_from_context): Add
	ATTRIBUTE_PRINTF.

From-SVN: r37419
2000-11-13 13:23:37 +00:00
Joseph Myers
2e09e75ade calls.c (expand_call, [...]): Use memcpy () instead of bcopy ().
* calls.c (expand_call, emit_library_call_value_1), collect2.c
	(scan_prog_file), config/a29k/a29k.c (print_operand),
	config/sparc/sparc.c (order_regs_for_local_alloc): Use memcpy ()
	instead of bcopy ().
	* real.h: Use memcmp () instead of bcmp ().
	* config/m88k/m88k.c (m88k_layout_frame), config/sh/sh.c
	(split_branches), config/sparc/sparc.c (ultra_flush_pipeline,
	ultrasparc_sched_init, ultrasparc_sched_reorder),
	config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Use memset ()
	instead of bzero ().
	* config/vax/xm-xms.h (FILE_NAME_NONDIRECTORY): Use strrchr ()
	instead of rindex ().
	* configure.in: Don't check for bzero, bcmp, index or rindex.
	* configure, config.in: Regenerate.
	* system.h: Don't include declarations for bzero, bcmp, index or
	rindex.
	* config/i386/xm-beos.h, config/rs6000/xm-beos.h: Don't define
	bzero, bcmp, index or rindex.

java:
	* parse.y (create_new_parser_context): Use memset () instead of
	bzero ().

From-SVN: r37334
2000-11-09 07:45:15 +00:00
Alexandre Petit-Bianco
2cb3951d32 parse.y (patch_method_invocation): NULLify this_arg when already inserted.
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.

(http://sources.redhat.com/ml/java-prs/2000-q4/msg00072.html
 http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00993.html)

From-SVN: r37139
2000-10-29 18:37:25 -08:00
Alexandre Petit-Bianco
8ac1de05dd parse.y (register_incomplete_type): Include JDEP_FIELD as a case where an enclosing context can be set on the jdep.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00824.html)

From-SVN: r37045
2000-10-24 22:47:28 -07:00
Bryce McKinlay
e1d565ab93 parse.y (do_resolve_class): Also explore superclasses of intermediate enclosing contexts when...
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.

From-SVN: r36990
2000-10-21 07:28:27 +01:00
Bryce McKinlay
cab8e2bd65 parse.y (find_most_specific_methods_list): Select the only non-abstract method even if max has been set.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00646.html)

From-SVN: r36956
2000-10-19 21:00:44 -07:00
Alexandre Petit-Bianco
02ae6e2e4b parse.y (process_imports): Consider that one might be trying to import an innerclass.
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

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00631.html)

From-SVN: r36948
2000-10-19 00:51:54 -07:00
Alexandre Petit-Bianco
dba41d307e gjavah.c (add_class_decl): Removed unused variables tname', tlen' and `name_index'.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00629.html)

From-SVN: r36946
2000-10-18 21:19:09 -07:00
Mark Mitchell
1f8f4a0b31 Remove obstacks.
* Makefile.in (ggc-callbacks.o): Remove target.
	(flow.o): Depend on GGC_H.
	* alias.c (init_alias_analysis):
	Remove ggc_p conditionals.
	(end_alias_analysis): Likewise.
	* basic-block.h (init_flow): New function.
	(allocate_reg_life_data): Declare.
	* bb-reorder.c	(function_obstack): Replace with ...
	(flow_obstack): ... new variable.
	(fixup_reorder_chain): Use it.
	* c-decl.c (ggc_p): Remove.
	(caller-save.c): Don't call oballoc/obfree.
	* combine.c (struct
	undobuf): Remove storage.
	(try_combine): Don't call oballoc.
	(undo_all): Don't call obfree.
	* cse.c (insert): Use xmalloc, not
	oballoc.
	(cse_main): Adjust accordingly.
	* dwarf2out.c (save_rtx): Remove
	obstack code.
	(dwarf2out_init): Remove ggc_p conditionals.
	* emit-rtl.c (rtl_obstack): Remove.
	(gen_rtx_CONST_INT): Remove ggc_p conditionals.
	(make_insn_raw): Likewise.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(gen_sequence): Likewise.
	(copy_insn_1): Remove handling of `b' RTL components.
	(init_emit_once): Remove ggc_p conditionals.
	* except.c (create_rethrow_ref): Don't fool with obstacks.
	(add_partial_entry): Likewise.
	(call_get_eh_context): Likewise.
	(begin_protect_partials): Likewise.
	(protect_with_terminate): Likewise.
	* explow.c
	(plus_constant_wide): Likewise.
	* expr.c (init_expr_once):
	Likewise.
	(emit_block_move): Likewise.
	(clear_storage): Likewise.
	(expand_expr): Likewise.
	* flow.c (function_obstack): Remove.
	(flow_obstack): New variable.
	(flow_firstobj): Likewise.
	(create_base_block): Use the flow_obstack.
	(split_block): Likewise.
	(split_edge): Likewise.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Make it static.  Likewiwse.
	(init_flow): New function.
	(size_int_type_wide): Remove ggc_p conditionals.
	* function.c
	(push_function_context_to): Don't call save_tree_status.
	(pop_function_context_from): Or restore_tree_status.
	(assign_stack_local_1): Don't call push_obstacks.
	(find_fixup_replacement): Use xmalloc.
	(fixup_var_refs_insns): Free the storage.
	(insns_for_mem_walk): Don't mess with obstacks.
	(instantiate_decls): Likewise.
	(trampoline_address): Likewise.
	(expand_function_end): Likewise.
	* function.h (sturct function):
	Remove obstack-related variables.
	(save_tree_status): Don't declare.
	(restore_tree_status): Likewise.
	* gcse.c (compute_can_copy):
	Don't call oballoc/obfree.
	* genattrtab.c (operate_exp): Remove
	ggc_p conditionals.
	(simplify_cond): Likewise.
	(simplify_test_exp): Don't mess with obstacks.
	(optimize_attrs): Likewise.
	* gengenrtl.c (gendef): Don't include
	ggc_p conditionals.
	* ggc-callbacks.c (ggc_p): Remove.
	* ggc-none.c (ggc_p): Remove.
	* ggc.h (ggc_p): Don't declare.
	* integrate.c (save_for_inline): Don't mess with obstacks.
	(integrate_decl_tree): Likewise.
	(output_inline_function): Likewise.
	* lists.c
	(init_EXPR_INSN_LIST_cache): Likewise.
	* loop.c (temp_obstack):
	Remove.
	(rtl_obstack): Likewise.
	(init_loop): Don't mess with obstacks.
	(reg_address_cost): Free BIVs and GIVs.
	(check_insns_for_bivs): Use xmalloc, not oballoc.
	(find_mem_givs): Likewise.
	(record_biv): Likewise.
	(general_induction_var): Likewise.
	(product_cheap_p): Likewse.
	* optabs.c (init_one_libfunc): Remove
	ggc_p conditional.
	* print-tree.c (debug_tree): Don't use
	oballoc/obfree.
	(print_node): Likewise.
	* profile.c (output_func_start_profiler):
	Remove call to temporary_allocation.
	* reload1.c
	(eliminate_regs_in_insn): Don't mess with obstacks.
	* resource.c
	(mark_target_live_regs): Use xmalloc.
	(free_resource_info): Free the memory.
	* rtl.c (rtl_obstack):
	Remove.
	(rtvec_alloc): Don't mess with obstacks.
	(rtx_alloc): Likewise.
	(rtx_free): Remove.
	(copy_rtx): Don't handle `b' cases.
	(read_rtx): Use a local rtl_obstack.
	* rtl.h (oballoc): Remove.
	(obfree): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(allocate_bb_life_data): Likewise.
	(allocate_reg_life_data): Likewise.
	(rtx_free): Likewise.
	* sdbout.c (sdbout_queue_anonymous_type):
	Use tree_cons, not saveable_tree_cons.
	* simplify-rtx.c
	(cselib_init): Don't mess with obstacks.
	* stmt.c
	(mark_block_nesting): Mark the label_chain.
	(epxand_label): Use ggc_alloc, not oballoc.
	(clear_last_expr): Don't mess with obstacks.
	(expand_decl_cleanup): Likewise.
	(expand_dcc_cleanup): Likewise.
	(expand_dhc_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	(add_case_node): Use xmalloc, not oballoc.
	(free_case_nodes): New function.
	(expand_end_case): Call it.
	* stor-layout.c (layout_type): Don't
	mess with obstacks.
	(layout_type): Likewise.
	* toplev.c (wrapup_global_declarations):
	Likewise.
	(compile_file): Remove ggc_p conditionals.
	(rest_of_compilation): Call init_flow.  Remove ggc_p conditionals.
	(decode_f_option): Remove ggc_p conditionals.
	* tree.c
	(function_maybepermanent_obstack): Remove.
	(maybepermanent_obstack): Likewise.
	(function_obstack): Likewise.
	(tmeporary_obstack): Likewise.
	(momentary_obstack): Likewise.
	(temp_decl_obstack): Likewise.
	(saveable_obstack): Likewise.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(expression_obstack): Likewise.
	(struct obstack_stack): Likewise.
	(obstack_stack): Likewise.
	(obstack_stack_obstack): Likewise.
	(maybepermanent_firstobj): Likewise.
	(temporary_firstobj): Likewise.
	(momentary_firstobj): Likewise.
	(temp_decl_firstobj): Likewise.
	(momentary_function_firstobj): Likewise.
	(all_types_permanent): Likewise.
	(struct momentary_level): Likewise.
	(momentary_stack): Likewise.
	(init_obstacks): Remove initialization of removed obstacks.
	(save_tree_status): Remove.
	(restore_tree_status): Likewise.
	(temporary_allocation): Liekwise.
	(end_temporary_allocation): Liekwise.
	(resume_temporary_allocation): Likewise.
	(saveable_allocation): Likewise.
	(push_obstacks): Likewise.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(allocation_temporary_p): Likewise.
	(permanent_allocation): Likewise.
	(preserve_data): Likewise.
	(preserve_initializer): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(oballoc): Likewise.
	(obfree): Likewise.
	(savealloc): Likewise.
	(expralloc): Likewise.
	(print_obstack_name): Likewise.
	(debug_obstack): Likewise.
	(object_permanent_p): Likewise.
	(push_momentary): Likewise.
	(perserve_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(pop_momentary_nofree): Likewise.
	(suspend_momentary): Likewise.
	(resume_momentary): Likewise.
	(make_node): Don't set TREE_PERMANENT.
	(copy_node): Remove ggc_p conditionals.  Don't set TYPE_OBSTACK.
	Don't set TREE_PERMANENT.
	(get_identifier): Remove ggc_p conditionals.
	(build_string): Likewise.
	(make_tree_vec): Likewise.
	(build_decl_list): Remove.
	(build_expr_list): Likewise.
	(tree_cons): Remove ggc_p conditionals.
	(decl_tree_cons): Remove.
	(expr_tree_cons): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(build1): Remove ggc_p conditionals.
	(build_parse_node): Likewise.
	(build_type_attribute_variant): Don't mess with obstacks.
	(build_type_copy): Likewise.
	(type_hash_canon): Likewise.
	(build_pointer_type): Likewise.
	(build_reference_type): Likewise.
	(build_index_type): Likewise.
	(build_range_type): Likewise.
	(dump_tree_statistics): Don't print obstack information.
	* tree.h
	(struct tree_common): Remove permanent_flag.
	(TREE_PERMANENT): Remove.
	(TREE_SET_PERMANENT): Likewise.
	(TYPE_OBSTACK): Likewise.
	(struct tree_type): Remove obstack.
	(oballoc): Remove.
	(savealloc): Likewise.
	(build_decl_list): Likewise.
	(build_expr_list): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(decl_tree_cons): Likewise.
	(expr_tree_cons): Likewise.
	(suspend_momentary): Likewise.
	(allocation_temporary_p): Likewise.
	(resume_momentary): Likewise.
	(push_obstacks_nochange): Likewise.
	(permanent_allocation): Likewise.
	(push_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(end_temporary_allocation): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(pop_momentary_nofree): LIkewise.
	(preserve_momentary): Likewise.
	(saveable_allocation): Likewise.
	(temporary_allocation): Likewise.
	(resume_temporary_allocation): Likewise.
	(perserve_initializer): Likewise.
	(debug_obstack): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(obfree): Likewise.
	* varasm.c (current_obstack): Remove.
	(saveable_obstack): Remove.
	(rtl_obstack): Remove.
	(immed_double_const): Don't mess with obstacks.
	(immed_real_cons): Likewise.
	(output_constant_def): Likewise.
	(init_varasm_status): Use xcalloc.
	(mark_pool_constant): Mark the pool constant itself.
	(free_varasm_status): Free memory.
	(decode_rtx_const): Call bzero directly, rather than expanding it
	inline.
	(record_rtx_const): Don't mess with obstacks.
	(force_const_mem): Likewise.
	* config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p
	conditionals.
	(aof_pic_entry): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/m32r/m32r.c (m32r_encode_section_info): Likewise.
	* config/pa/pa.c (saveable_obstack): Remove.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(output_call): Don't mess with obstacks.
	(hppa_encode_label): Remove ggc_p conditionals.
	* config/romp/romp.c (get_symref): Don't mess with obstacks.
	* config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional.
	(rs6000_encode_section_info): Likewise.
	* config/sh/sh.c (get_fpscr_rtx): Likewise.

From-SVN: r36856
2000-10-13 06:26:46 +00:00
Alexandre Petit-Bianco
29f8b71838 [multiple changes]
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-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.

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00286.html)

From-SVN: r36827
2000-10-10 10:54:59 -07:00
Alexandre Petit-Bianco
6e22695a4c [multiple changes]
Tue Oct  3 13:44:37 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * decl.c (find_local_variable): Removed uncessary type check and
        fixed range check typo. From Corey Minyard.

Wed Sep 13 16:06:52 2000  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.'

Wed Sep 13 11:50:35 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (field_access:): Fixed indentation.
        (qualify_ambiguous_name): Properly qualify `this.a[b].c'.

(http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00067.html)

From-SVN: r36717
2000-10-05 00:17:34 -07:00
Tom Tromey
7e51098e70 re GNATS gcj/307 (gcj allows boolean value to be returned for int method)
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.

From-SVN: r36704
2000-10-03 20:19:54 +00:00
Mark Mitchell
f15b9af984 c-decl.c (c_expand_body): Don't generate RTL if flag_syntax_only.
* c-decl.c (c_expand_body): Don't generate RTL if flag_syntax_only.
	(lang_mark_false_label_stack): Remove.
	* c-lex.c (init_c_lex): Add file_info_tree as GC root.  Allocate
	<top level> string in GC area.
	(mark_splay_tree_node): New function.
	(mark_splay_tree): Likewise.
	* except.c (mark_eh_status): Only call lang_mark_false_label_stack
	if it exists.
	* ggc-callbacks.c (lang_mark_false_label_stack): Remove.
	* ggc-common.c (lang_mark_false_label_stack): Change type.
	* ggc.h (ggc_alloc_string): Add comment.
	(ggc_strdup): New function.

	* decl.c (lang_mark_false_label_stack): Remove.
	* lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.

	* com.c (lang_mark_false_label_stack): Remove.

	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.

	* splay-tree.c (splay_tree_insert): Fix formatting.

From-SVN: r36687
2000-10-01 19:19:30 +00:00
Alexandre Petit-Bianco
99eaf8d457 parse.y (maybe_yank_clinit): Also keep <clinit> if its body contains something else than MODIFY_EXPR.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-09/msg01141.html)

From-SVN: r36670
2000-09-29 13:14:53 -07:00
Mark Mitchell
19e223db83 Make-lang.in (JAVA_SRCS): Include java-tree.h.
* 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.

From-SVN: r36581
2000-09-23 17:09:39 +00:00
Tom Tromey
d19cbcb5e3 re GNATS gcj/33 (gcj mangles composed characters)
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.

From-SVN: r36377
2000-09-12 22:23:59 +00:00
Tom Tromey
ee17a29049 re GNATS gcj/343 (can't cast array to serializable)
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.

From-SVN: r36376
2000-09-12 22:09:36 +00:00
Alexandre Petit-Bianco
354e99ce38 parse.y (do_merge_string_cste): New locals.
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

(Fixes gcj/311:
   http://gcc.gnu.org/ml/gcc-patches/2000-09/msg00144.html
   http://sources.redhat.com/ml/java-prs/2000-q3/msg00116.html)

From-SVN: r36176
2000-09-05 19:37:09 -07:00
Zack Weinberg
63ad61edae top level:
* c-common.c (declare_function_name): Use func_id_node,
	function_id_node, and pretty_function_id_node.  Do not make
	__func__ visible at file scope.
	* c-common.h (c_tree_index): Add CTI_FUNCTION_ID,
	CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID.
	(function_id_node, pretty_function_id_node, func_id_node): New
	macros.
	* c-decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	(c_make_fname_decl): Correct comment.

	* tree.h (struct tree_identifier): Constify pointer member.

	* c-decl.c (pushdecl, implicit_decl_warning): Constify a char *.
	* c-pragma.h (struct weak_syms): Constify name and value members.
	(add_weak): Constify arguments.

	* calls.c (special_function_p): Constify a char *.
	(expand_call): Remove variable which is initialized and then
	never used.
	* dependence.c (struct def_use, struct induction, struct subscript):
	Constify 'variable' member.
	(get_low_bound, have_induction_variable): Constify char * argument.
	(find_induction_variable): Add braces to avoid dangling else.
	(classify_dependence): Constify char * arrays.
	* profile.c (output_func_start_profiler): Constify a char *.
	* stor-layout.c (finalize_record_size): Constify a char *.
	* tree.c (is_attribute_p): Constify a char *.
	* varasm.c (add_weak, remove_from_pending_weak_list): Constify argument.

	* varasm.c (make_function_rtl, make_decl_rtl): Rearrange code
	for comprehensibility.  Do not call get_identifier if we did
	not change the DECL_ASSEMBLER_NAME of the decl.  Use alloca to
	create temporary string constants, not ggc_alloc_string.  No
	need to copy result of ASM_FORMAT_PRIVATE_NAME.  Use const
	char * to hold IDENTIFIER_POINTERs.
ch:
	* inout.c (add_enum_to_list): Use DECL_NAME directly, don't get
	its IDENTIFIER_POINTER and immediately call get_identifier on it.
	* lex.c (yywrap): Constify a char *.
cp:
	* class.c (build_secondary_vtable): Constify a char *.
	* decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	* input.c (struct input_source): Constify 'str'.
	(feed_input): Constify first argument.
	* mangle.c (write_identifier): Constify argument.
	* pt.c (mangle_class_name_for_template): Constify argument.
f:
	* ansify.c: Use #line, not # <number>.
java:
	* 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.

From-SVN: r36055
2000-08-29 21:39:49 +00:00
Alexandre Petit-Bianco
c00f0fb22b expr.c (can_widen_reference_to): Fixed indentation.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-08/msg01246.html)

From-SVN: r36039
2000-08-29 09:43:31 -07:00
Greg McGary
6e2aa220c0 lang.c (lang_decode_option): Use ARRAY_SIZE.
* lang.c (lang_decode_option): Use ARRAY_SIZE.
	* parse.y (BINOP_LOOKUP): Likewise.

From-SVN: r35951
2000-08-24 20:34:39 +00:00
Alexandre Petit-Bianco
5f1c312aa0 java-tree.h (flag_extraneous_semicolon): New extern.
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

(Fix to gcj/295: http://sources.redhat.com/ml/java-prs/2000-q3/msg00095.html)

From-SVN: r35929
2000-08-23 18:44:00 -07:00
Tom Tromey
1175b9b4c5 re GNATS gcj/305 (Interface methods implementations not always checked)
* parse.y (check_abstract_method_definitions): Now return `int'.
	Check implemented interfaces.  Fixes PR gcj/305.

From-SVN: r35820
2000-08-20 16:28:48 +00:00
Tom Tromey
2e0f0affd6 re GNATS gcj/310 (illegal type "long" accepted for "switch" expression)
* parse.y (patch_switch_statement): Disallow `long' in switch
	expressions.  Fixes PR gcj/310.

From-SVN: r35819
2000-08-20 16:24:31 +00:00
Alexandre Petit-Bianco
34d4df0620 class.c (maybe_layout_super_class): Fixed indentation.
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00516.html)

From-SVN: r35644
2000-08-11 15:01:37 -07:00
Alexandre Petit-Bianco
f0f3a77740 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-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 separatly.

2000-07-31  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* expr.c (build_invokeinterface): Call layout_class_methods on
	target interface.

(http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00339.html)

From-SVN: r35560
2000-08-07 20:33:36 -07:00
Alexandre Petit-Bianco
da632f2c93 [multiple changes]
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg01146.html)

From-SVN: r35303
2000-07-27 17:30:19 -07:00
Alexandre Petit-Bianco
1e12ab9b73 [multiple changes]
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-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.

From-SVN: r35287
2000-07-27 04:13:51 -07:00
Alexandre Petit-Bianco
f4530f43e7 parse.y (simple_name:): Fixed typo in error message.
2000-07-21  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (simple_name:): Fixed typo in error message.

(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00881.html)

From-SVN: r35186
2000-07-21 21:36:13 -07:00
Alexandre Petit-Bianco
4142b24701 parse.y (simple_name:): Reject `$' in type names.
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.

(Fixes gcj/257: http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00869.html)

From-SVN: r35182
2000-07-21 17:50:14 -07:00
Alexandre Petit-Bianco
e7c7bcef4e [multiple changes]
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 (find_as_inner_class): Handle the case where the
	enclosing context of an innerclass has been loaded as bytecode.

(Side gcj/225 bug fix and some cleanup:
 http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00832.html)

From-SVN: r35176
2000-07-21 11:11:52 -07:00
Alexandre Petit-Bianco
4dbf449657 [multiple changes]
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  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-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>

	* 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-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Handle inner class
	access. Fixes gcj/256.

(Fixes gcj/242, gcj/249, gcj/239, gcj/225 and gcj/256:
 http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00801.html)

From-SVN: r35156
2000-07-20 17:01:43 -07:00
Alexandre Petit-Bianco
ee97d3542d parse.y (fold_constant_for_init): Avoid bullish conversion.
2000-07-13  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (fold_constant_for_init): Avoid bullish conversion.

(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00506.html)

From-SVN: r35022
2000-07-13 12:27:49 -07:00
Alexandre Petit-Bianco
629d4b4db8 jcf-write.c (generate_classfile): Properly install the ConstantValue attribute and the initial value constant...
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.

(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00233.html)

From-SVN: r34921
2000-07-07 20:35:20 -07:00
Alexandre Petit-Bianco
0c2b81459e [multiple changes]
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.'

(http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00184.html)

From-SVN: r34895
2000-07-06 23:36:14 -07:00
Alexandre Petit-Bianco
98a52c2ccf Java: fixes for the PRs gcj/{271,272,275}.
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.

(Fix to the PR gcj/271, gcj/272 and gcj/275:
 http://sourceware.cygnus.com/ml/java-prs/2000-q3/msg00000.html
 http://sourceware.cygnus.com/ml/java-prs/2000-q3/msg00002.html
 http://sourceware.cygnus.com/ml/java-prs/2000-q3/msg00001.html )

From-SVN: r34894
2000-07-06 17:49:36 -07:00
Alexandre Petit-Bianco
cf1b227457 parse.y (verify_constructor_super): Use loop variable m_arg_type' initialized with mdecl_arg_type'.
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'.

From-SVN: r34800
2000-06-29 19:22:15 -07:00
Tom Tromey
6eaeeb553a parse.y (resolve_field_access): Handle case where `type_found' is NULL.
* parse.y (resolve_field_access): Handle case where `type_found'
	is NULL.

From-SVN: r34795
2000-06-30 00:07:19 +00:00
Tom Tromey
70541f45e9 parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to java_complete_tree.
* parse.y (resolve_field_access): Pass decl, not DECL_INITIAL, to
	java_complete_tree.

From-SVN: r34732
2000-06-27 15:02:48 +00:00
Bryce McKinlay
ad69b5b669 re GNATS gcj/238 (Can't call methods from Object on an inner class)
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.

(Fix to the Java PR #238:
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00206.html)

From-SVN: r34727
2000-06-26 22:18:56 -07:00
Alexandre Petit-Bianco
cf1748bfce [multiple changes]
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-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.

(These patches are fixes to the PR #224 and #255:
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00158.html
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00287.html)

From-SVN: r34725
2000-06-26 21:30:18 -07:00
Tom Tromey
774d2baf50 re GNATS gcj/268 (Internal compiler error in for-loop test condition)
* parse.y (for_statement): Wrap expression in a WFL if it is a
	constant.  For PR gcj/268.

From-SVN: r34712
2000-06-26 16:39:28 +00:00
Alexandre Petit-Bianco
d6baf6f524 parse.y (do_resolve_class): Minor optimiztion in the package list search.
2000-06-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (do_resolve_class): Minor optimiztion in the package
	list search. Removed unecessary test and return statement.
	(valid_ref_assignconv_cast_p): Order of arguments to
	enclosing_context_p fixed.

From-SVN: r34705
2000-06-26 00:26:08 -07:00
Tom Tromey
120f0c104a parse.y (check_abstract_method_definitions): Also check if `other_method' is abstract.
* parse.y (check_abstract_method_definitions): Also check if
	`other_method' is abstract.

From-SVN: r34697
2000-06-25 17:28:35 +00:00
Tom Tromey
f1ff439a50 re GNATS gcj/260 ("Klass.class" expression should cause Klass to be initialized)
* parse.y (patch_incomplete_class_ref): Initialize the returned
	class.  For PR gcj/260.

From-SVN: r34695
2000-06-25 17:25:31 +00:00
Alexandre Petit-Bianco
9a7ab4b335 [multiple changes]
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-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.

(Fixes for the ENABLE_TREE_CHECKING Java run-time build problem:
 http://gcc.gnu.org/ml/gcc-patches/2000-06/msg00551.html)

From-SVN: r34642
2000-06-21 22:17:35 -07:00
Jakub Jelinek
11cf4d1831 tree.h (TYPE_USER_ALIGN, [...]): Define.
* tree.h (TYPE_USER_ALIGN, DECL_USER_ALIGN): Define.
	(struct tree_type, struct tree_decl): Add user_align member.
	* stor-layout.c (layout_decl): Set DECL_USER_ALIGN.
	(place_union_field): If BIGGEST_FIELD_ALIGNMENT is defined
	and DECL_USER_ALIGN 0, cap alignment to this value.
	(place_field): Likewise.
	(finalize_type_size): Set TYPE_USER_ALIGN.
	(layout_type): Likewise.
	(initialize_sizetypes): Likewise.
	* c-common.c (decl_attributes): Set TYPE_USER_ALIGN resp.
	DECL_USER_ALIGN to 1.
	* c-decl.c (duplicate_decls): Set DECL_USER_ALIGN.
	(xfer_tag): Set TYPE_USER_ALIGN.
	(finish_struct): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(finish_enum): Likewise.
	* stmt.c (expand_decl): Set DECL_USER_ALIGN.
	(expand_anon_union_decl): Likewise.
	* tree.c (make_node): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(build_index_type): Set TYPE_USER_ALIGN.
	(build_range_type): Likewise.
	(build_common_tree_nodes_2): Likewise.
	* tm.texi (BIGGEST_FIELD_ALIGNMENT): Document the changed meaning.

ch/:
	* decl.c (init_decl_processing): Set TYPE_USER_ALIGN.
	(layout_enum): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	* typeck.c (layout_chill_range_type): Set TYPE_USER_ALIGN.
	(apply_chill_field_layout): Set DECL_USER_ALIGN.
	(layout_chill_struct_type): Set TYPE_USER_ALIGN.

cp/:
	* class.c (build_secondary_vtable): Set DECL_USER_ALIGN.
	(check_bitfield_decl, check_field_decl): Likewise.
	(build_vtbl_or_vbase_field, build_base_field): Likewise.
	(layout_class_type): Set DECL_USER_ALIGN resp. CLASSTYPE_USER_ALIGN.
	* decl.c (record_unknown_type): Set TYPE_USER_ALIGN.
	(xfer_tag, finish_enum): Likewise.
	* decl2.c (finish_builtin_type): Likewise.
	* init.c (init_init_processing): Likewise.
	* pt.c (instantiate_class_template): Likewise.
	* rtti.c (get_tinfo_decl, synthesize_tinfo_fn): Set DECL_USER_ALIGN.
	* cp-tree.h (struct lang_type): Add user_align member.
	(CLASSTYPE_USER_ALIGN): Define.

f/:
	* com.c (ffecom_transform_common_): Set DECL_USER_ALIGN.
	(ffecom_transform_equiv_, ffecom_decl_field): Likewise.
	(ffecom_init_0): Set DECL_USER_ALIGN resp. TYPE_USER_ALIGN.
	(duplicate_decls): Set DECL_USER_ALIGN.

java/:
	* typeck.c (build_java_array_type): Set TYPE_USER_ALIGN.
	* parse.y (java_complete_class): Set DECL_USER_ALIGN.
	* parse.c: Rebuilt.

From-SVN: r34541
2000-06-14 07:30:09 +02:00
Tom Tromey
14d075d85d parse.y (check_modifiers_consistency): Don't subtract out `PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.
* parse.y (check_modifiers_consistency): Don't subtract out
	`PUBLIC_TK' from argument to THIS_MODIFIER_ONLY.

From-SVN: r34433
2000-06-06 18:46:16 +00:00
Bryce McKinlay
6518c7b51f re GNATS gcj/127 (gcj dumps core on method invocation on a primitive type)
2000-05-23  Bryce McKinlay  <bryce@albatross.co.nz>

       * parse.y (patch_method_invocation): Don't try to lookup methods
       in primitive types.

(This fixes the PR gcj/127:
 http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00011.html)

From-SVN: r34347
2000-06-01 13:43:37 -07:00
Alexandre Petit-Bianco
611a4b873e re GNATS gcj/129 (Static array length access bug in gcj)
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 the PR #129:
 http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00013.html)

From-SVN: r34340
2000-06-01 09:04:14 -07:00
Alexandre Petit-Bianco
152de06864 class.c (common_enclosing_context_p): New function.
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.

This fixes the Java PR #177.

From-SVN: r34332
2000-06-01 00:44:58 -07:00
Alexandre Petit-Bianco
92d8351549 parse.y (maybe_yank_clinit): New function.
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.

From-SVN: r34329
2000-05-31 22:54:26 -07:00
Alexandre Petit-Bianco
0f145be85b parse.y (resolve_field_access): Complete the DECL_INITIAL tree before using it as the accessed field.
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.

From-SVN: r34320
2000-05-31 17:28:32 -07:00
Zack Weinberg
30a3caefde parse.y (find_applicable_accessible_methods_list): Don't add an uninitialized value to the list.
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.

From-SVN: r34196
2000-05-26 18:57:28 +00:00
Tom Tromey
40aaba2b81 re GNATS gcj/162 (gcj does not initialize interfaces according to spec)
* 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.

From-SVN: r34182
2000-05-26 01:16:20 +00:00
Tom Tromey
b8c5b1c6d5 re GNATS gcj/235 (source parser dies when Primitive.TYPE is used in an array declaration)
* parse.y (array_constructor_check_entry): Pass `wfl_value', not
	`wfl_operator', to maybe_build_primttype_type_ref.
	Fixes PR gcj/235.

From-SVN: r34181
2000-05-26 01:12:37 +00:00
Alexandre Petit-Bianco
6b48deee6e parse.y (resolve_package): Correctly set `*next' (was off by one.)
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.

From-SVN: r34060
2000-05-20 22:38:05 +00:00
Alexandre Petit-Bianco
c280e37af4 parse.y (block_end:): If the collected block doesn't feature a statement, insert an empty statement.
Thu Apr 27 17:25:33 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (block_end:): If the collected block doesn't feature a
 	statement, insert an empty statement.

From-SVN: r34038
2000-05-19 22:04:08 +00:00
Alexandre Petit-Bianco
ec5bb3cfb0 parse.y (fold_constant_for_init): Let VAR_DECL and FIELD_DECL be processed by the method's switch statement.
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.

From-SVN: r34024
2000-05-19 16:17:20 +00:00
Tom Tromey
9429bc4fb5 Reverted incorrectly applied change
From-SVN: r34023
2000-05-19 16:10:55 +00:00
Tom Tromey
67db0ce748 java-tree.h: Added init state enum.
* java-tree.h: Added init state enum.
	* decl.c (emit_init_test_initialization): Initialize class
	initialization check variable by looking at class' state.

From-SVN: r34022
2000-05-19 16:04:10 +00:00
Zack Weinberg
3b304f5b7d top level:
* Makefile.in (WARN_CFLAGS): Add -Wwrite-strings.
	(tree.o): Depend on output.h.

	* c-decl.c (pending_invalid_xref_file,
	current_function_prototype_file): Constify.
	(pushdecl): Constify a local char *.
	(define_label): Constify filename parameter.
	* c-lex.c (init_parse): Constify parameter and return value.
	* c-typeck.c (c_expand_asm_operands): Constify filename parameter.
	* c-tree.h: Update prototypes.
	* c-parse.in: Constify filename member of %union, and if_stmt_file.
	* c-parse.y, c-parse.c, c-parse.h, objc/objc-parse.y,
	objc/objc-parse.c: Regenerate.

	* dwarfout.c (dwarfout_init): Constify main_input_filename parameter.
	* dwarfout.h: Update prototypes.
	* expr.c (expand_expr): Constify a local char *.
	* flags.h: Constify main_input_filename.
	* function.c (expand_function_end): Constify filename parameter.
	* genrecog.c (make_insn_sequence): Use a character array for
	c_test_pos.
	(main): Remove unused variables.
	* input.h: Constify input_filename, main_input_filename, and
	file_stack.name.  Update prototypes.
	* output.h: Declare first_global_object_name and
	weak_global_object_name here, as const char *.
	* stmt.c (expand_asm_operands): Constify filename parameter.
	* toplev.c (compile_file, push_srcloc, debug_start_source_file):
	Constify filename parameter.
	(input_filename, main_input_filename): Constify.
	* toplev.h: Update prototypes.
	* tree.c: Include output.h.  Don't declare
	first_global_object_name or weak_global_object_name.  Clean up string
	bashing in get_file_function_name_long.
	* tree.h (struct tree_decl): Constify filename member.
	(input_filename): Constify.
	Update prototypes.
	* varasm.c (first_global_object_name, weak_global_object_name):
	Constify.
	(assemble_start_function, assemble_variable): Clean up string bashing.

	* gcc.c: Constify all spec-related strings initialized,
	transitively, from string constants.  Constify all strings
	and string variables related to multilibs.
	(set_spec, read_specs): Cast argument to free to PTR.
	(used_arg): Do not modify multilib_matches.  Use strncmp plus
	length comparison to compare multilib switches.
	* genmultilib: Constify everything declared in multilib.h.

ch:
	* ch-tree.h: Update prototypes.  Remove prototypes for
	functions declared elsewhere.
	* decl.c (define_label): Constify filename parameter.
	* grant.c (globalize_decl, set_default_grant_file): Constify
	local char * variables.  Don't declare
	first_global_object_name or asm_out_file.
	* lang.c (chill_real_input_filename): Constify.
	* lex.c (init_parse): Constify parameter and return value.
	* parse.c: Don't declare input_filename.
	(ch_expand_asm_operands): Constify filename parameter.
	(parse_multi_dimension_case_action): Constify local char *.
	* satisfy.c (safe_satisfy_decl): Constify local char *.

cp:
	* cp-tree.h: Constify tree_srcloc.filename, tinst_level.file,
	and pending_inline.filename.  Update prototypes.
	* decl.c (define_label): Constify filename parameter.
	* decl2.c (warn_if_unknown_interface): Constify local char *.
	* input.c Constify input_source.filename. Don't declare
	input_filename or lineno.  Constify filename parameter to feed_input.
	* lex.c (init_parse): Constify parameter and return value.
	(cp_pragma_interface, cp_pragma_implementation): Constify
	filename argument.
	(reinit_parse_for_method, reinit_parse_for_block,
	reinit_parse_for_expr, feed_defarg, handle_cp_pragma):
	Constify local char *.
	* pt.c: Don't declare lineno or input_filename.
	(print_template_context, tsubst_friend_function, tsubst_decl,
	tsubst, instantiate_decl): Constify local char *.
	* semantics.c (expand_body): Constify local char *.
	* tree.c (build_srcloc): Constify filename parameter.
	* typeck.c (c_expand_asm_operands): Constify filename
	parameter.

f:
	* com.c (ffecom_subscript_check_): Constify array_name
	parameter. Clean up string bashing.
	(ffecom_arrayref_, ffecom_char_args_x_): Constify array_name
	parameter.
	(ffecom_do_entry_, ffecom_gen_sfuncdef_, ffecom_start_progunit_,
	ffecom_sym_transform_, ffecom_sym_transform_assign_): Constify
	local char *.
	(init_parse): Constify parameter and return value.
	* lex.c: Include dwarfout.h instead of prototyping dwarfout_*
	functions here.
	(ffelex_file_pop_, ffelex_file_push_): Constify filename parameter.
	(ffelex_hash_, ffelex_include_): Constify local char *.
	* std.c (ffestd_exec_end): Constify local char *.
	* where.c (ffewhere_file_new): Constify filename parameter.
	* where.h: Update prototypes.

java:
	* 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.

From-SVN: r33804
2000-05-09 19:56:01 +00:00
Tom Tromey
7145d9fe6b class.c (add_method_1): Set both DECL_EXTERNAL and METHOD_NATIVE on native function.
* 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.

From-SVN: r33615
2000-05-02 20:32:31 +00:00
Alexandre Petit-Bianco
b7805411a0 re GNATS gcj/195: (gcj fail on code to implement an inner interface.)
(This trying to counter the effect of the PR 195 check in -- this should
 be right now.)

From-SVN: r33602
2000-05-01 21:49:51 -07:00
Alexandre Petit-Bianco
c6c4a70b9e (The patch contained impurities -- this should fix the situation.)
From-SVN: r33591
2000-05-01 15:32:20 -07:00
Alexandre Petit-Bianco
e803d3b218 re GNATS gcj/195: (gcj fail on code to implement an inner interface.)
2000-04-25  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (register_incomplete_type): Handle JDEP_ANONYMOUS.

(This is a fix for the Java PR #195:
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00009.html)

From-SVN: r33588
2000-05-01 14:46:29 -07:00
Tom Tromey
e815887f4d re GNATS gcj/2 (Method call on null instance should throw NullPointerException)
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.

From-SVN: r33495
2000-04-28 00:21:06 +00:00
Alexandre Petit-Bianco
932207025a re GNATS gcj/181 (gcj crashes on inner classes/interfaces definition/usage.)
Mon Apr 24 14:59:36 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (end_class_declaration): Reset the interface number
        counter.

(This fixes the Java PR #181:
 http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00207.html)

From-SVN: r33422
2000-04-25 15:14:53 -07:00
Alexandre Petit-Bianco
f2760b279a parse.y (lookup_field_wrapper): Search for final local aliases.
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.

From-SVN: r33400
2000-04-24 23:01:09 -07:00
Alexandre Petit-Bianco
dfb99c83a6 parse.y (source_start_java_method): Deleted unecessary code.
2000-04-24  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (source_start_java_method): Deleted unecessary code.
        (patch_method_invocation): Fixed comment.

From-SVN: r33392
2000-04-24 16:27:39 -07:00
Alexandre Petit-Bianco
a40d21da8f [multiple changes]
Thu Apr 20 17:41:28 2000  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.

(This fixes the PR #194 and #197:
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00008.html
 http://sourceware.cygnus.com/ml/java-prs/2000-q2/msg00011.html)

From-SVN: r33330
2000-04-21 16:03:19 -07:00
Tom Tromey
473e7b07f1 re GNATS gcj/124 (protected constructor for InvocationTargetException still visible)
* parse.y (not_accessible_p): Use member's class, not current
	class, when doing inheritance check for protected reference.
	Fixes PR gcj/124.

From-SVN: r33315
2000-04-21 19:53:15 +00:00
Alexandre Petit-Bianco
807bc1db3d parse.y (yyerror): `msg' can be null, don't use it in that case.
2000-04-19  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (yyerror): `msg' can be null, don't use it in that case.

From-SVN: r33270
2000-04-19 19:52:26 -07:00
Alexandre Petit-Bianco
48a840d910 [multiple changes]
2000-04-18  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (maybe_make_nested_class_name): Use `obstack_grow0'.

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.

From-SVN: r33240
2000-04-18 18:53:47 -07:00
Tom Tromey
bc2874c902 re GNATS gcj/140 (gcj permits assignment to array length)
Fix for PR gcj/140:
	* parse.y (check_final_assignment): Recognize assignments to the
	`length' field of an array when generating class files.

From-SVN: r32960
2000-04-06 05:29:30 +00:00
Tom Tromey
e0fc4118fe re GNATS gcj/164 (compiler permits "volatile final" variables)
* parse.h (THIS_MODIFIER_ONLY): Changed meaning of `v' parameter.
	* parse.y (check_modifiers_consistency): Check for final/volatile
	clash.  Fixes PR gcj/164.

From-SVN: r32955
2000-04-06 00:43:27 +00:00
Alexandre Petit-Bianco
e0422ed081 class.c: (java_hash_hash_tree_node): Renamed from `decl_hash', made global.
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.

From-SVN: r32947
2000-04-05 16:57:19 -07:00
Kaveh R. Ghazi
c0b864fce7 boehm.c (mark_reference_fields, set_bit): Prototype.
* 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.

From-SVN: r32908
2000-04-04 20:40:20 +00:00
Alexandre Petit-Bianco
165f37bc07 [multiple changes]
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 also
	eventually consider `java.lang.Object'.
	(maybe_use_access_method): Don't use access method if not a pure
	inner class or if the method's context is right.
	(find_applicable_accessible_methods_list): New static
	`object_done'. Don't search abstract classes as interfaces. Fixed
	indentation. Fixed the `java.lang.Object' only search. Search class'
	interface(s) first, fully search enclosing contexts.
	(find_most_specific_methods_list): Pick closest candidates when
	they're all abstract.

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-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.

(For details, see: http://gcc.gnu.org/ml/gcc-patches/2000-03/msg00790.html)

From-SVN: r32701
2000-03-22 23:01:24 -08:00
Alexandre Petit-Bianco
324ed8fdf2 re GNATS gcj/172 (compiler rejects inner-class argument to inner-class constructor)
Tue Mar 14 17:15:41 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (register_incomplete_type): Fixed initialization of
	JDEP_ENCLOSING.

(This is a fix to the gcj PR #172:
 http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00169.html)

From-SVN: r32556
2000-03-15 01:30:39 -08:00
Alexandre Petit-Bianco
dde1da7265 parse.y (resolve_package): Set `next' once a type name has been progressively discovered.
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.

From-SVN: r32520
2000-03-13 23:51:42 -08:00
Alexandre Petit-Bianco
c2952b018a Added Java 1.1 language features.
From-SVN: r32517
2000-03-13 21:01:05 -08:00
Alexandre Petit-Bianco
cd7c584005 re GNATS gcj/102 (crashes when compiling try block from java source)
2000-03-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (qualify_ambiguous_name): Properly handle expressions
	using `null'.

(This fixes the Java PR #102:
 http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00152.html)

From-SVN: r32397
2000-03-07 17:37:39 -08:00
Alexandre Petit-Bianco
6632dcdd41 re GNATS gcj/94 (compiler allows assignment to interface constants)
2000-02-22  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.

(This fixes the Java PR #94:
 http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00125.html)

From-SVN: r32396
2000-03-07 16:30:06 -08:00
Alexandre Petit-Bianco
1729c26505 re GNATS gcj/108 (Compiler doesn't check access modifiers on interface implementations)
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.

(This fixes the Java PR #108:
 http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00174.html)

From-SVN: r32391
2000-03-07 14:09:56 -08:00
Richard Kenner
05bccae2ef tree.h (INT_CST_LT, [...]): Remove unneeded casts.
* tree.h (INT_CST_LT, INT_CST_LT_UNSIGNED): Remove unneeded casts.
	(struct tree_int_cst): int_cst_low is now unsigned HOST_WIDE_INT.
	(attribute_hash_list, type_hash_canon): hashcode is now unsigned.
	(type_hash_lookup, type_hash_add, type_hash_list): Likewise.
	(min_precision): Result is unsignd.
	(add_double, neg_double, mul_double): Low word is unsigned.
	(lshift_double, rshift_double, lrotate_double): Likewise.
	(rrotate_double, div_and_round_double): Likewise.
	(tree_floor_log2, compare_tree_int): New functions.
	(preserve_rtl_expr_temps): New declaration.
	* c-common.c (declare_hidden_char_array): Use compare_tree_int.
	(decl_attributes): Use tree_log2 to find alignment.
	Check for TREE_INT_CST_HIGH for format args.
	(min_precision): Now unsigned.
	Use tree_floor_log2.
	(truthvalue_conversion): Delete long-disabled code.
	* c-decl.c (finish_struct): Clean up tests on field width.
	(finish_function): Use compare_tree_int.
	* c-pragma.c (handle_pragma_token): Use tree_log2 for alignment.
	* c-typeck.c (comptypes): Use tree_int_cst_equal.
	(default_conversion, digest_init): Use compare_tree_int.
	(build_binary_op): Use integer_all_onesp and compare_tree_int.
	Fix type errors in forming masks.
	* calls.c (initialize_argument_information): Use compare_tree_int.
	* dbxout.c (dbxout_type): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* except.c (expand_eh_region_start_tree): Use compare_tree_int.
	* expr.c (is_zeros_p, case INTEGER_CST): Use integer_zerop.
	(store_field): Use compare_tree_int.
	(expand_expr, case CONSTRUCTOR): Use TYPE_SIZE_UNIT.
	(expand_expr, case ARRAY_REF): Use compare_tree_int.
	(do_jump, case BIT_AND_EXPR): Use tree_floor_log2.
	(do_store_flag): Use compare_tree_int.
	* fold-const.c (encode, decode): Low part is always unsigned.
	(force_fit_type, add_double, neg_double, mul_double): Likewise.
	(lshift_double, rshift_double, lrotate_double): Likewise.
	(rrotate_double, div_and_round_double, int_const_binop): Likewise.
	(fold_convert): Use compare_tree_int.
	(operand_equal_p, case INTEGER_CST): Use tree_int_cst_equal.
	(invert_truthvalue, case INTEGER_CST): Likewise.
	(fold): Use compare_tree_int; add casts for unsigned TREE_INT_CST_LOW.
	* mkdeps.c (deps_dummy_targets): Make I unsigned.
	* rtl.h (add_double, neg_double, mul_double): Low words are unsigned.
	(lshift_double, rshift_double, lrotate_double, rrotate_double):
	Likewise.
	* stmt.c (expand_decl): Use compare_tree_int and mode_for_size_tree.
	(expand_end_case): Use compare_tree_int.
	(estimate_case_costs): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size_tree): Use compare_tree_int.
	(layout_decl): Likewise.
	(layout_record, layout_union): Make sizes unsigned.
	(layout_type, case VOID_TYPE): TYPE_SIZE must be bitsizetype.
	(layout_type, case QUAL_UNION_TYPE): Use compare_tree_int.
	* tree.c (struct type_hash): hashcode is unsigned.
	(build_type_attribute_variant, type_hash_list): Likewise.
	(type_hash_lookup, type_hash_add, type_hash_canon): Likewise.
	(attribute_hash_list, build_array_type, build_method_type): Likewise.
	(build_complex_type): Likewise.
	(real_value_from_int_cst): Remove unneeded casts.
	(integer_all_onesp): Add casts.
	(tree_floor_log2, compare_tree_int): New functions.
	(build_index_type): Use tree_int_cst_sgn.
	* varasm.c (assemble_variable): Use compare_tree_int.
	* ch/actions.c (chill_convert_for_assignment): INDEX is unsigned
	HOST_WIDE_INT.
	* ch/ch-tree.h (DECL_NESTING_LEVEL): Use TREE_INT_CST_HIGH
	since unsigned.
	* ch/except.c (chill_handle_on_labels): ALTERNATIVE is unsigned.
	Use compare_tree_int.
	(expand_goto_except_cleanup): Likewise.
	* cp/class.c (dfs_modify_vtables): I is now unsigned.
	(check_bitfield_decl): Use tree_int_cst_sgn and compare_tree_int.
	(build_base_field): Add casts of TREE_INT_CST_LOW to HOST_WIDE_INT.
	* cp/error.c (dump_expr): Cast TREE_INT_CST_HIGH to unsigned.
	* cp/init.c (build_vec_init): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	* cp/method.c (build_overload_int): Cast TREE_INT_CST_HIGH to unsigned.
	* cp/typeck.c (build_binary_op, case TRUNC_DIV_EXPR):
	Call integer_all_onesp.
	* cp/typeck2.c (process_init_constructor): Use compare_tree_int.
	* f/com.c (ffecom_f2c_set_lio_code_): Use compare_tree_int.
	(ffecom_sym_transform_, ffecom_transform_common_): Likewise.
	(ffecom_transform_equiv_): Likewise.
	* java/decl.c (emit_init_test_initialization): Mark KEY as unused.
	* java/expr.c (build_newarray): Cast TREE_INT_CST_LOW to HOST_WIDE_INT.
	(build_anewarray): Likewise.
	* java/parse.y (patch_newarray): Likewise.
	* java/parse.c: Regenerated.

From-SVN: r32383
2000-03-07 06:41:32 -05:00
Bryce McKinlay
173f556ccc decl.c (init_decl_processing): Added new class fields depth', ancestors', and `idt' to class_type_node.
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.

(This is Bryce McKinlay's implementation of the interfaces
 constant-time dispatch and type checking techniques designed by Per
 Bothner.)

From-SVN: r32381
2000-03-07 00:58:26 -08:00
Alexandre Petit-Bianco
614eaae0a5 [multiple changes]
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-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.

From-SVN: r32376
2000-03-06 22:25:14 -08:00
Alexandre Petit-Bianco
98f3c1dbd3 parse.y (resolve_expression_name): Use `orig' as a second argument to resolve_field_access.
Fri Feb 25 18:00:37 2000  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 unecessary code when dealing with
 	static fields.

From-SVN: r32158
2000-02-25 18:05:35 -08:00
Joerg Brunsmann
a003f638ee gjavah.c: Delete ACC_VISIBILITY define.
Mon Jan 18 14:30:09 2000  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.

From-SVN: r31992
2000-02-15 14:54:21 -08:00
Alexandre Petit-Bianco
f8989a66b8 [multiple changes]
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.

Wed Jan 12 20:20:11 2000  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.

From-SVN: r31695
2000-01-29 14:40:07 -08:00
Kaveh R. Ghazi
2884c41e1c parse.h (OBSOLETE_MODIFIER_WARNING): Don't use ANSI string concatenation.
* 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.

From-SVN: r31614
2000-01-25 18:29:02 +00:00
Kaveh R. Ghazi
df32d2ce42 buffer.h: PROTO -> PARAMS.
* 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.

From-SVN: r31550
2000-01-21 20:57:00 +00:00
Joerg Brunsmann
18990de52b re GNATS gcj/128 (weak error message when expecting final modifier)
Mon Jan 17 11:58:17 2000  Joerg Brunsmann  <joerg.brunsmann@fernuni-hagen.de>

        * parse.y (format_parameter:): Use final: rule instead of modifiers:.
        (final:): New rule.

Joerg Brunsmann's contribution to fix the Java PR #128.

From-SVN: r31477
2000-01-17 14:54:30 -08:00
Anthony Green
c52b57714b parse.y (build_string_concatenation): Only use StringBuffer(String) shortcut if String arg is constant.
2000-01-16  Anthony Green  <green@cygnus.com>

	* parse.y (build_string_concatenation): Only use
	StringBuffer(String) shortcut if String arg is constant.

From-SVN: r31450
2000-01-16 23:56:06 +00:00
Mumit Khan
51149cc88d jcf-path.c: Delete PATH_SEPARATOR and DIR_SEPARATOR macros.
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.

From-SVN: r31344
2000-01-12 05:21:12 +00:00
Alexandre Petit-Bianco
6b924cc558 re GNATS gcj/122 (SP mismatch error from certain code constructs)
Thu Jan  6 00:54:10 2000  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * jcf-write.c (generate_byecode_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.

(This is a fix for the PR #122:
 http://sourceware.cygnus.com/ml/java-prs/2000-q1/msg00000.html)

From-SVN: r31277
2000-01-07 12:28:11 -08:00
Alexandre Petit-Bianco
ee07f4f4b1 Makefile.in (LIBDEPS): Added gcc's errors.o
Fri Dec 24 00:25:29 1999  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.

From-SVN: r31261
2000-01-06 14:06:22 -08:00
Kaveh R. Ghazi
c63b98cdad class.c (assume_compiled, [...]): Add static prototype.
* 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.

From-SVN: r31148
1999-12-31 03:30:22 +00:00
Kaveh R. Ghazi
781b0558cf parse.h (ABSTRACT_CHECK, [...]): Avoid the use of ANSI string concatenation.
* 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.

From-SVN: r31146
1999-12-31 02:41:24 +00:00
Alexandre Petit-Bianco
e920ebc931 class.c (class_depth): Return -1 if the class doesn't load properly.
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.

From-SVN: r31144
1999-12-30 14:36:25 -08:00
Alexandre Petit-Bianco
3a1760acf0 re GNATS gcj/79 (Problem creating static arrays)
Fri Dec 10 21:53:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (java_complete_lhs): Force convertion of array
        dimensions to int_type_node, that's what runtime's ABI expects.

(This patch is a fix for the PR #79:
 http://sourceware.cygnus.com/ml/java-prs/1999-q4/msg00069.html)

From-SVN: r30881
1999-12-12 17:50:55 -08:00
Alexandre Petit-Bianco
afc390b1ad jcf-write.c (generate_byecode_insns): Fixed indentation for COMPOUND_EXPR and FIX_TRUNC_EXPR cases.
Tue Nov 30 12:28:34 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * jcf-write.c (generate_byecode_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.

From-SVN: r30806
1999-12-06 11:31:25 -08:00
Alexandre Petit-Bianco
b5b8a0e779 re GNATS gcj/97 (Internal compiler error)
Thu Nov 11 01:57:14 1999  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.

From-SVN: r30739
1999-12-01 05:06:10 -08:00
Alexandre Petit-Bianco
97f3028449 parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE in case of error.
Tue Nov 23 10:55:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (catch_clause_parameter:): Still set `$$' to NULL_TREE
 	in case of error. Error message tuned.

This fixes a catch clause error handling reported on the java-discuss
mailing list:

  http://sourceware.cygnus.com/ml/java-discuss/1999-q4/msg00358.html

From-SVN: r30710
1999-11-29 12:43:24 -08:00
Alexandre Petit-Bianco
37feda7d76 hu Nov 4 16:27:01 1999 Alexandre Petit-Bianco <apbianco@cygnus.com>
* parse.y (resolve_qualified_expression_name): Handle PLUS_EXPR.
        (qualify_ambiguous_name): Likewise.

(This patch fixes the gcj PR #55.)

From-SVN: r30707
1999-11-29 09:40:31 -08:00
Alexandre Petit-Bianco
8226320b92 parse.y (source_end_java_method): Resume permanent allocation, reversing Apr 27 1998 patch.
Tue Nov  9 12:12:38 1999  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.

From-SVN: r30462
1999-11-09 12:30:57 -08:00
Alexandre Petit-Bianco
efa0a23fc2 parse.y (method_header:): Issue error message for rule `type error'.
Mon Nov  1 23:42:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (method_header:): Issue error message for rule `type
 	error'.
	(synchronized:): Error report when not using synchronized.

From-SVN: r30343
1999-11-01 23:51:19 -08:00
Alexandre Petit-Bianco
f63991a86a re GNATS gcj/48 (Compiler fails to catch constructor problem)
Mon Nov  1 01:32:48 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Prevent `this'
 	from being before the superclass constructor has been called.

(This fixes the net PR #48:
 http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00106.html)

From-SVN: r30317
1999-11-01 01:45:18 -08:00
Alexandre Petit-Bianco
8119c72007 parse.y (expression_statement:): Call function to report improper invocation of a constructor.
Fri Oct 29 14:23:32 1999  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.

From-SVN: r30267
1999-10-29 14:32:28 -07:00
Alexandre Petit-Bianco
ac22f9cb2c re GNATS gcj/56 (gcj segfaults in jc1 on OK java file)
Thu Oct 21 01:27:31 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (resolve_qualified_expression_name): Handle MODIFY_EXPR.
	(qualify_ambiguous_name): Likewise.

This fixes the net PR #56
(http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00131.html)

From-SVN: r30127
1999-10-21 23:06:47 -07:00
Alexandre Petit-Bianco
100f7cd8b9 re GNATS gcj/37 (gcj fails to compile "jBYTEmark" from source code when optimization is used)
Wed Oct 20 01:41:47 1999  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.

This patch fixes the net PR #37
(http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00043.html)

From-SVN: r30126
1999-10-21 22:27:34 -07:00
Kaveh R. Ghazi
1ebadc609b jcf-dump.c (print_constant, [...]): Don't call a variadic function with a non-literal format string.
* 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.

From-SVN: r29981
1999-10-14 17:13:57 +00:00
Alexandre Petit-Bianco
b771925e7e re GNATS gcj/46 (Static inializers compiled incorrectly)
Thu Sep 16 15:42:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

	* parse.y (java_method_add_stmt): Test against GET_CURRENT_BLOCK
 	instead of fndecl.

(This patch fixes the net Java PR #46:
 http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00092.html)

From-SVN: r29550
1999-09-21 08:53:23 -07:00
Kaveh R. Ghazi
c2e3db9254 gjavah.c (get_field_name, [...]): Use xmalloc, not malloc.
* 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.

From-SVN: r29457
1999-09-16 15:45:15 +00:00
Alexandre Petit-Bianco
f4e16489df re GNATS gcj/18 (Internal error: segfault on invalid cast)
Sat Sep 11 16:46:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (find_applicable_accessible_methods_list): Search
        abstract classes as interfaces.

(Fix to Java PR #18:
 http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00015.html)

From-SVN: r29352
1999-09-11 20:20:31 -07:00
Tom Tromey
2f11d4079a parse.y (strip_out_static_field_access_decl): Return operand if it satisfies JDECL_P.
* parse.y (strip_out_static_field_access_decl): Return operand if
	it satisfies JDECL_P.

From-SVN: r29086
1999-09-03 17:18:11 +00:00
Kaveh R. Ghazi
d593dd8c6a class.c (finish_class): Remove unused parameter, all callers changed.
* 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'.

From-SVN: r29065
1999-09-02 21:57:09 +00:00
Alexandre Petit-Bianco
f441f67120 re GNATS gcj/32 (A boolean expression containing two qualified expressions makes jc1 die.)
Thu Aug 26 09:10:58 1999  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.

This patch fixes the Java net PR #32.

From-SVN: r28894
1999-08-26 09:51:49 -07:00
Kaveh R. Ghazi
be245ac0a0 gjavah.c (print_name, [...]): Add static prototype.
* 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.

From-SVN: r28862
1999-08-25 13:59:28 +00:00
Alexandre Petit-Bianco
d77613be8b re GNATS gcj/30 (gcj not reporting unimplemented methods)
Sun Aug 22 11:07:41 1999  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.

(This fixes the Java net PR #30,
 http://sourceware.cygnus.com/ml/java-prs/1999-q3/msg00034.html)

From-SVN: r28805
1999-08-22 11:38:07 -07:00
Alexandre Petit-Bianco
79d133336a re GNATS gcj/17 (Internal error: segfault on import-classname clash)
Thu Aug 19 10:26:18 1999  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.

This fixes the net PR #17.

From-SVN: r28765
1999-08-19 13:37:04 -07:00
Alexandre Petit-Bianco
5cbdba6424 [multiple changes]
Wed Aug 18 13:17:15 1999  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.

Tue Aug 17 22:51:44 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * parse.y (java_refold): Added prototype.

Tue Aug 17 21:48:41 1999  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.

Mostly bug fixes in some forms of compound expressions and
break/continue target lookup.

From-SVN: r28758
1999-08-18 17:53:20 -07:00
Kaveh R. Ghazi
49f48c719e Warning fixes:
* 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.

From-SVN: r28498
1999-08-04 13:30:51 +00:00
Richard Henderson
0ae70c6a94 decl.c: Include defaults.h instead of expr.h.
* decl.c: Include defaults.h instead of expr.h.
        * parse.y: Likewise.

From-SVN: r28431
1999-08-02 17:57:50 -07:00
Jakub Jelinek
e438e1b788 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.

From-SVN: r28419
1999-08-02 16:14:31 -07:00
Bernd Schmidt
b384405b34 Backport of GC branch patches part 1: kill eh status saving.
From-SVN: r28357
1999-07-31 12:46:53 +00:00
Kaveh R. Ghazi
cd531a2edd Warning fixes:
* 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'.

From-SVN: r28344
1999-07-30 18:31:34 +00:00
Andrew Haley
aa4759c11c lang.c (flag_use_divide_subroutine): New variable.
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.

From-SVN: r28208
1999-07-21 14:28:33 +00:00
Alexandre Petit-Bianco
7705e9db01 re GNATS gcj/12 (gcj accepts invalid code where an exception must be caught/thrown)
Tue Jul 20 13:20:05 1999  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.

(This fixes PR #12. Libgcj's java/net must be updated in order to compiles
 with a patch at this URL:
 http://sourceware.cygnus.com/ml/java-patches/1999-q3/msg00048.html)

From-SVN: r28196
1999-07-20 13:56:10 -07:00
Alexandre Petit-Bianco
1a6d4fb73c [multiple changes]
Sat Jul  3 22:26:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* expr.c (force_evaluation_order): Save the COMPOUND_EXPR'ed
 	CALL_EXPR, to avoid order of evaluation changes.
Fri Jul  2 17:44:08 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (qualify_ambiguous_name): Do not use
 	IDENTIFIER_LOCAL_VALUE when name is a STRING_CST.
Thu Jul  1 23:31:16 1999  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.
Wed Jun 30 17:27:58 1999  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.

From-SVN: r27998
1999-07-07 06:11:03 -07:00
Alexandre Petit-Bianco
2c56429a68 [multiple changes]
Fri Jun 25 13:35:19 1999  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.
Thu Jun 24 13:12:15 1999  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.
Wed Jun 23 14:37:15 1999  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.
Tue Jun 22 20:43:49 1999  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.

From-SVN: r27773
1999-06-25 09:33:20 -07:00
Alexandre Petit-Bianco
8576f0942e [multiple changes]
Mon Jun 14 13:13:39 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (qualify_ambiguous_name): Reorganized the post
 	evaluation of non WFL leading expression nodes.
Fri Jun 11 21:37:18 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (qualify_ambiguous_name): Handle ARRAY_REF after
 	CONVERT_EXPR.
Thu Jun 10 22:26:17 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (qualify_ambiguous_name): Handle qualified expression
 	beginning with a STRING_CST.
Thu Jun 10 20:27:25 1999  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.

From-SVN: r27523
1999-06-14 10:15:35 -07:00
Alexandre Petit-Bianco
fe0e4d76c2 parse.y (note_possible_classname): Mark returned node with QUALIFIED_P only if the original class name contained a '/'.
Mon Jun  7 16:09:51 1999  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 '/'.

From-SVN: r27396
1999-06-07 10:08:34 -07:00
Alexandre Petit-Bianco
930248932e [multiple changes]
Fri May 28 18:22:45 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
        * parse.y (lookup_field_wrapper): Unified returned value to NULL
          or the searched field decl.
Fri May 28 11:34:05 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
        * parse.y (fold_constant_for_init): Convert numerical constant
        values to the type of the assigned field.
Thu May 27 19:57:40 1999  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.
Wed May 26 18:06:02 1999  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.

From-SVN: r27229
1999-05-28 12:26:08 -07:00
Alexandre Petit-Bianco
2ba1f15fb9 parse.y (qualify_ambiguous_name): Take into account that a CONVERT_EXPR might specify a type as a WFL.
Wed May 26 15:33:06 1999  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.

From-SVN: r27181
1999-05-26 08:41:34 -07:00
Alexandre Petit-Bianco
dc4e6ccfe5 [multiple changes]
Tue May 25 15:06:13 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
        * parse.y (patch_assignment): Save the rhs before using it as an
        argument to _Jv_CheckArrayStore.
Tue May 25 11:23:59 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* lex.c (java_parse_doc_section): Fixed `tag' buffer size.
Mon May 24 13:26:00 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
        * lex.c (java_lex): Accepts `+' or `-' after the beginning of a
        floating point litteral only when the exponent indicator has been
        parsed.

From-SVN: r27147
1999-05-25 09:36:07 -07:00
Alexandre Petit-Bianco
5256aa37b4 [multiple changes]
Sat May 22 13:54:41 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (formal_parameter:): Construct argument tree list
 	element even if a yet unsupported final parameter was encountered.
Tue May 18 00:28:58 1999  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.

From-SVN: r27104
1999-05-22 07:38:13 -07:00
Kaveh R. Ghazi
ab3a6dd6e2 Warning fixes:
* 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.

From-SVN: r27030
1999-05-19 11:30:30 +00:00
Alexandre Petit-Bianco
2e5eb5c578 parse.y (constructor_block_end:): New rule, tagged <node>.
Mon May 17 19:20:24 1999  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'.

From-SVN: r26978
1999-05-17 12:33:13 -07:00
Alexandre Petit-Bianco
9dd939b278 parse.y (statement_nsi:): Pop `for' statement block.
Mon May 17 18:01:40 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (statement_nsi:): Pop `for' statement block.
	(java_complete_lhs): Labelled blocks containing no statement are
 	marked as completing normally.

From-SVN: r26976
1999-05-17 11:09:15 -07:00
Alexandre Petit-Bianco
1fb89a4d59 parse.y (java_check_regular_methods): Warning check on not overriding methods with default access in other packages...
Thu May 13 18:30:48 1999  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 avoid gcc generating an irrelevant warning.

From-SVN: r26930
1999-05-13 12:01:19 -07:00
Alexandre Petit-Bianco
ce6e914727 check-init.c (check_init): Removed code accepting to see things falling through default:, when doing xrefs.
Thu May 13 13:23:38 1999  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.

From-SVN: r26926
1999-05-13 07:33:37 -07:00
Andrew Haley
138657ecb0 parse.y (source_end_java_method): If the current method contains any exception handlers...
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.

From-SVN: r26884
1999-05-11 12:09:13 +00:00
Per Bothner
cd9643f75b class.c (make_field_value): DECL_INITIAL may be a string literal...
d
	* 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.

From-SVN: r26790
1999-05-05 14:10:07 -07:00
Alexandre Petit-Bianco
7f10c2e2fc check-init.c (check_init): Exclude a case of error when doing xrefs.
Fri Apr 30 17:54:40 1999  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): To not fold initialized static fields when
 	doing xrefs.
	(java_complete_lhs): Likewise.

From-SVN: r26758
1999-05-03 09:45:18 -07:00
Alexandre Petit-Bianco
7f1d48663e class.c (layout_class_method): Generate <clinit>'s rtl for interfaces.
Sat Apr 24 16:50:19 1999  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.

From-SVN: r26661
1999-04-26 12:09:37 -07:00
Alexandre Petit-Bianco
5423609c57 decl.c (predef_filenames, [...]): New globals
Wed Apr 21 11:13:36 1999  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.

From-SVN: r26578
1999-04-21 06:49:49 -07:00
Alexandre Petit-Bianco
e8fc739639 lang.c (lang_decode_option): Fixed returned value when parsing -fxref=...' and -Wall'.
Mon Apr 19 14:44:48 1999  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 treatement 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.

From-SVN: r26550
1999-04-19 08:45:57 -07:00
Tom Tromey
a3f406ce4c xref.h (enum): Removed trailing comma.
* xref.h (enum): Removed trailing comma.
	* parse.y (resolve_qualified_expression_name): Added missing
	`break'.

From-SVN: r26546
1999-04-19 10:20:27 +00:00
Alexandre Petit-Bianco
b3edebcf49 parse.y (patch_unaryop): Fix ++ operator check on array references.
Mon Apr 12 18:27:32 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (patch_unaryop): Fix ++ operator check on array
 	references.

From-SVN: r26382
1999-04-12 11:32:22 -07:00
Alexandre Petit-Bianco
2622b94785 parse.y (patch_assignment): Added ArrayStoreException runtime check.
Tue Apr  6 15:15:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
        * parse.y (patch_assignment): Added ArrayStoreException runtime
        check.

From-SVN: r26318
1999-04-09 09:26:33 -07:00
Per Bothner
d1472141a5 parse.y (patch_binop): Don't fold if non-constant and emiting class files.
h
	* parse.y (patch_binop):  Don't fold if non-constant and emiting
	class files.

From-SVN: r26214
1999-04-06 07:27:17 -07:00
Kaveh R. Ghazi
4504ead1db class.c (add_method_1): Cast the argument of `bzero' to PTR.
* 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.
        * xref.c: Don't include <stdio.h>.

From-SVN: r26203
1999-04-05 13:04:38 +00:00
Alexandre Petit-Bianco
d4370213f6 parse.y (struct parser_ctxt *ctxp): Now global.
Mon Apr  5 11:24:19 1999  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.

From-SVN: r26201
1999-04-05 05:00:08 -07:00
Alexandre Petit-Bianco
1504b2b439 [multiple changes]
Tue Mar 30 11:31:53 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (patch_bc_statement): Fixed identation and a bogus
 	`printf' format.
Tue Mar 30 11:29:29 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* parse.y (patch_assignment): Allow static variables in other
 	classes to be assigned.

From-SVN: r26065
1999-03-30 03:35:27 -08:00
Alexandre Petit-Bianco
f099f336d1 [multiple changes]
Sat Mar 27 15:13:21 1999  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.
Sat Mar 27 14:16:32 1999  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.

From-SVN: r26018
1999-03-27 08:17:16 -08:00
Per Bothner
b635eb2fc0 parse.y (complete_loop_body): Rename to finish_loop_body.
d
	* 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.

From-SVN: r26015
1999-03-27 08:05:24 -08:00
Alexandre Petit-Bianco
de0b553f86 parse.y (find_applicable_accessible_methods_list): When dealing with interface...
Tue Mar 23 10:48:24 1999  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.

From-SVN: r25925
1999-03-23 03:20:03 -08:00
Kaveh R. Ghazi
9ee9b55502 Warning fixes:
* 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'.

From-SVN: r25921
1999-03-23 07:24:15 +00:00
Alexandre Petit-Bianco
1982388a57 [multiple changes]
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.

From-SVN: r25861
1999-03-19 04:56:16 -08:00
Per Bothner
aee48ef856 parse.y (java_complete_lhs): Call force_evaluation_order after patch_newarray.
* parse.y (java_complete_lhs):  Call force_evaluation_order
	after patch_newarray.
	(patch_binop):  Don't call fold if there are side effects.

From-SVN: r25806
1999-03-16 08:25:12 -08:00
Alexandre Petit-Bianco
642f15d187 parse.y (java_stabilize_reference): Use save_expr instead of building a SAVE_EXPR node.
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.

From-SVN: r25797
1999-03-15 19:38:15 -08:00
Per Bothner
2c3199bc4a class.c (make_class): Don't set CLASS_P here (because this function is also called by...
d
	* 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.

From-SVN: r25784
1999-03-15 05:09:44 -08:00
Alexandre Petit-Bianco
2aa11e9772 parse.y (java_stabilize_reference): Return NODE when patching a COMPOUND_EXPR.
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 assignement. Insert the
	cast. If not processing `+' fix string constants before processing
	binop.

From-SVN: r25733
1999-03-12 10:19:04 -08:00
Kaveh R. Ghazi
7e21fe59b2 Warning fixes:
* 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'.

From-SVN: r25731
1999-03-12 17:13:24 +00:00
Per Bothner
c0d87ff6f9 *** empty log message ***
From-SVN: r25640
1999-03-08 05:34:10 -08:00
Tom Tromey
345137c78a parse.y (read_import_dir): Use |=', not +=', to set `found'.
* 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.

From-SVN: r25439
1999-02-25 12:36:03 +00:00
Per Bothner
939d7216dc decl.c (build_result_decl): New method.
d
	* 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.

From-SVN: r25346
1999-02-21 07:42:27 -08:00
Per Bothner
dc0b3eff72 Force left-to-right evaluation of binary operations etc.
d
	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.

From-SVN: r25328
1999-02-19 08:33:22 -08:00
Per Bothner
78d21f929b parse.y (obtain_incomplete_type): Don't wrap unknown types in TREE_LIST - just chain the POINTER_TYPEs together.
d
	* 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.

From-SVN: r25324
1999-02-19 06:55:23 -08:00
Alexandre Petit-Bianco
e28cd97b00 parse.y (check_pkg_class_access): Allow private class access within the same package.
* 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.

From-SVN: r25317
1999-02-19 05:27:35 -08:00
Per Bothner
a7d8d81f7c Use new TRY_FINALLY_EXPR tree node.
�
Use new TRY_FINALLY_EXPR tree node.  See ChangeLog.

From-SVN: r25314
1999-02-19 04:32:50 -08:00
Alexandre Petit-Bianco
0b4d333e01 [multiple changes]
Thu Jan 28 11:50:11 1999  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.
Wed Jan 27 10:19:29 1999  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.

From-SVN: r25244
1999-02-16 03:49:46 -08:00
Alexandre Petit-Bianco
e3884b7182 parse.y (valid_builtin_assignconv_identity_widening_p): Got rid of an ancient workaround.
Thu Feb 11 21:25:51 1999  Alexandre Petit-Bianco  <apbianco@cygnus.com>
 	* parse.y (valid_builtin_assignconv_identity_widening_p): Got rid
 	of an ancient workaround.

From-SVN: r25238
1999-02-16 02:26:57 -08:00
Alexandre Petit-Bianco
09ed0f70df lex.c (java_lang_cloneable): Initialize.
Tue Feb  9 19:31:09 1999  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.

From-SVN: r25114
1999-02-09 11:40:16 -08:00
Alexandre Petit-Bianco
34f4db93fc parse.h: DECL_P renamed JDECL_P.
Mon Feb  8 11:50:50 1999  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.

From-SVN: r25082
1999-02-08 03:54:04 -08:00
Alexandre Petit-Bianco
acd663ee8d lex.c (java_read_char): Fixed utf8 decoding.
Fri Jan 29 18:19:02 1999  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.

From-SVN: r25078
1999-02-08 03:20:39 -08:00
Per Bothner
bccaf73a05 parse.y (patch_method_invocation): Handle calling static methods...
d
	* 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.

From-SVN: r24968
1999-02-02 04:06:59 -08:00
Kaveh R. Ghazi
d4476be259 Warning fixes:
* 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'.

From-SVN: r24835
1999-01-23 20:47:03 +00:00
Alexandre Petit-Bianco
d8fccff5e0 java-tree.h: (check_for_initialization): Added prototype.
Sun Jan 17 22:34:22 1999  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.

From-SVN: r24758
1999-01-19 02:27:23 -08:00
Andrew Haley
73333a8791 parse.y (patch_binop): Do a type conversion from signed to unsigned and then back to signed when...
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.

From-SVN: r24741
1999-01-18 06:29:26 +00:00
Per Bothner
aabd704825 expr.c (process_jvm_instruction): Coerce to correct Throwable sub-type the result of the call that gets the...
d
	* 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.

From-SVN: r24697
1999-01-16 02:00:29 -08:00
Andrew Haley
9684789222 expr.c (generate_name): Name prefix changed to avoid clashes with assembler temp labels.
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 assignement may not be
	generated at all and the synchronized statement will read an
	uninitialized variable.

From-SVN: r24649
1999-01-13 06:13:37 +00:00
Alexandre Petit-Bianco
ba179f9f6f class.c (maybe_layout_super_class): Fixed returned value.
Wed Jan 13 01:24:54 1999  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.
Fix an array dimension counting bug and some random other ones.

From-SVN: r24648
1999-01-12 20:01:43 -08:00
Per Bothner
5bba48071e parse.y (build_new_array_init): Don't set EXPR_WFL_LINECOL on CONSTRUCTOR (since that trashes TREE_CST_RTL).
d
	* 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.

From-SVN: r24578
1999-01-09 04:49:03 -08:00
Jeff Law
e511adc05d Fix copyrights.
From-SVN: r24538
1999-01-06 14:10:08 -07:00
Per Bothner
bc3ca41b49 check-init.c: New file.
8
	* check-init.c:  New file.  Checks for definite assignment.
Various minor other changes;  see ChangeLog.

From-SVN: r24523
1999-01-06 09:49:38 -08:00
Graham Stott
36635152c9 parse.y: include system.h instead of including standard headers directly with the...
8
	* parse.y : include system.h instead of including
	standard headers directly with the exception of <dirent.h>.

From-SVN: r24519
1999-01-06 09:36:50 -08:00
Per Bothner
5a005d9ead expr.c (process_jvm_instruction): Do load_type_state after JSR.
d
	* 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.

From-SVN: r24406
1998-12-23 02:46:45 -08:00
Tom Tromey
847fe79126 parse.y (check_class_interface_creation): Use DIR_SEPARATOR consistently.
* parse.y (check_class_interface_creation): Use DIR_SEPARATOR
	consistently.

From-SVN: r24370
1998-12-18 10:01:34 +00:00
Tom Tromey
fa322ab500 parse.y (DIR_SEPARATOR): New define.
* parse.y (DIR_SEPARATOR): New define.
	(check_class_interface_creation): Use it.

From-SVN: r24367
1998-12-17 20:13:16 +00:00
Per Bothner
83a86272a2 * parse.y (create_interface): Remove bogus test.
From-SVN: r24348
1998-12-16 09:44:49 -08:00
Per Bothner
5b09b33e5f parse.y (fold_constant_for_init): New function.
d
	* 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.

From-SVN: r24316
1998-12-14 11:22:28 -08:00
Per Bothner
3e78f871ac parse.y (patch_method_invocation): If class_decl is null (e.g.
�
	* 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).

From-SVN: r24298
1998-12-13 09:51:02 -08:00
Per Bothner
63a212ed3e Loks of changes so we can better compile from source.
8
Loks of changes so we can better compile from source.  See ChangeLog.

From-SVN: r24280
1998-12-12 13:48:14 -08:00
Alexandre Petit-Bianco
7525cc04a8 parse.y (<type_declaration>): Do maybe_generate_clinit last.
�
	* 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.

From-SVN: r24274
1998-12-12 12:04:35 -08:00
Per Bothner
fdec99c620 expr.c (encode_newarray_type, [...]): New functions.
d
	* 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.

From-SVN: r24273
1998-12-12 11:25:01 -08:00
Alexandre Petit-Bianco
4a5f66c301 decl.c (long_zero_node, [...]): New global variables, initialized.
Thu Dec 10 20:00:54 1998  Alexandre Petit-Bianco  <apbianco@sendai.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.
Fixes a bug occuring when an error occurs in constructor
declaration. Fixes a bug on ++/-- operators on non integer operands.

From-SVN: r24255
1998-12-10 12:28:00 -08:00
Alexandre Petit-Bianco
1179ebc2fd parse.y (array_initializer:): Array init operand is NULL_TREE instead of a TREE_LIST of NULL_TREEs when...
Thu Dec 10 11:02:49 1998  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.
Fixes and cleanups for array initializers.

From-SVN: r24233
1998-12-10 03:24:46 -08:00
Alexandre Petit-Bianco
f8976021c4 java-tree.def (NEW_ARRAY_INIT): New Java tree code.
Wed Dec  9 15:37:05 1998  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.
Parse and walk array initializer nodes.

From-SVN: r24224
1998-12-09 07:50:12 -08:00
Alexandre Petit-Bianco
ac8258565c parse.y (array_initializer): Tagged <node>.
Mon Dec  7 15:13:52 1998  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.
Fixes a ?: bug when string concatenation operator are in
operands. Makes duplicate loop label declaration an error. Fixes
random bugs.

From-SVN: r24164
1998-12-07 08:23:02 -08:00
Per Bothner
89e09b9a23 constants.c (find_methodref_index): When the class is an interface...
d
	* 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.

From-SVN: r24163
1998-12-07 07:43:16 -08:00
Alexandre Petit-Bianco
1886c9d836 java-tree.h (java_layout_seen_class_methods): New function prototype.
Thu Dec  3 17:11:12 1998  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.
Handles an obsolete way of declaring methods returning an array. Does
a better job at laying out class methods before code generation.

From-SVN: r24077
1998-12-03 09:53:02 -08:00
Per Bothner
55593efd85 parse,y (patch_synchronized_statement): Set CAN_COMPLETE_NORMALLY.
8
	* parse,y (patch_synchronized_statement):  Set CAN_COMPLETE_NORMALLY.

From-SVN: r24074
1998-12-03 07:58:20 -08:00
Alexandre Petit-Bianco
c3f2a47690 class.c (layout_class_method): Call build_java_argument_signature on constructors too.
Wed Dec  2 15:52:25 1998  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.

From-SVN: r24065
1998-12-02 08:47:33 -08:00
Alexandre Petit-Bianco
82371d41c2 class.c (layout_class_method): Don't report error on non-static overriding static if the method is private.
Tue Dec  1 13:53:24 1998  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.
This patch corrects the way unreachable statement and missing return
statement errors are reported. It also fixes random bugs.

From-SVN: r24036
1998-12-01 06:28:02 -08:00
Per Bothner
de4c7b029c java-tree.h (end_params_node): Declare global.
* 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.

From-SVN: r23871
1998-11-25 09:10:57 -08:00
Alexandre Petit-Bianco
23a79c6192 [multiple changes]
Tue Nov 24 17:06:38 1998  Per Bothner  <bothner@cygnus.com>
	* (generate_classfile): Always write class access flag with
 	ACC_SUPER set.
Tue Nov 24 16:34:33 1998  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.
A step forward truly mixing .class and .java during package
compilation. Includes a Per's patch.

From-SVN: r23834
1998-11-24 09:57:41 -08:00
Per Bothner
10100cc79c java-tree.def (CASE_EXPR, [...]): Kind is 'x', not '1'.
�
	* 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).

From-SVN: r23830
1998-11-24 05:16:05 -08:00
Alexandre Petit-Bianco
c877974e79 class.c (unmangle_classname): Set QUALIFIED_P when appropriate.
Wed Nov 18 23:54:53 1998  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.
Fixed problems found when compiling a mixture of .class and .java
files in the same package. Some support for the compilation of libjava.

From-SVN: r23704
1998-11-18 17:54:44 -08:00
Per Bothner
9bbc7d9f4c decl.c (error_mark_node): New global.
�
	* 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.

From-SVN: r23661
1998-11-15 06:37:52 -08:00
Per Bothner
15fdcfe952 Extensive changes.
�
Extensive changes.  See ChangeLog.

From-SVN: r23621
1998-11-12 08:15:18 -08:00
Alexandre Petit-Bianco
5e942c5066 class.c (is_compiled_class): Call safe_layout_class for class compiled from source.
Tue Nov 10 12:34:03 1998  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.
This improves method checking, gets rid of a cross file type
dependency bug and does a more robust job at laying out classes when
necessary. It unifies the regular methods and constructors lookup. It
implements the `instanceof' operator and interface method
invocations. It also fixes random bugs.

From-SVN: r23599
1998-11-10 10:04:25 -08:00
Alexandre Petit-Bianco
22eed1e678 class.c (layout_class): Don't mangle <finit>, produce __finit<class> instead.
Wed Oct 28 08:03:31 1998  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.
This patch implements the conditional operator, fixes the super
invokation mode, implements most of what is required for constructors
and changes the way source files are handled by the front-end.

From-SVN: r23403
1998-10-28 05:06:17 -08:00
Tom Tromey
8603f9c5b0 jcf-io.c (find_class): Use saw_java_source to determine when to look for `.java' file.
* 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".

From-SVN: r23219
1998-10-22 12:06:05 +00:00
Alexandre Petit-Bianco
866e9df806 class.c (emit_register_classes): Renamed from emit_register_class.
Wed Oct 21 07:54:11 1998  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.
Prevents the generation of multiple static constructor for a
compilation unit.

From-SVN: r23208
1998-10-21 01:00:11 -07:00
Alexandre Petit-Bianco
b351b287b7 class.c (is_compiled_class): New local variable seen_in_zip.
Tue Oct 20 09:15:38 1998  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-parse.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.
Add support for the use of `&' as a file separator on the jc1 command
line.

From-SVN: r23201
1998-10-20 04:16:37 -07:00
Alexandre Petit-Bianco
c583dd46ad lex.c (setjmp.h): No longer included.
Fri Oct 16 10:59:01 1998  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.
Implements the alternate form `T a[]' of array declarations. Fixes a
bug when building access to certain fields. Fixed a compilation
warning when lex.h is included from somewhere else than parse.y

From-SVN: r23142
1998-10-16 12:36:39 -07:00
Alexandre Petit-Bianco
0a2138e2d2 java-tree.h (pop_labeled_block, [...]): New function prototypes.
Wed Oct 14 18:21:29 1998  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.
Suppresses warnings during the compilation of parse.y (including
lex.c) and lang.c

From-SVN: r23090
1998-10-14 12:18:07 -07:00
Alexandre Petit-Bianco
b9f7e36ca1 decl.c (runtime_exception_type_node, [...]): New global variables.
Tue Oct 13 03:50:28 1998  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
Implements the `synchronized' statement, the `throw' statements and
the `throws' clause. Fixes method invocation bugs.

From-SVN: r23087
1998-10-14 08:11:04 -07:00
Per Bothner
b67d701b4f Merge from Cygnus internal source tree.
From-SVN: r23023
1998-10-12 05:43:51 -07:00
Anthony Green
e04a16fbee Initial revision
From-SVN: r22299
1998-09-06 15:36:06 +00:00