OSDN Git Service

Minor performance improvements. Minor EH/unwind bug fix.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 878f497..1b7cde3 100644 (file)
@@ -1,5 +1,262 @@
+Mon Mar 20 19:53:53 2000  Jim Wilson  <wilson@cygnus.com>
+
+       * config/ia64/ia64.c (ia64_expand_prologue): Don't abort if leaf
+       function uses output registers.  Don't save RP for leaf functions.
+       Do save RP even if no epilogue.
+       * config/ia64/ia64.h (FIXED_REGISTERS): Unmark in/out registers.
+       (CALL_USED_REGISTERS): Unmark in registers.
+       (REG_ALLOC_ORDER): Move out regs up, to near the top.  Move in regs up,
+       to near the middle.
+
+2000-03-20  Geoff Keating  <geoffk@cygnus.com>
+
+       * config/rs6000/rs6000.md (bunordered): New expander.
+       (bordered): New expander.
+       (buneq): New expander.
+       (bunge): New expander.
+       (bungt): New expander.
+       (bunle): New expander.
+       (bunlt): New expander.
+       (bltgt): New expander.
+       * config/rs6000/rs6000.c (ccr_bit): Handle unordered comparisons.
+       (ccr_bit_negated_p): New function.
+       (print_operand): For %C, generate appropriate cror for UNEQ,
+       UNLT, UNGT, and LTGT.  For %T and %t, use ccr_bit_negated_p.
+
+2000-03-20  Andreas Jaeger  <aj@suse.de>
+
+       * sdbout.c (sdbout_one_type): Add braces to avoid "ambigous else"
+       warning.
+
+       * tree.h (safe_for_unsave): Prototype.
+
+2000-03-20  Richard Henderson  <rth@cygnus.com>
+
+       * regmove.c (stack_memref_p): Fix typo, reorg for readability.
+       (combine_stack_adjustments_for_block): Don't allow sp references
+       in the side of a set we're not fixing up.
+       * toplev.c (rest_of_compilation): Run combine_stack_adjustments
+       after life_analysis.
+
+2000-03-20  Richard Henderson  <rth@cygnus.com>
+
+       * calls.c (expand_call): Don't bother generating tail call
+       sequences if there are pending cleanups.  Use
+       expand_start_target_temps/expand_end_target_temps to elide
+       cleanups created during sibcall expansion.
+
+2000-03-20  Geoff Keating  <geoffk@cygnus.com>
+
+       * configure.in: Set $IFS to a value if it doesn't already have one
+       in the --enable-checking handling.
+       * configure: Regenerate.
+
+2000-03-20  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * c-parse.in (SAVE_WARN_FLAGS): Use size_int.
+       * c-parse.y, c-parse.c, objc/objc-parse.y, objc/objc-parse.c:
+       Regenerated.
+
+Mon Mar 20 11:43:15 MET 2000  Jan Hubicka  <jh@suse.cz>
+
+       * jump.c (delete_noop_moves): Remove code attempting to
+       combine stack adjustments.
+
+2000-03-19  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * emit-rtl.c (push_to_full_sequence, end_full_sequence): New functions.
+       * except.c (emit_cleanup_handler): Use them.
+       (expand_end_all_catch): Likewise.
+       * function.c (fixup_var_refs): Likewise.
+       (expand_function_end): Clear catch_clauses_last.
+       * rtl.h (push_to_full_sequence, end_full_sequence): Declare.
+       * except.h (struct eh_status): New field x_catch_clauses_last.
+       (catch_clauses_last): New define.
+
+       * Makefile.in (tree.o): Depend on HASHTAB_H.
+       * tree.c: Include hashtab.h.
+       (struct type_hash): Remove next field.
+       (TYPE_HASH_SIZE): Remove.
+       (TYPE_HASH_INITIAL_SIZE): New define.
+       (type_hash_table): Change type to htab_t.
+       (type_hash_eq, type_hash_hash, print_type_hash_statistics,
+       mark_hash_entry): New functions.
+       (init_obstacks): Allocate type hash.
+       (type_hash_lookup): Use htab functions.
+       (type_hash_add, mark_type_hash): Likewise.
+       (dump_tree_statistics): Call print_type_hash_statistics.
+
+2000-03-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * rs6000/t-aix41: New file.
+
+       * configure.in ({rs6000,powerpc}-ibm-aix4.[12]*): Use it.
+
+Sun Mar 19 13:27:30 2000  Hans-Peter Nilsson  <hp@axis.com>
+
+       * tm.texi (Driver): Fix typos and tweak entry for
+       INCLUDE_DEFAULTS.
+       Move misplaced STRUCT_FORCE_BLK entry ...
+       (Storage Layout): ... to here.
+       (Run-time Target): Recommend having TARGET_MASK_... helper macros.
+
+2000-03-19  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (delete_block): Delete the addr_vec along with the block.
+       (flow_delete_insn): Decrement LABEL_NUSES when deleting insns that
+       reference labels.
+
+       * fold-const.c (extract_muldiv): Apply type check for defined
+       overflow to multiply as well as divide.
+
+       * stor-layout.c (layout_decl): Don't abort on any zero sized decl.
+
+2000-03-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * emit-rtl.c (remove_unncessary_notes): Check that all
+       NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes have an
+       associated NOTE_BLOCK.
+       * function.h (identify_blocks): Update comments.
+       (reorder_blocks): Declare.
+       * function.c (identify_blocks): Don't take paramters.
+       (reorder_blocks): Don't take parameters.
+       * loop.h (find_loop_tree_blocks): Remove.
+       (unroll_block_trees): Likewise.
+       * loop.c (loop_optimize): Don't call find_loop_tree_blocks.  Use
+       reorder_blocks instead of unroll_block_trees.h
+       * sibcall.c (optimize_sibling_and_tail_recursive_calls): Likewise.
+       * stmt.c (find_loop_tree_blocks): Remove.
+       (unroll_block_trees): Likewise.
+       * toplev.c (rest_of_compilation): Don't call find_loop_tree_blocks
+       in whole-function mode.
+       * tree.h (reorder_blocks): Remove declaration.
+
+       * expr.c: Include intl.h.
+       * Makefile.in (expr.o): Depend on intl.h.
+       
+2000-03-18  Richard Henderson  <rth@cygnus.com>
+
+       * expr.c (emit_move_insn_1): Clarify cannot_inline message.
+
+2000-03-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.h (tree_index): Remove enumerals for integer types.
+       (integer_type_kind): New type.
+       (integer_types): New variable.
+       (char_type_node): Adjust.
+       (signed_char_type_node): Likewise.
+       (unsigned_char_type_node): Likewise.
+       (short_integer_type_node): Likewise.
+       (short_unsigned_type_node): Likewise.
+       (integer_type_node): Likewise.
+       (unsigned_type_node): Likewise.
+       (long_integer_type_node): Likewise.
+       (long_unsigned_type_node): Likewise.
+       (long_long_integer_type_node): Likewise.
+       (long_long_unsigned_type_node): Likewise.
+       * tree.c (integer_types): New variable.
+       (init_obstacks): Register it as a root.
+
+Sat Mar 18 14:38:00 2000  Jason Eckhardt  <jle@cygnus.com>
+
+       * bb-reorder.c (reorder_basic_blocks): Update PREV_INSN as well as
+       NEXT_INSN. Update last insn in chain.
+
+2000-03-17  Jason Merrill  <jason@casey.cygnus.com>
+
+       * dwarf2out.c (dwarf2out_decl): Don't emit anything for types
+       with TYPE_DECL_SUPPRESS_DEBUG set.
+
+2000-03-18  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (make_edges): Use INTVAL to access REG_EH_REGION value.
+
+2000-03-18  Richard Henderson  <rth@cygnus.com>
+
+       * i386.c (call_insn_operand): Always allow SYMBOL_REF,
+       care for HALF_PIC_P.
+       (expander_call_insn_operand): Remove.
+       (ix86_expand_epilogue): New arg `emit_return' to control return insn.
+       * i386.h (PREDICATE_CODES): Update.
+       * i386.md (all call expanders): Remove predicates, remove special
+       handling for half-pic.
+       (*call_1, *call_value_1): Handle SIBLING_CALL_P insns.
+       (*call_pop_pic2, *call_pic2, *call_value_pop_2, *call_value_2): Remove.
+       (sibcall_epilogue): New.
+
+2000-03-17  Richard Henderson  <rth@cygnus.com>
+
+       * rtlanal.c (single_set): Reject if the parallel has anything
+       except SET or USE or CLOBBER.
+
+2000-03-17  Jeff Law  <law@cygnus.com>
+           Richard Henderson  <rth@cygnus.com>
+
+       * Makefile.in (OBJS): Add sibcall.o.
+       (sibcall.o): New.
+       * sibcall.c: New file.
+       * calls.c (FUNCTION_OK_FOR_SIBCALL): Provide default.
+       (ECF_IS_CONST, ECF_NOTHROW, ECF_SIBCALL): New.
+       (emit_call_1): Replace `is_const' and `nothrow' with `ecf_flags'.
+       Emit sibcall patterns when requested.  Update all callers.
+       (expand_call): Generate CALL_PLACEHOLDER insns when tail call
+       elimination seems feasable.
+       * final.c (leaf_function_p): Sibling calls don't discount being
+       a leaf function.
+       * flow.c (HAVE_sibcall_epilogue): Provide default.
+       (find_basic_blocks_1): Sibling calls don't throw.
+       (make_edges): Make edge from sibling call to EXIT.
+       (propagate_block): Don't remove sibcall_epilogue insns.
+       * function.c (prologue, epilogue): Turn into varrays.  Update all uses.
+       (sibcall_epilogue): New.
+       (fixup_var_refs): Scan CALL_PLACEHOLDER sub-sequences.
+       (identify_blocks_1): Likewise.  Break out from ...
+       (identify_blocks): ... here.
+       (reorder_blocks_1): Scan CALL_PLACEHOLDER.  Break out from ...
+       (reorder_blocks): ... here.
+       (init_function_for_compilation): Zap prologue/epilogue as varrays.
+       (record_insns): Extend a varray instead of mallocing new memory.
+       (contains): Read a varray not array of ints.
+       (sibcall_epilogue_contains): New.
+       (thread_prologue_and_epilogue_insns): Emit and record
+       sibcall_epilogue patterns.
+       (init_function_once): Allocate prologue/epilogue varrays.
+       * genflags.c (gen_insn): Treat sibcall patterns as calls.
+       * integrate.c (save_parm_insns): Recurse on CALL_PLACEHOLDER patterns.
+       Broken out from ...
+       (save_for_inline_nocopy): ... here.
+       (copy_insn_list): Recurse on CALL_PLACEHOLDER patterns. 
+       Broken out from ...
+       (expand_inline_function): ... here.
+       (copy_rtx_and_substitute): Handle NOTE_INSN_DELETED_LABEL.
+       (subst_constants): Handle 'n' formats.
+       * jump.c (jump_optimize_minimal): New.
+       (jump_optimize_1): New arg `minimal'; update callers.  Elide most
+       optimizations if it's set.
+       * rtl.c (copy_rtx): Do copy jump & call for insns.
+       * rtl.h (struct rtx_def): Document use of jump and call for insns.
+       (SIBLING_CALL_P): New.
+       (sibcall_use_t): New.
+       * toplev.c (rest_of_compilation): Do init_EXPR_INSN_LIST_cache earlier.
+       Invoke optimize_sibling_and_tail_recursive_calls.
+       * tree.c (lang_safe_for_unsave): New.
+       (safe_for_unsave): New.
+       * tree.h (lang_safe_for_unsave, safe_for_unsave): Declare.
+
+       * alpha.h (FUNCTION_OK_FOR_SIBCALL): New.
+       * alpha.md (sibcall, sibcall_value, sibcall_epilogue): New.
+       (*sibcall_osf_1, *sibcall_value_osf_1): New.
+
+2000-03-17  Mark Mitchell  <mark@codesourcery.com>
+
+       * objc/objc-act.c (encode_method_prototype): Pass types, not
+       PARM_DECLs, to int_size_in_bytes.
+
 Fri Mar 17 11:51:34 2000  Jim Wilson  <wilson@cygnus.com>
 
