Commit Graph

85 Commits

Author SHA1 Message Date
Alexandre Petit-Bianco
a93eddcf62 [multiple changes]
2000-10-11  Rodney Brown  <RodneyBrown@mynd.com>

        * java-tree.h: Constify current_encoding.
        * lang.c: Constify current_encoding.

2000-10-10  Jeff Sturm  <jeff.sturm@appnet.com>

        * jvgenmain.c (class_mangling_suffix): Omit `.'.
        (main): Use `$' when NO_DOLLAR_IN_LABEL is not set, otherwise `.'.

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

        * expr.c (java_lang_expand_expr): Reinstall 1999-08-14 Anthony's
        patch. Fixes gcj/340.

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

From-SVN: r36864
2000-10-13 14:06:45 -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
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
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
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
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
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
Alexandre Petit-Bianco
25bdcbc524 decl.c (finit_leg_identifier_node): New global.
2000-08-15  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * decl.c (finit_leg_identifier_node): New global.
        (init_decl_processing): Use `finit$' to initialize
        finit_identifier_node. Use `$finit$' to initialize
        finit_leg_identifier_node.
        * expr.c (expand_java_field_op): Use ID_FINIT_P.
        * java-tree.h (finit_identifier_node): Changed attached comment.
        (finit_leg_identifier_node): New declaration.
        (ID_FINIT_P): Take finit_identifier_node and
        finit_leg_identifier_node into account. This is a backward
        compatibility hack.

