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)
Mark Mitchell [Thu, 21 Oct 1999 08:05:57 +0000 (08:05 +0000)]
cp-tree.h (SCOPE_PARTIAL_P): New macro.
* cp-tree.h (SCOPE_PARTIAL_P): New macro.
(pushlevel_temporary): Remove.
(add_scope_stmt): New function.
* decl.c (pushlevel_temporary): Remove.
(poplevel): Use add_scope_stmt.
(start_decl_1): Likewise.
* semantics.c (add_scope_stmt): New function.
(do_pushlevel): Use it.
(do_poplevel): Use it.
(expand_stmt): Check SCOPE_PARTIAL_P.
Mark Mitchell [Thu, 21 Oct 1999 07:10:36 +0000 (07:10 +0000)]
cp-tree.def (EMPTY_CLASS_EXPR): New tree node.
* cp-tree.def (EMPTY_CLASS_EXPR): New tree node.
* call.c (build_call): Use EMPTY_CLASS_EXPR instead of RTL_EXPR.
* expr.c (cplus_expand_expr): Expand it.
* ir.texi: Document EMPTY_CLASS_EXPR.
* basic-block.h (PROP_*): Move constants from ...
* flow.c: ... here.
(compute_bb_for_insn): Free the array before reallocating.
(update_life_info): New arg PROP_FLAGS; pass on to propagate_block.
(allocate_reg_life_data): Reset all reg variables collected by
propagate_block.
(get_block_head_tail): Don't convert from bb to block.
(get_bb_head_tail): New. Update all callers of get_block_head_tail.
(find_insn_reg_weight): Take block not bb.
(schedule_block): Don't set block num for moved insns.
(schedule_region): Don't update_life_info or find_insn_reg_weight.
(schedule_insns): Do it here instead.
* combine.c (combine_instructions): Invoke compute_bb_for_insn
before update_life_info.
* recog.c (split_all_insns, peephole2_optimize): Update for
new arg to update_life_info.
* rtlanal.c (remove_note): Cope with NULL note.
* toplev.c (rest_of_compilation): Don't invoke recompute_reg_usage
if we did sched1.
Bryce McKinlay [Wed, 20 Oct 1999 00:09:33 +0000 (00:09 +0000)]
Test code for GNATS gcj/71 and GNATS gcj/72.
1999-10-19 Bryce McKinlay <bryce@albatross.co.nz>
* libjava.compile/invokeinterface: New directory.
* libjava.compile/invokeinterface/Test.java: New file. Test code for
PR gcj/71 and PR gcj/72.
* libjava.compile/invokeinterface/A.java: New file.
* libjava.compile/invokeinterface/B.java: New file.
Mark Mitchell [Tue, 19 Oct 1999 17:52:52 +0000 (17:52 +0000)]
cplus-dem.c (INTBUF_SIZE): New macro.
* cplus-dem.c (INTBUF_SIZE): New macro.
(string_append_template_idx): New function.
(demangle_expression): Likewise.
(demangle_integral_value): Use it.
(demangle_real_value): New function, split out from ...
(demangle_template_value_parm): ... here. Use
string_append_template_idx. Use demangle_real_value.
(demangle_template): Use string_append_template_idx.
(demangle_qualified): Use consume_count_with_underscores.
(get_count): Tweak formatting.
(do_type): Use string_append_template_idx.
Mark Mitchell [Tue, 19 Oct 1999 17:40:48 +0000 (17:40 +0000)]
method.c (PARM_CAN_BE_ARRAY_TYPE): Remove.
* method.c (PARM_CAN_BE_ARRAY_TYPE): Remove.
(mangling_flags): New type.
(build_overload_int): Change prototype.
(build_overload_value): Likewise.
(numeric_output_need_bar): Improve comment.
(mangle_expression): New function, broken out from ...
(build_overload_int): Here.
(build_overload_value): Adjust for use of mangling flags. Don't
warn about real-valued template parameters here. Do handle
complex expressions involving real-valued template parameters.
(build_template_parm_names): Encase non-type template parameters
in underscores, if necessary.
(process_overload_item): Remove conditional on
PARM_CAN_BE_ARRAY_TYPE.
Jeffrey A Law [Mon, 18 Oct 1999 19:59:48 +0000 (19:59 +0000)]
mn10200.md (outline_epilogue_jump): Embed a (return) to indicate to the cfg code that this is a return instruction.
* mn10200.md (outline_epilogue_jump): Embed a (return) to indicate
to the cfg code that this is a return instruction.
* mn10300.md (return_internal): Similarly.
Bernd Schmidt [Mon, 18 Oct 1999 08:40:20 +0000 (08:40 +0000)]
c-decl.c (pushdecl): Use TYPE_CONTEXT rather than TREE_PERMANENT.
* c-decl.c (pushdecl): Use TYPE_CONTEXT rather than TREE_PERMANENT.
(finish_decl): Duplicate test for TREE_ASM_WRITTEN in else branch of
if that tests TREE_PERMANENT.
Jeffrey A Law [Sun, 17 Oct 1999 21:27:56 +0000 (21:27 +0000)]
haifa-sched.c (add_dependence): Only check/update the cache if it exists.
* haifa-sched.c (add_dependence): Only check/update the cache
if it exists.
(remove_dependence): Likewise.
(schedule_insns): Only create the true_dependency_cache if the
average number of instructions in a basic block is very large.
Andrew MacLeod [Sun, 17 Oct 1999 09:21:25 +0000 (09:21 +0000)]
basic-block.h (pre_edge_lcm, [...]): Prototype for exported functions.
* basic-block.h (pre_edge_lcm, pre_edge_rev_lcm, compute_available):
Prototype for exported functions.
(pre_lcm, pre_rev_lcm): Remove prototypes.
* gcse.c (compute_ae_kill): Add ae_gen and ae_kill as parameters.
(compute_available): Move to lcm.c, and change parameter order.
(one_classic_gcse_pass): Call compute_ae_kill with parameters.
(pre_insert, s_preds, s_succs, num_preds, num_succs): Delete.
(gcse_main): No longer call compute_preds_succs. Rebuild the
set table after reach pre pass.
(pre_insert_map, pre_delete_map, edge_list): New.
(alloc_pre_mem): Allocate edge vectors.
(free_pre_mem): Delete edge vectors.
(compute_pre_data): Call new edge based lcm routines.
(process_insert_insn): New function.
(insert_insn_end_bb): Use it.
(pre_edge_insert): New function.
(pre_insert_copy_insn): Formatting fixes. Update BLOCK_END as
needed.
(pre_insert_copies): Revamp using new edge based lcm outputs.
(pre_delete): Likewise.
(one_pre_gcse_pass): Insert & remove fake edges to the exit
block.
(compute_code_hoist_vbeinout): New new edge based routines.
* lcm.c: Remove all the old LCM functions. Replace with new ones
that work with the new cfg datastructures and work with edges
instead of blocks.
Bernd Schmidt [Sun, 17 Oct 1999 06:47:27 +0000 (06:47 +0000)]
reload.h (struct reload): Add new fields "mode" and "nregs".
* reload.h (struct reload): Add new fields "mode" and "nregs".
* reload1.c: Change all occurrences of reload_mode and reload_nregs
to reference the "mode" and "nregs" field within struct reload.
Jeffrey A Law [Sun, 17 Oct 1999 06:28:22 +0000 (06:28 +0000)]
haifa-sched.c (true_dependency_cache): New.
* haifa-sched.c (true_dependency_cache): New.
(add_dependence): Use the true dependency cache to avoid expensive
walks down the LOG_LINKS dependency list. Add entries to the
cache as necessary.
(remove_dependence): Remove entries from the true dependency cache
as needed.
(schedule_insns): Allocate and initialize and free the true
dependency cache.
Anthony Green [Sun, 17 Oct 1999 03:11:50 +0000 (03:11 +0000)]
ClassLoader.java (getSystemResource): Use getSystemClassLoader instead of ClassLoader.system.
* java/lang/ClassLoader.java (getSystemResource): Use
getSystemClassLoader instead of ClassLoader.system.
(getSystemResourceAsStream): Ditto.
* java/lang/natClassLoader.cc (redirect): Make static and
remove #ifdef INTERPRETER so it is always defined.
(getVMClassLoader0): Remove #ifdef INTERPRETER so it always
returns a VMClassLoader.
* java/util/ResourceBundle.java (trySomeGetBundle): Create a
PropertyResourceBundle if a properties file is found before a
ResourceBundle class.
Greg McGary [Sat, 16 Oct 1999 01:25:01 +0000 (01:25 +0000)]
flags.h (flag_bounds_check, [...]): New extern decls.
* flags.h (flag_bounds_check, flag_bounded_pointers): New extern decls.
* toplev.c (flag_bounds_check, flag_bounded_pointers): New flags.
(f_options): Add "bounded-pointers" and "bounds-check" entries.
* c-lang.c (lang_init_options): Set flag_bounds_check as "unspecified".
(lang_init): Set default for flag_bounds_check if still "unspecified".
Jeffrey A Law [Fri, 15 Oct 1999 23:04:06 +0000 (23:04 +0000)]
pa.c (move_operand): Rely on memory_address_p to determine the validity of non-indexed memory addresses.
* pa.c (move_operand): Rely on memory_address_p to determine the
validity of non-indexed memory addresses.
* pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow LO_SUM with a symbolic
operand in DFmode and SFmode when generating PA2.0 code.
* mips.c (function_prologue): Fix argument types.
* mips.md (casesi): Use emit_jump_insn for casesi_internal.
(casesi_internal): Write to the scratch register.
* cppexp.c (cpp_parse_escape): Make static. Change second arg
to U_CHAR **.
(parse_charconst): Delete unnecessary cast when calling
cpp_parse_escape.
(cpplib.h): Kill prototype of cpp_parse_escape.