+       * config/ia64/ia64.md (mix4right_3op): Swap %1 and %2 in template.
+
        * config/ia64/ia64-protos.h, config/ia64/ia64.c, config/ia64/ia64.h,
        config/ia64/ia64.md, config/ia64/xm-ia64.h: Fix copyrights again.
 
@@ -153,7 +410,7 @@ Thu Mar 16 09:02:19 2000  Jason Eckhardt  <jle@cygnus.com>
 2000-03-16  Neil Booth  <NeilB@earthling.net>
 
        * cppinit.c (handle_option):  Implement #unassert directive
-        as -A- command line option.
+       as -A- command line option.
        (print_help):  Update.
        * cpptexi.c:  Update.
 
@@ -237,9 +494,9 @@ Wed Mar 15 13:07:05 MET 2000  Jan Hubicka  <jh@suse.cz>
 
 Wed Feb 23 13:00:06 CET 2000  Jan Hubicka  <jh@suse.cz>
 
-        * flow.c (fixup_reorder_chain): Avoid double labels in the basic block;
-        end of basic block is jump_insn, not barrier; use create_basic_block
-        instead of creating basic block by hand.
+       * flow.c (fixup_reorder_chain): Avoid double labels in the basic block;
+       end of basic block is jump_insn, not barrier; use create_basic_block
+       instead of creating basic block by hand.
 
 2000-03-14  Jason Eckhardt  <jle@cygnus.com>
 