(http://gcc.gnu.org/ml/gcc-patches/2000-08/msg00664.html
 See also the matching Java run-time patch:
 http://sources.redhat.com/ml/java-discuss/2000-08/msg00031.html)

From-SVN: r35768
2000-08-17 14:50:48 -07: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
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
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
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
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
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
Tom Tromey
2771fe54e3 java-tree.h (boolean_array_vtable, [...]): Declare.
* java-tree.h (boolean_array_vtable, byte_array_vtable,
	char_array_vtable, short_array_vtable, int_array_vtable,
	long_array_vtable, float_array_vtable, double_array_vtable):
	Declare.
	* expr.c (get_primitive_array_vtable): New function.
	(create_primitive_vtable): New function.
	(java_lang_expand_expr): Enable code to statically generate
	arrays.
	* decl.c (init_decl_processing): Create primitive vtables.
	(boolean_array_vtable, byte_array_vtable, char_array_vtable,
	short_array_vtable, int_array_vtable, long_array_vtable,
	float_array_vtable, double_array_vtable): Define.

From-SVN: r34314
2000-05-31 23:55:54 +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
Tom Tromey
43490bec9d java-tree.h (build_instanceof): Declare.
* java-tree.h (build_instanceof): Declare.
	(build_get_class): Declare.
	* parse.y (patch_binop): Use build_instanceof.
	* expr.c (build_instanceof): New function.  If class is final,
	don't make a function call.
	(expand_java_INSTANCEOF): Use it.
	(build_get_class): New function.

From-SVN: r34021
2000-05-19 15:59:15 +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
652f25043a boehm.c (mark_reference_fields): Don't mark RawData fields.
* boehm.c (mark_reference_fields): Don't mark RawData fields.
	Keep track of when we've seen a reference field after a
	non-reference field.
	(get_boehm_type_descriptor): Handle case where we see
	non-reference fields but no trailing reference field.
	* decl.c (rawdata_ptr_type_node): Define.
	(init_decl_processing): Initialize rawdata_ptr_type_node.
	* java-tree.h (rawdata_ptr_type_node): Declare.

From-SVN: r33701
2000-05-05 04:23:23 +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
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
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
Richard Kenner
770ae6cc71 * Rework fields used to describe positions of bitfields and
modify sizes to be unsigned and use HOST_WIDE_INT.
	* alias.c (reg_known_value_size): Now unsigned.
	* c-typeck.c (build_unary_op, case ADDR_EXPR): Use byte_position.
	(really_start_incremental_init): Use bitsize_zero_node.
	(push_init_level, pop_init_level, output_init_element): Likewise.
	Use bitsize_unit_node and bitsize_one_node.
	(output_pending_init_elements, process_init_element): Likewise.
	* combine.c (combine_max_regno, reg_sign_bit_copies): Now unsigned.
	(make_extraction): Position and length HOST_WIDE_INT and unsigned
	HOST_WIDE_INT, respectively.
	(get_pos_from_mask): Passed in value is unsigned HOST_WIDE_INT.
	(num_sign_bit_copies): Returns unsigned.
	BITWIDTH now unsigned; rework arithmetic.
	Remove recursive call from arg to MAX.
	(combine_instructions, init_reg_last_arrays): NREGS now unsigned.
	(setup_incoming_promotions, can_combine_p, try_combine, simplify_set):
	REGNO now unsigned.
	(set_nonzero_bit_and_sign_copies): NUM now unsigned.
	(find_split_point, expand_compound_operation, make_extraction): LEN
	now unsigned HOST_WIDE_INT, POS now HOST_WIDE_INT.
	(make_field_assignment): Likewise.
	(combine_simplify_rtx): Add cast.
	(expand_compound_operation): MODEWIDTH now unsigned; rework arithmetic.
	(force_to_mode): WIDTH now unsigned; add cast.
	(if_then_else_cond): SIZE now unsigned.
	(nonzero_bits): MODE_WIDTH, RESULT_WIDTH, and WIDTH now unsigned.
	(extended_count): Now returns unsigned.
	(simplify_shift_const): COUNT unsigned; arg is now INPUT_COUNT.
	Add SIGNED_COUNT variable; MODE_WORDS and FIRST_COUNT now unsigned.
	(simplify_comparison): MODE_WIDTH now unsigned.
	(update_table_tick): REGNO and ENDREGNO now unsigned; new var R.
	(mark_used_regs_combine): Likewise; rework arithmetic.
	(record_value_for_reg): REGNO, ENDREGNO, and I now unsigned.
	(record_dead_and_set_regs, reg_dead_at_p, distribute_notes): Likewise.
	(record_promoted_value): REGNO now unsigned.
	(get_last_value_validate): REGNO, ENDREGNO, and J now unsigned.
	(get_last_value): REGNO now unsigned.
	(use_crosses_set_p): REGNO and ENDREGNO now unsigned.
	(reg_dead_regno, reg_dead_endregno): Now unsigned.
	(remove_death): Arg REGNO now unsigned.
	(move_deaths):  REGNO, DEADREGNO, DEADEND, OUREND, and I now unsigned.
	(reg_bitfield_target_p): REGNO, REGNO, ENDREGNO, and ENDTREGNO
	now unsigned.
	* convert.c (convert_to_integer): INPREC and OUTPREC now unsigned.
	* cse.c (struct qty_table_elem): FIRST_REG and LAST_REG now unsigned.
	(struct cse_reg_info): REGNO now unsigned.
	(cached_regno): Now unsigned.
	(REGNO_QTY_VALID_P): Add cast.
	(make_new_qty, make_regs_eqv, delete_reg_eqiv): Regno args unsigned.
	(remove_invalid_regs): Likewise.
	(remove_invalid_subreg_refs): Likewise; arg WORD also unsigned
	as are variables END and I.
	(get_cse_reg_info, insert): Likewise.
	(mention_regs, invalidate_for_call): REGNO, ENDREGNO, and I unsigned.
	(canon_hash): Likewise.
	(insert_regs, lookup_for_remove): REGNO now unsigned.
	(invalidate): REGNO, ENDREGNO, TREGNO, and TENDREGNO now unsigned.
	New variable RN.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't check for REGNO < 0.
	* dwarf2out.c (dwarf2ou_frame_debug_expr): Remove cast.
	* emit-rtl.c (subreg_realpart_p): Add cast.
	(operand_subword): Arg I is now unsigned as is var PARTWORDS.
	(operand_subword_force): Arg I is now unsigned.
	* except.c (eh_regs): Variable I is now unsigned.
	* explow.c (hard_function_value): BYTES is unsigned HOST_WIDE_INT.
	* expmed.c (store_fixed_bit_field): Position is HOST_WIDE_INT;
	length is unsigned HOST_WIDE_INT; likewise for internal variables.
	(store_split_bit_field, extract_fixed_bit_field): Likewise.
	(extract_split_bit_field, store_bit_field, extract_bit_field):
	Likewise.
	* expr.c (store_constructor_fields, store_constructor, store_field):
	Positions are HOST_WIDE_INT and lengths are unsigned HOST_WIDE_INT.
	(expand_assignment, expand_expr, expand_expr_unaligned): Likewise.
	(do_jump): Likewise.
	(move_by_pieces, move_by_pieces_ninsns, clear_by_pieces):
	MAX_SIZE is now unsigned.
	(emit_group_load): BYTEPOS is HOST_WIDE_INT; BYTELEN is unsigned.
	(emit_group_store): Likewise.
	(emit_move_insn): I now unsigned.
	(store_constructor): Use host_integerp, tree_low_cst, and
	bitsize_unit_node.
	(get_inner_reference): Return bitpos and bitsize as HOST_WIDE_INT.
	Rework all calculations to use trees and new fields.
	* expr.h (promoted_input_arg): Regno now unsigned.
	(store_bit_field, extract_bit_field): Adjust types of pos and size.
	(mark_seen_cases): Arg is HOST_WIDE_INT.
	* flow.c (verify_wide_reg_1): REGNO now unsigned.
	* fold-const.c (decode_field_reference): Size and pos HOST_WIDE_INT;
	precisions and alignments are unsigned.
	(optimize_bit_field_compare, fold_truthop): Likewise.
	(int_const_binop): Adjust threshold for size_int_type_wide call.
	(fold_convert): Likewise.
	(size_int_type_wide): Make table larger and fix thinko that only
	had half of table used.
	(all_ones_mask_p, fold): Precisions are unsigned.
	* function.c (put_reg_info_stack): REGNO is unsigned.
	(instantiate_decl): Size is HOST_WIDE_INT.
	(instantiate_virtual_regs): I is unsigned.
	(assign_parms): REGNO, REGNOI, and REGNOR are unsigned.
	(promoted_input_arg): REGNO is unsigned.
	* function.h (struct function): x_max_parm_reg is now unsigned.
	* gcse.c (max_gcse_regno): Now unsigned.
	(struct null_pointer_info): min_reg and max_reg now unsigned.
	(lookup_set, next_set): REGNO arg now unsigned.
	(compute_hash_table): REGNO and I now unsigned.
	(handle_avail_expr): regnum_for_replacing now unsigned.
	(cprop_insn): REGNO now unsigned.
	(delete_null_pointer_checks_1): BLOCK_REG now pointer to unsigned.
	* ggc-common.c (ggc_mark_tree_children, case FIELD_DECL): New case.
	* global.c (set_preference): SRC_REGNO, DEST_REGNO, and I now unsigned.
	* hard-reg-set.h (reg_class_size): Now unsigned.
	* integrate.c (mark_stores): LAST_REG and I now unsigned; new UREGNO.
	* jump.c (mark_modified_reg): I now unsigned; add cast.
	(rtx_equal_for_thread_p): Add cast.
	* loop.c (max_reg_before_loop): Now unsigned.
	(struct_movable): REGNO now unsigned.
	(try_copy_prop): REGNO arg unsigned.
	(regs_match_p): XN and YN now unsigned.
	(consec_sets_invariant_p, maybe_eliminate_biv): REGNO now unsigned.
	(strength_reduce): Likewise; NREGS also unsigned.
	(first_increment_giv, last_increment_giv unsigned): Now unsigned.
	* loop.h (struct iv_class): REGNO now unsigned.
	(max_reg_before_loop, first_increment_giv, last_increment_giv):
	Now unsigned.
	* machmode.h (mode_size, mode_unit_size): Now unsigned.
	(mode_for_size, smallest_mode_for_size): Pass size as unsigned.
	* optabs.c (expand_binop): I and NWORDS now unsigned.
	(expand_unop): I now unsigned.
	* print-tree.c (print_node): Don't print DECL_FIELD_BITPOS, but do
	print DECL_FIELD_OFFSET and DECL_FIELD_BIT_OFFSET.
	* real.c (significand_size): Now returns unsigned.
	* real.h (significand_size): Likewise.
	* regclass.c (reg_class_size): Now unsigned.
	(choose_hard_reg_mode): Both operands now unsigned.
	(record_reg_classes): REGNO and NR now unsigned.
	(reg_scan): NREGS now unsigned.
	(reg_scan_update): old_max_regno now unsigned.
	(reg_scan_mark_refs): Arg MIN_REGNO and var REGNO now unsigned.
	* reload.c (find_valid_class): BEST_SIZE now unsigned.
	(find_dummy_reload): REGNO, NWORDS, and	I now unsigned.
	(hard_reg_set_here_p): Args BEG_REGNO and END_REGNO now unsigned.
	Likewise for variable R.
	(refers_to_regno_for_reload_p): Args REGNO and END_REGNO now unsigned,
	as are variables INNER_REGNO and INNER_ENDREGNO; add new variable R.
	(find_equiv_reg): Add casts.
	(regno_clobbered_p): Arg REGNO now unsigned.
	* reload.h (struct reload): NREGS now unsigned.
	(refers_to_regno_for_reload_p): Regno args are unsigned.
	(regno_clobbered_p): Likewise.
	* reload1.c (reg_max_ref_width, spill_stack_slot_width): Now unsigned.
	(compute_use_by_pseudos): REGNO now unsigned.
	(find_reg): I and J now unsigned, new variable K, and change loop
	variables accordingly; THIS_NREGS now unsigned.
	(alter_reg): INHERENT_SIZE and TOTAL_SIZE now unsigned.
	(spill_hard_reg): REGNO arg now unsigned; add casts.
	(forget_old_reloads_1): REGNO, NR, and I now unsigned.
	(mark_reload_reg_in_use): Arg REGNO and vars NREGS and I now unsigned.
	(clear_reload_reg_in_use): Arg REGNO and vars NREGS, START_REGNO,
	END_REGNO, CONFLICT_START, and CONFLICT_END now unsigned.
	(reload_reg_free_p, reload_reg_reaches_end_p): Arg REGNO now unsigned.
	(choose_reload_regs): MAX_GROUP_SIZE now unsigned.
	(emit_reload_insns): REGNO now unsigned.
	(reload_cse_move2add): Add cast.
	(move2add_note_store): REGNO and I now unsigned; new variable ENDREGNO
	and rework loop.
	* resource.c (mark_referenced_resources, mark_set_resources): New
	variable R; REGNO and LAST_REGNO now unsigned.
	(mark_target_live_regs): J and REGNO now unsigned.
	* rtl.c (mode_size, mode_unit_size): Now unsigned.
	* rtl.h (union rtunion_def): New field rtuint.
	(XCUINT): New macro.
	(ADDRESSOF_REGNO, REGNO, SUBREG_WORD): New XCUINT.
	(operand_subword, operand_subword_force): Word number is unsigned.
	(choose_hard_reg_mode): Operands are unsigned.
	(refers_to-regno_p, dead_or_set_regno_p): Regno arg is unsigned.
	(find_regno_note, find_regno_fusage, replace_regs): Likewise.
	(regno_use_in, combine_instructions, remove_death): Likewise.
	(reg_scan, reg_scan_update): Likewise.
	(extended_count): Return is unsigned.
	* rtlanal.c (refers_to_regno_p): Args REGNO and ENDREGNO and vars I,
	INNER_REGNO, and INNER_ENDREGNO now unsigned; new variable X_REGNO.
	(reg_overlap_mentioned_p): REGNO and ENDREGNO now unsigned.
	(reg_set_last_first_regno, reg_set_last_last_regno): Now unsigned.
	(reg_reg_last_1): FIRS and LAST now unsigned.
	(dead_or_set_p): REGNO, LAST_REGNO, and I now unsigned.
	(dead_or_set_regno_p): Arg TEST_REGNO and vars REGNO and ENDREGNO
	now unsigned.
	(find_regno_note, regno_use_in): Arg REGNO now unsigned.
	(find_regno_fusage): Likewise; also var REGNOTE now unsigned.
	(find_reg_fusage): Variables REGNO, END_REGNO, and I now unsigned.
	(replace_regs): Arg NREGS now unsigned.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Don't check REGNO < 0.
	* simplify-rtx.c (simplify_unary_operation): WIDTH now unsigned.
	(simplify_binary_operation): Likewise.
	(cselib_invalidate_regno): Arg REGNO and variables ENDREGNO, I, and
	THIS_LAST now unsigned.
	(cselib_record_set): Add cast.
	* ssa.c (ssa_max_reg_num): Now unsigned.
	(rename_block): REGNO now unsigned.
	* stmt.c (expand_return): Bit positions unsigned HOST_WIDE_INT;
	sizes now unsigned.
	(all_cases_count): Just return -1 not -2.
	COUNT, MINVAL, and LASTVAL now HOST_WIDE_INT.
	Rework tests to use trees whenever possible.
	Use host_integerp and tree_low_cst.
	(mark_seen_cases): COUNT arg now HOST_WIDE_INT;
	Likewise variable NEXT_NODE_OFFSET; XLO now unsigned.
	(check_for_full_enumeration_handing): BYTES_NEEDED, I to HOST_WIDE_INT.
	* stor-layout.c (mode_for_size): SIZE arg now unsigned.
	(smallest_mode_for_size): Likewise.
	(layout_decl): Simplify handing of a specified DECL_SIZE_UNIT.
	KNOWN_ALIGN is now an alignment, so simplify code.
	Don't turn off DECL_BIT_FIELD if field is BLKmode, but not type.
	(start_record_layout): Renamed from new_record_layout_info.
	Update to new fields.
	(debug_rli, normalize_rli, rli_size_unit_so_far, rli_size_so_far):
	New functions.
	(place_union_field): Renamed from layout_union_field.
	Update to use new fields in rli.
	(place_field): Renamed from layout_field.
	Major rewrite to use new fields in rli; pass alignment to layout_decl.
	(finalize_record_size): Rework to use new fields in rli and handle
	union.
	(compute_record_mode): Rework to simplify and to use new DECL fields.
	(finalize_type_size): Make rounding more consistent.
	(finish_union_layout): Deleted.
	(layout_type, case VOID_TYPE): Don't set TYPE_SIZE_UNIT either.
	(layout_type, case RECORD_TYPE): Call new function names.
	(initialize_sizetypes): Set TYPE_IS_SIZETYPE.
	(set_sizetype): Set TYPE_IS_SIZETYPE earlier.
	(get_best_mode): UNIT is now unsigned; remove casts.
	* tree.c (bit_position): Compute from new fields.
	(byte_position, int_byte_position): New functions.
	(print_type_hash_statistics): Cast to remove warning.
	(build_range_type): Use host_integerp and tree_low_cst to try to hash.
	(build_index_type): Likewise; make subtype of sizetype.
	(build_index_2_type): Pass sizetype to build_range_type.
	(build_common_tree_nodes): Use size_int and bitsize_int to
	initialize nodes; add bitsize_{zero,one,unit}_node.
	* tree.h (DECL_FIELD_CONTEXT): Use FIELD_DECL_CHECK.
	(DECL_BIT_FIELD_TYPE, DECL_QUALIFIER, DECL_FCONTEXT): Likewise.
	(DECL_PACKED, DECL_BIT_FIELD): Likewise.
	(DECL_FIELD_BITPOS): Deleted.
	(DECL_FIELD_OFFSET, DECL_FIELD_BIT_OFFSET): New fields.
	(DECL_RESULT, DECL_SAVED_INSNS): Use FUNCTION_DECL_CHECK.
	(DECL_FRAME_SIZE, DECL_FUNCTION_CODE, DECL_NO_STATIC_CHAIN): Likewise.
	(DECL_INLINE, DECL_BUILT_IN_NONANSI, DECL_IS_MALLOC): Likewise.
	(DECL_BUILT_IN_CLASS, DECL_STATIC_CONSTRUCTOR): Likewise.
	(DECL_STATIC_DESTRUCTOR, DECL_NO_CHECK_MEMORY_USAGE): Likewise.
	(DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT, DECL_NO_LIMIT_STACK) Likewise.
	(DECL_ORIGINAL_TYPE, TYPE_DECL_SUPPRESS_DEBUG): Use TYPE_DECL_CHECK.
	(DECL_ARG_TYPE_AS_WRITEN, DECL_ARG_TYPE): Use PARM_DECL_CHECK.
	(DECL_INCOMING_RTL, DECL_TRANSPARENT_UNION): Likewise.
	(DECL_ALIGN): Adjust to new field in union.
	(DECL_OFFSET_ALIGN): New field.
	(DECL_ERROR_ISSUED, DECL_TOO_LATE): Use LABEL_DECL_CHECK.
	(DECL_IN_TEXT_SECTION): Use VAR_DECL_CHECK.
	(union tree_decl): Add struct for both aligns.
	(enum tree_index): Add TI_BITSIZE_{ZERO,ONE,UNIT}.
	(bitsize_zero_node, bitsize_one_node, bitsize_unit_node): Added.
	(struct record_layout_info): Rework fields to have offset
	alignment and byte and bit position.
	(start_record_layout, place_field): Renamed from old names.
	(rli_size_so_far, rli_size_unit_so_far, normalize_rli): New decls.
	(byte_position, int_byte_position): Likewise.
	(get_inner_reference): Change types of position and length.
	* unroll.c (unroll_loop): New variable R; use for some loops.
	MAX_LOCAL_REGNUM and MAXREGNUM now unsigned.
	(calculate_giv_inc): Arg REGNO now unsigned.
	(copy_loop_body): REGNO and SRC_REGNO now unsigned.
	* varasm.c (assemble_variable): Clean up handling of size using
	host_integerp and tree_low_cst.
	(decode_addr_const): Use byte, not bit, position.
	(output_constructor): bitpos and offsets are HOST_WIDE_INT;
	use tree_low_cst and int_bit_position.
	* objc/objc-act.c (build_ivar_list_initializer): Use byte_position.
	* ch/actions.c (check_missing_cases): BYTES_NEEDED is HOST_WIDE_INT.
	* ch/typeck.c (expand_constant_to_buffer): Use int_byte_position.
	(extract_constant_from_buffer): Likewise.
	* cp/class.c (build_vbase_pointer_fields): layout_field now
	place_field.
	(get_vfield_offset): Use byte_position.
	(set_rtti_entry): Set OFFSET to ssizetype zero.
	(get_binfo_offset_as_int): Deleted.
	(dfs_record_base_offsets): Use tree_low_cst.
	(dfs_search_base_offsets): Likewise.
	(layout_nonempty_base_or_field): Reflect changes in RLI format
	and call byte_position.
	(layout_empty_base): Convert offset to ssizetype.
	(build_base_field): use rli_size_unit_so_far.
	(dfs_propagate_binfo_offsets): Do computation in proper type.
	(layout_virtual_bases): Pass ssizetype to propagate_binfo_offsets.
	(layout_class_type): Reflect changes in RLI names and fields.
	(finish_struct_1): Set DECL_FIELD_OFFSET.
	* cp/dump.c (dequeue_and_dump): Call bit_position.
	* cp/expr.c (cplus_expand_constant): Use byte_position.
	* cp/rtti.c (expand_class_desc): Use bitsize_one_node.
	* cp/typeck.c (build_component_addr): Use byte_position and don't
	special case for zero offset.
	* f/com.c (ffecom_tree_canonize_ptr_): Use bitsize_zero_node.
	(ffecom_tree_canonize_ref_): Likewise.
	* java/class.c (make_field_value): Use byte_position.
	* java/expr.c (JAVA_ARRAY_LENGTH_OFFSET): Use byte_position.
	(java_array_data_offset): Likewise.
	* java/java-tree.h (MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC): Add case to
	bzero call.

From-SVN: r32742
2000-03-25 13:34:13 -05: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
Tom Tromey
64aa33dd9c lang.c (flag_hash_synchronization): New global.
* lang.c (flag_hash_synchronization): New global.
	(lang_f_options): Added `hash-synchronization'.
	* lang-options.h: Mention -fhash-synchronization.
	* java-tree.h (flag_hash_synchronization): Declare.
	* expr.c (java_lang_expand_expr): Only push `sync_info' value when
	hash table synchronization is disabled.
	* decl.c (init_decl_processing): Only push `sync_info' value when
	hash table synchronization is disabled.
	* class.c (make_class_data): Only push `sync_info' field when hash
	table synchronization is disabled.  Removed dead code.

From-SVN: r32593
2000-03-16 18:32:45 +00: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
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
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
Tom Tromey
5830574a16 Makefile.in (JAVA_OBJS): Added boehm.o.
* Makefile.in (JAVA_OBJS): Added boehm.o.
	(boehm.o): New target.
	* Make-lang.in (JAVA_SRCS): Added boehm.c.
	* java-tree.h (flag_use_boehm_gc): Declare.
	(get_boehm_type_descriptor): Declare.
	* lang.c (lang_f_options): Added `use-boehm-gc'.
	(flag_use_boehm_gc): New global.
	* lang-options.h: Added -fuse-boehm-gc.
	* boehm.c: New file.
	* class.c (get_dispatch_table): If class uses a Boehm type
	descriptor, put it in the vtable.
	(make_class_data): Removed dead code.

From-SVN: r32331
2000-03-04 22:27:35 +00:00
Richard Kenner
9df2c88cf7 * Eliminate DECL_FIELD_SIZE.
* builtins.c (built_in_class_names, built_in_names): New variables.
	* c-decl.c (finish_struct): Set specified size in DECL_SIZE.
	* expr.c (expand_expr, case COMPONENT_REF): Get field size from
	DECL_SIZE, not DECL_FIELD_SIZE.
	* print-tree.c (print_node): Remove code that prints extra blank
	lines in some cases.
	Properly handle inline and builtin function cases.
	* stor-layout.c (layout_decl): Get specified size from DEC_SIZE.
	* tree.h (built_in_class_named, built_in_names): New declarations.
	(union tree_decl): Rename internal unions to u1 and u2 and change
	some of their components.
	Add new field built_in_class.
	(DECL_ALIGN, DECL_INCOMING_RTL, DECL_SAVED_INSNS, DECL_FRAME_SIZE):
	Reflect above changes.
	(DECL_FUNCTION_CODE, DECL_BUILT_IN_CLASS): Likewise.
	(DECL_SET_FUNCTION_CODE, DECL_FIELD_SIZE): Deleted.
	* objc/objc-act.c (objc_copy_list): Use DECL_SIZE, not DECL_FIELD_SIZE.
	(encode_field_decl): Likewise; also remove obsolete test for bitfield.
	* ch/ch-tree.h (DECL_ACTION_NESTING_LEVEL): Use new tree union name.
	* ch/decl.c (finish_struct): Don't clear DECL_FIELD_SIZE.
	* ch/typeck.c (make_chill_struct_type): Likewise.
	(apply_decl_field_layout): General cleanup.
	Set DECL_SIZE instead of DECL_FIELD_SIZE.
	* cp/class.c (build_vtbl_or_vbase_field, check_methods): Don't clear
	DECL_FIELD_SIZE.
	(check_bitfield_decl, check_field_decls): Set DECL_SIZE, not
	DECL_FIELD_SIZE.
	* cp/rtti.c (expand_class_desc): Likewise.
	* cp/cp-tree.h (DECL_INIT_PRIORITY): Use underlying union name.
	(THUNK_VCALL_OFFSET): Likewise.
	(THUNK_DELTA): Reflect changes in ../tree.h.
	* java/java-tree.h (LABEL_PC): Relect name changes in ../tree.h.
	(DECL_BIT_INDEX): Use underlying representation.
	* java/parse.h (DECL_INHERITED_SOURCE_LINE): Likewise.

From-SVN: r32249
2000-02-28 21:34:48 -05:00
Jeff Law
3852e8afcc Fix copyrights
From-SVN: r32182
2000-02-26 13:02:01 -07:00
Anthony Green
3ff9925ce0 expr.c (build_class_init): Mark the decl to be ignored by check_init.
2000-02-25  Anthony Green  <green@cygnus.com>

	* expr.c (build_class_init): Mark the decl to be ignored by
	check_init.
	* java-tree.h (DECL_BIT_INDEX): Move definition from check-init.c
	* check-init.c: Move DECL_BIT_INDEX to java-tree.h
	* class.c (init_test_hash_newfunc): New function.
	(decl_hash): New function.
	(decl_compare): New function.
	* decl.c (emit_init_test_initialization): New function.
	(complete_start_java_method): Traverse the init test hashtable,
	calling emit_init_test_initialization.
	(always_initialize_class_p): Define.
	* expr.c (build_class_init): Use initialization tests when
	emitting class initialization code.
	(always_initialize_class_p): Declare.
	* jcf-parse.c (parse_class_file): Set always_initialize_class_p to
	1.
	* java-tree.h: Include hash.h.
	(DECL_FUNCTION_INIT_TEST_TABLE): Define.
	(struct lang_decl): Add init_test_table field.
	(init_test_hash_entry): Define.

From-SVN: r32166
2000-02-26 05:12:27 +00:00
Andrew Haley
e8b22dd136 java-except.h (struct eh_range): Add `expanded' field.
2000-01-25  Andrew Haley  <aph@cygnus.com>

        * java-except.h (struct eh_range): Add `expanded' field.
        (maybe_start_try): Add end_pc arg.
        (maybe_end_try): Ditto.
	* java-tree.h (force_poplevels): new function.
        * expr.c (expand_byte_code): Don't call maybe_start_try or
        maybe_end_try.
        * except.c (add_handler): Reset expanded.
        (expand_start_java_handler): Set expanded.
        (check_start_handlers): Don't expand a start handler that's
        already been expanded.
        (maybe_start_try): Add end_pc arg.  Only expand a handler which
        ends after end_pc.
	(expand_end_java_handler): call force_poplevels.
	(force_poplevels): new function.
        * decl.c (binding_level): Add start_pc of binding level.
        (maybe_pushlevels): Call maybe_start_try when pushing binding
        levels.
        (maybe_poplevels): Call maybe_end_try when popping binding levels.
        (LARGEST_PC): Define.
        (clear_binding_level): Use LARGEST_PC.

	* java-tree.h (DEBUG_JAVA_BINDING_LEVELS): new define.
	* decl.c (DEBUG_JAVA_BINDING_LEVELS): new define.
	(binding_depth, is_class_level, current_pc): new variables.
        (struct binding_level): ditto.
	(indent): new function.
	(push_jvm_slot): add debugging info.
	(maybe_pushlevels): ditto.
	(maybe_poplevels): ditto.
	(pushlevel): ditto.
	(poplevel): ditto.
	(start_java_method): ditto.
	(give_name_to_locals): comment only.
	* except.c (binding_depth, is_class_level, current_pc):
	new variables.
	(expand_start_java_handler): add debugging info.
	(expand_end_java_handler): ditto.

From-SVN: r31861
2000-02-09 14:08:44 +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
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
Andrew Haley
8bbb23b7ac parse.h (BUILD_THROW): Add support for sjlj-exceptions.
1999-11-17  Andrew Haley  <aph@cygnus.com>

	* parse.h (BUILD_THROW): Add support for sjlj-exceptions.
	decl.c (init_decl_processing): Add _Jv_Sjlj_Throw.
	expr.c (build_java_athrow): Add support for sjlj-exceptions.
	java-tree.h: Ditto.
	jcf-write.c: Ditto.

From-SVN: r30859
1999-12-10 16:06:23 +00:00
Anthony Green
48aedbca8b constants.c (find_methodref_index): Unwrap method names before inserting them in the constant pool.
* constants.c (find_methodref_index): Unwrap method names before
        inserting them in the constant pool.

        * jcf-parse.c (jcf_parse): Display `interface' when appropriate.

        * class.c (assume_compiled_node): New typedef.
        (assume_compiled_tree): New static data.
        (find_assume_compiled_node): New function.
        (add_assume_compiled): New function.
        (assume_compiled): New function.
        * class.c (make_class_data): Use assume_compiled.
        (is_compiled_class): Use assume_compiled.

        * java-tree.h (add_assume_compiled): Declare.

        * lang.c (lang_decode_option): Parse new options.

From-SVN: r30608
1999-11-21 23:37:58 +00:00
Greg McGary
13f9ac51e3 java-tree.h (flag_bounds_check): Remove extern decl.
* java-tree.h (flag_bounds_check): Remove extern decl.
* lang.c (flag_bounds_check): Remove global variable.
(lang_f_options): Remove "bounds-check" entry.
(lang_init_options): Default flag_bounds_check to "on".

From-SVN: r30036
1999-10-16 01:25:52 +00:00
Bernd Schmidt
81b3411cdf Move declarations and building code for common tree nodes to tree.[ch]
From-SVN: r29266
1999-09-10 10:36:02 +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
Kaveh R. Ghazi
1b93a502f9 java-tree.h (lang_printable_name): Constify a char*.
* java-tree.h (lang_printable_name): Constify a char*.

	* lang.c (lang_printable_name): Likewise.

From-SVN: r28970
1999-08-29 13:51:39 +00:00
Kaveh R. Ghazi
c8e7d2e632 check-init.c (check_bool2_init, [...]): Add static prototypes.
* check-init.c (check_bool2_init, done_alternative): Add static
	prototypes.

	* class.c (add_interface_do, maybe_layout_super_class): Likewise.
	(add_method, build_utf8_ref, build_class_ref,
	append_gpp_mangled_type, layout_class_method): Constify a char*.

	* decl.c (push_promoted_type, make_binding_level): Add static
	prototypes.
	(push_promoted_type, pushdecl): Constify a char*.

	* except.c (find_handler_in_range, link_handler,
	check_start_handlers): Add static prototypes.

	* expr.c (process_jvm_instruction): Constify a char*.

	* gjavah.c (main): Constify a char*.

	* java-tree.h (verify_jvm_instructions, process_jvm_instruction):
	Constify a char*.

	* jcf-depend.c (free_entry, add_entry, munge, print_ents): Add
	static prototypes.
	(add_entry, jcf_dependency_set_target, jcf_dependency_add_target,
	munge, print_ents): Constify a char*.

	* jcf-dump.c (disassemble_method): Constify a char*.
	(print_constant_pool, print_exception_table): Add static prototypes.
	(print_constant, print_exception_table, main, disassemble_method):
	Constify a char*.

	* jcf-io.c (find_classfile, find_class): Likewise.

	* jcf-parse.c (JPOOL_UTF_DATA, find_in_current_zip): Likewise.
	(set_source_filename, predefined_filename_p): Add static prototypes.
	(set_source_filename, get_constant, get_class_constant,
	find_in_current_zip): Constify a char*.

	* jcf-path.c (free_entry, append_entry, add_entry, add_path): Add
	static prototypes.
	(add_entry, add_path, jcf_path_classpath_arg,
	jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.

	* jcf-reader.c (get_attribute, jcf_parse_preamble,
	jcf_parse_constant_pool, jcf_parse_class, jcf_parse_fields,
	jcf_parse_one_method, jcf_parse_methods,
	jcf_parse_final_attributes): Add static prototypes.
	(get_attribute): Constify a char*.

	* jcf.h (find_class, find_classfile, jcf_dependency_set_target,
	jcf_dependency_add_target, jcf_path_classpath_arg,
	jcf_path_CLASSPATH_arg, jcf_path_include_arg): Constify a char*.

	* jv-scan.c (main): Constify a char*.
	(gcc_obstack_init): Add prototype arguments.

	* jvgenmain.c (gcc_obstack_init): Likewise.
	(main): Constify a char*.

	* lang.c (put_decl_string, put_decl_node, java_dummy_print): Add
	static prototypes.
	(put_decl_string, lang_print_error): Constify a char*.
	(lang_init): Remove redundant extern prototype.

	* mangle.c (emit_unicode_mangled_name): Constify a char*.

	* typeck.c (convert_ieee_real_to_integer, parse_signature_type):
	Add static prototypes.
	(get_type_from_signature): Constify a char*.

	* verify.c (check_pending_block, type_stack_dup, start_pc_cmp ):
	Add static prototypes.
	(start_pc_cmp): Prefer PTR over GENERIC_PTR.
	(verify_jvm_instructions): Constify a char*.

	* xref.c (xref_flag_value): Likewise.

	* xref.h (xref_flag_value): Likewise.

	* zextract.c (makeword, makelong): Add static prototypes.
	(makeword, makelong): Constify a uch*.

From-SVN: r28648
1999-08-10 16:58:13 +00: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
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
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
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
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
Per Bothner
ddcd8199a8 expr.c (pop_type_0): New function.
�
	* expr.c (pop_type_0):  New function.
	(pop_type):  Use pop_type_0.
	* java-tree.h (pop_type_0):  New declaration.
	* verify.c (verify_jvm_instructions):  Check return instructions.

From-SVN: r26217
1999-04-06 07:28:37 -07:00