@@ -16895,7 +17152,7 @@ Fri Aug 20 18:53:43 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
        copy_rtx_and_substitute, subst_constants, restore_constants):
        Likewise.
 
-       * jump.c  (mark_jump_label, invert_exp, redirect_exp,
+       * jump.c  (mark_jump_label, invert_exp, redirect_e\0\0\0xp,
        rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise.
 
        * local-alloc.c (contains_replace_regs, memref_referenced_p):
@@ -17025,7 +17282,7 @@ Fri Aug 20 15:02:10 1999  Mark Mitchell  <mark@codesourcery.com>
 
 Fri Aug 20 22:32:17 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
 
-       * config/c4x/c4x.h (STARTFILE_SPEC): Don't define.
+       * config/c4x/c4x.h (STARTFILE_SPEC): Don't def.
 
 1999-08-19 18:43 -0700  Zack Weinberg  <zack@bitmover.com>
 
@@ -17735,7 +17992,7 @@ Mon Aug  9 10:08:50 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
        (unroll_loop): Access regno_pointer_* variables through
        current_function.
 
-       * tree.h (struct tree_decl): Add elt f to saved_insns member.
+       * tree.h (struct tree_decl): Add elt f to saved_ins\0\0\0ns member.
        (DECL_SAVED_INSNS): use it.
        (expand_dummy_function_end): Declare.
        (init_function_for_compilation): Declare.
@@ -17841,7 +18098,7 @@ Sat Aug  7 00:21:20 1999  Richard Henderson  <rth@cygnus.com>
 
 Sat Aug  7 00:06:54 1999  Jeffrey A Law  (law@cygnus.com)
 
-       * Makefile.in (TAROUTOPTS): Kill.
+       * Makefiin (TAROUTOPTS): Kill.
        (install-headers-tar): Use "xpf" for tar headerfile extraction
        * i370/x-oe (TAROUTOPTS): Delete.
        * m68k/x-apollo68 (TAROUTOPTS): Delete.
@@ -18638,7 +18895,7 @@ Wed Jul 28 11:22:21 1999  Richard Henderson  <rth@cygnus.com>
 
 Wed Jul 28 11:20:19 1999  Richard Henderson  <rth@cygnus.com>
 
-       * mn10200.c (mn10200_va_arg): New.
+       * mn102\0\0\000.c (mn10200_va_arg): New.
        * mn10200.h (EXPAND_BUILTIN_VA_ARG): New.
 
 Wed Jul 28 11:19:06 1999  Richard Henderson  <rth@cygnus.com>
@@ -18748,7 +19005,7 @@ Mon Jul 26 22:43:12 1999  Richard Henderson  <rth@cygnus.com>
 
 Mon Jul 26 18:51:34 1999  Richard Henderson  <rth@cygnus.com>
 
-       * except.c (start_dynamic_cleanup): Use force_operand on the
+       * except.c (st_dynamic_cleanup): Use force_operand on the
        buffer's address.
 
 Mon Jul 26 16:43:26 1999  Richard Henderson  <rth@cygnus.com>