OSDN Git Service

Minor performance improvements. Minor EH/unwind bug fix.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 171a927..1b7cde3 100644 (file)
@@ -1,3 +1,895 @@
+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.
+
+Fri Mar 17 08:09:14 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * Clean up usages of TREE_INT_CST_LOW.
+       * c-parse.in (RESTORE_WARN_FLAGS): Use tree_low_cst.
+       * c-parse.y, c-parse.c, objc/objc-parse.y, objc/objc-parse.c:
+       Regenerated.
+       * c-tree.h (min_precision): Move declaration to here.
+       * c-typeck.c (build_binary_op): Use host_integerp and tree_low_cst.
+       (build_unary_op, add_pending_init): Use bit_position.
+       (pending_init_member, process_init_element): Likewise.
+       (really_start_incremental_init, push_init_level, pop_init_level):
+       Don't make copies of nodes or modify them in place, use consistent
+       types when tracking positions, and use tree routines computations.
+       (set_init_index, output_init_element): Likewise.
+       (output_pending_init_elements, process_init_element): Likewise.
+       * dbxout.c (dbxout_type_fields): Use bit_position, host_integerp,
+       tree_low_cst and int_bit_position; also minor cleanup.
+       (dbxout_type_method_1, dbxout_range_type, dbxout_type): Likewise.
+       (print_cst_octal): Precision is unsigned.
+       (dbxout_symbol): Ensure DECL_INITIAL is in-range and use tree_low_cst.
+       * dwarf2out.c (ceiling): Input and output are unsigned HOST_WIDE_INT.
+       (simple_type_align_in_bits): Result is unsigned int.
+       Use tree_int_low_cst and host_integerp.
+       (simple_type_size_in_bits): Result is unsigned HOST_WIDE_INT.
+       (field_byte_offset): Result is HOST_WIDE_INT.
+       Change types of internal variables so alignments are unsigned int,
+       offsets are HOST_WIDE_INT and sizes are unsigned HOST_WIDE_INT.
+       Use host_integerp, tree_low_cst, and int_bit_position.
+       (add_bit_offset_attribute): Likewise.
+       (add_data_member_location_attribute): Use tree_cst_low.
+       (add_bound_info): Use host_integerp, integer_zerop, and integer_onep.
+       (add_bit_size_attribute): Use tree_low_cst.
+       (add_pure_or_virtual_attribute, gen_enumeration_type_die): Likewise.
+       * dwarfout.c: Similar changes to dwarf2out.c.
+       * expr.c (expand_expr, case ARRAY_REF): Remove redundant code.
+       * genoutput.c (n_occurences): Return -1 for null string.
+       (strip_whitespace): Accept null string and make into function.
+       (scan_operands): Reflect above changes.
+       * sdbout.c (plain_type_1): Use host_integerp and tree_low_cst.
+       (sdbout_field_types, sdbout_one_type): Likewise; also use bit_position.
+       * ssa.c (rename_registers): Add missing cast of arg to bzero.
+       * tree.c (int_size_in_bytes): Check for too big to represent.
+       (bit_position, int_bit_position, host_integerp, tree_low_cst): New fns.
+       * tree.h (host_integerp, tree_low_cst, bit_position, int_bit_position):
+       New declarations.
+       (min_precision): Delete from here.
+       * varasm.c (decode_addr_const): Use host_integerp, bit_position,
+       and int_bit_position.
+       * objc/objc-act.c (encode_method_prototype): Sizes are HOST_WIDE_INT.
+       (encode_method_def): Likewise.
+       (build_ivar_list_initializer): Use int_bit_position.
+       (generate_shared_structures): Convert size.
+       (encode_type, encode_complete_bitfield): Use integer_zerop.
+       (encode_bitfield): Use tree_low_cst and int_bit_position.
+       
+2000-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * config/c4x/c4x.h (CPP_SPEC): Fix typo.
+
+2000-03-17  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * call.c (special_function_p): It is only malloc if it returns
+       Pmode.
+
+2000-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * config/c4x/c4x.h (ASM_SPEC, CPP_SPEC, LINK_SPEC): Support C33.
+       (C33_FLAG, TARGET_C3X): Add macros.
+       (TARGET_SWITCHES): Add -m33 option.
+       * config/c4x/c4x.c (c4x_override_options): Test for TARGET_C33.
+       
+2000-03-17  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+       
+       * config/c4x/c4x.h (PARALLEL_INSN_FLAG): Add.
+       (PARALLEL_PACK_FLAG): Delete.
+       (TARGET_SWITCHES): Update.
+       (TARGET_PARALLEL): Use PARALLEL_INSN_FLAG.
+
+Thu Mar 16 18:52:32 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * fold-const.c (fold): Fix a few cases when the returned result
+       is not of the same type as the input.
+
+2000-03-16  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.h (ASM_OUTPUT_MI_THUNK): Fix compile time
+       warning.
+
+2000-03-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * libgcc2.h: Move prototypes above macros with the same name.
+       Wrap some function prototypes in the conditional which indicates
+       whether they are supported, i.e. "BITS_PER_UNIT == 8".
+
+2000-03-16  Richard Henderson  <rth@cygnus.com>
+
+       * calls.c: Revert last two changes.
+
+2000-03-16  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * fp-bit.c (_unpack_d): If NO_DENORMALS is defined, anything that
+       has exponent 0 is a zero.
+
+       * simplify-rtx.c (hash_rtx, case MEM/REG): Take into account that
+       HASH may already be nonzero.  Add code/mode into hash value
+       immediately after repeat label.
+       (cselib_lookup): Don't leave the hash table in an inconsistent
+       state before a hash lookup operation.
+
+Thu Mar 16 17:03:10 MET 2000  Jan Hubicka  <jh@suse.cz>
+
+       * i386.md (all HI and QI mode non-move patterns):  Conditionize
+       by TARGET_[HQ]IMODE_MATH.
+       * i386.h (x86_himode_math, x86_qimode_math, x86_promote_hi_regs,
+       x86_promote_qi_regs): Declare.
+       (TARGET_HIMODE_MATH, TARGET_QIMODE_MATH, TARGET_PROMOTE_HI_REGS,
+       TARGET_PROMOTE_QI_REGS): New macros.
+       (PROMOTE_MODE): New macro.
+       * i386.c (x86_himode_math, x86_qimode_math, x86_promote_hi_regs,
+       x86_promote_qi_regs): New global variables.
+
+Thu Mar 16 16:50:44 MET 2000  Jan Hubicka  <jh@suse.cz>
+
+       * calls.c (emit_library_call_value_1): Break out from ...; handle
+       VOIDmode function calls too.
+       (emit_library_call_value): ... here.
+       (emit_library_call): Implement by calling emit_library_call_value_1.
+
+Thu Mar 16 16:01:30 MET 2000  Jan Hubicka  <jh@suse.cz>
+
+       * calls.c (expand_call): Do sanity checking on arg_space_so_far.
+       Update arg_space_so_far on stack adjustments.
+       (emit_library_call, emit_library_call_value): Likewise; take into
+       account arg_space_so_far and pending_stack_adjust when calculcating
+       the boundary.
+
+Thu Mar 16 09:02:19 2000  Jason Eckhardt  <jle@cygnus.com>
+
+       * flow.c: Move all basic block reordering code into its own file.
+       (create_basic_block): Externalize.
+       * bb-reorder.c: New file. Copy all basic block reordering code from
+       flow.c to this file.
+       (reorder_basic_blocks): Fix fencepost error in for-loop.
+       (reorder_basic_blocks): Remove braces from single statement for-loops.
+       * basic-block.h: Add declaration for create_basic_block.
+       * Makefile.in: Add rules for bb-reorder.o.
+
+2000-03-16  Neil Booth  <NeilB@earthling.net>
+
+       * cppinit.c (handle_option):  Implement #unassert directive
+       as -A- command line option.
+       (print_help):  Update.
+       * cpptexi.c:  Update.
+
+Thu Mar 16 02:14:16 2000  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       * md.texi (Standard Names): Document `jump'.
+
+2000-03-15  Jason Merrill  <jason@casey.cygnus.com>
+
+       * calls.c (emit_call_1): Nothrow functions can still have nonlocal
+       gotos.
+
+2000-03-15  Geoff Keating  <geoffk@cygnus.com>
+
+       See the ChangeLog on the branch for more details.
+       
+       * configure.in: Merge in changes from newppc-branch.
+       * configure: Regenerate.
+       * config/rs6000/*: Merge in changes from newppc-branch.
+       Also correct copyright notices.
+
+Wed Mar 15 15:43:38 2000  Jeffrey A Law  (law@cygnus.com)
+
+       * acconfig.h (HAVE_GAS_WEAK): New define.
+       * configure.in (assembler weak support): Check for .weak support.
+       * config.in, configure: Rebuilt.
+       * pa/som.h (MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Only define if
+       HAVE_GAS_WEAK is defined.
+
+2000-03-15  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.c (arm_output_epilogue): Do not pass %c to
+       asm_fprintf().
+
+2000-03-15  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cppfiles.c (open_include_file): New function.
+       (find_include_file, cpp_read_file): Use it.
+
+2000-03-15  Jason Merrill  <jason@casey.cygnus.com>
+
+       * cpphash.c (dump_hash_helper): Take the slot, not the element.
+
+Wed Mar 15 14:28:54 2000  Jason Eckhardt  <jle@cygnus.com>
+
+       * flow.c (verify_flow_info): Check for unconditional return.
+
+Wed Mar 15 11:34:27 2000  Jim Wilson  <wilson@cygnus.com>
+
+       * config/ia64/ia64.md (restore_stack_nonlocal): New.
+       * config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Delete padding nop.
+       (__ia64_restore_stack_nonlocal): New.
+       * config/ia64/t-ia64 (LIB1ASMFUNCS): Add __restore_stack_nonlocal.
+
+2000-03-15  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * cpphash.c (collect_formal_parameters): Do not complain about
+       parameter names that just start with `__VA_ARGS__'.
+
+Wed Mar 15 13:26:58 MET 2000  Jan Hubicka  <jh@suse.cz>
+
+       * i386.md (movhi_1): Promote movw imm, reg to movl imm, reg and
+       movw reg, reg to movzwl reg, reg on PARTIAL_REGISTER_STALL machines.
+       * i386.c (pentiumpro_cost): Set mul cost to 4.
+       (x86_use_movx): Set for PPro.
+
+Wed Mar 15 13:07:05 MET 2000  Jan Hubicka  <jh@suse.cz>
+
+       * i386.md (ix86_compute_frame_size): stack_alignment_needed is
+       STACK_BOUNDARY for empty frames now.
+
+2000-03-14  Mark Mitchell  <mark@codesourcery.com>
+
+       * stor-layout.c (layout_union): Remove.
+       (layout_union_field): New function, split out from layout_union.
+       (finish_union_layout): Likewise.
+       (layout_field): Handle unions by calling layout_union_field.
+       (finish_record_layout): Handle unions.
+       (layout_type): Combine RECORD_TYPE, UNION_TYPE, and
+       QUAL_UNION_TYPE handling.
+
+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.
+
+2000-03-14  Jason Eckhardt  <jle@cygnus.com>
+
+       * flow.c (reorder_basic_blocks): Account for barriers when writing
+       over NEXT_INSN (last_bb->end).
+       (verify_flow_info): Add check for missing barriers.
+
+2000-03-14  Greg McGary  <gkm@gnu.org>
+
+       * c-lex.h (enum rid): Add RID_BOUNDED & RID_UNBOUNDED.
+       * c-lex.c (init_lex): Handle RID_BOUNDED & RID_UNBOUNDED.
+       * c-parse.gperf (__bounded, __bounded__, __ptrbase, __ptrbase__,
+       __ptrextent, __ptrextent__, __ptrvalue, __ptrvalue__,
+       __unbounded, __unbounded__): New keywords.
+       * c-parse.in (PTR_VALUE PTR_BASE PTR_EXTENT): New tokens.
+       * c-parse.y, c-parse.c, c-parse.h: Regenerate.
+       * objc/objc-parse.y, objc/objc-parse.c: Regenerate.
+
+2000-03-14  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * cselib.h: New file.
+       * alias.c: Include "cselib.h".
+       (fixed_scalar_and_varying_struct_p): Accept the addresses of the
+       MEMs as two new arguments.
+       (get_addr): New static function.
+       (find_base_term): Handle VALUEs.
+       (memrefs_conflict_p): Likewise.
+       (true_dependence): Call get_addr on the addresses.
+       Call fixed_scalar_and_varying_struct_p with addresses that have been
+       passed through get_addr and canon_rtx.
+       (write_dependence_p): Move DIFFERENT_ALIAS_SETS_P test for consistency
+       with true_dependence.
+       Call get_addr on the addresses; don't call canon_rtx on the MEMs.
+       * loop.c: Include "cselib.h".
+       (load_mems): Process extended basic block that enters the loop with
+       cselib.  Use that information to change initialization of the shadow
+       register so that a constant equivalence is seen by later passes.
+       * reload1.c: Include "cselib.h".
+       (reload_cse_invalidate_regno): Delete function.
+       (reload_cse_mem_conflict_p): Likewise.
+       (reload_cse_invalidate_mem): Likewise.
+       (reload_cse_invalidate_rtx): Likewise.
+       (reload_cse_regno_equal_p): Likewise.
+       (reload_cse_check_clobber): Likewise.
+       (reload_cse_record_set): Likewise.
+       (reg_values): Delete static variable.
+       (invalidate_regno_rtx): Likewise.
+       (reload_cse_delete_noop_set): New static function.
+       (reload_cse_simplify): New static function, broken out of
+       reload_cse_regs_1.
+       (reload_cse_noop_set_p): Delete unused argument INSN.
+       Just call rtx_equal_for_cselib_p on set source and destination.
+       (reload_cse_regs_1): Break out some code into reload_cse_simplify and
+       reload_cse_delete_noop_set.  Delete code to keep track of values; use
+       cselib functions instead.  Delete code to push/pop obstacks.
+       (reload_cse_simplify_set): Use cselib to find equivalent values.
+       Delete code to push/pop obstacks.
+       (reload_cse_simplify_operands): Likewise.
+       * rtl.def (VALUE): New rtx code.
+       * rtl.h (union rtunion_def): New elt rt_cselib.
+       (X0CSELIB, CSELIB_VAL_PTR): New macros.
+       * simplify_rtx.c: Include "ggc.h", "obstack.h", "cselib.h".
+       (new_elt_list, new_elt_loc_list, unchain_one_value, clear_table,
+       unchain_one_elt_list, unchain_one_elt_loc_list, check_useless_values,
+       discard_useless_locs, discard_useless_values, entry_and_rtx_equal_p,
+       hash_rtx, new_cselib_val, add_mem_for_addr, get_value_hash,
+       cselib_lookup_mem, cselib_subst_to_values, cselib_invalidate_regno,
+       cselib_mem_conflict_p, cselib_invalidate_mem, cselib_invalidate_rtx,
+       cselib_record_set, cselib_record_sets): New static functions.
+       (cselib_lookup, cselib_update_varray_sizes, cselib_init,
+       cselib_finish, cselib_process_insn, rtx_equal_for_cselib_p,
+       references_value_p): New functions.
+       (MAX_USELESS_VALUES, REG_VALUES): New macros.
+       (table, cselib_current_insn, next_unknown_value, cselib_nregs,
+       n_useless_values, reg_values, callmem, cselib_obstack,
+       cselib_startobj, empty_vals, empty_elt_lists, empty_elt_loc_lists):
+       New static variables.
+       * varray.h (union varray_data_tag): New elt te.
+       (VARRAY_ELT_LIST_INIT, VARRAY_ELT_LIST): New macros.
+       * Makefile.in (reload1.o, loop.o, simplify-rtx.o, alias.o): Update
+       dependencies.
+
+2000-03-14  Nick Clifton  <nickc@cygnus.com>
+
+       * gcc.c (do_spec_1): Catch the case where %* is used in a
+       substitution pattern, but it has not been initialised.
+       Issue a meaningful error message if an unrecognised operator
+       is encountered in a spec string.
+
+2000-03-14  Richard Earnshaw <rearnsha@arm.com>
+
+       * function.c (prepare_function_start): Correctly initialize
+       cfun->stack_alignment_needed.
+
+2000-03-14  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cppfiles.c (find_include_file): Don't assume nshort is a
+       substring of name.
+
+Tue Mar 14 08:42:21 2000  Jeffrey A Law  (law@cygnus.com)
+
+       * configure.in (hppa configurations): Add pa32-regs.h to the
+       list of tm files as appropriate.
+       * configure: Rebuilt.
+       * pa.c (compute_frame_size): Remove explicit knowledge about FP
+       register numbering.
+       (hppa_expand_prologue, hppa_expand_epilogue): Likewise.
+       (fmpyaddoperands, fmpysuboperands): Likewise.
+       * pa.h: Remove various definitions which depend on knowing
+       how registers are numbered.
+       * pa32-regs.h: New file with PA32 register numbering specific
+       definitions.
+
+2000-03-14  Richard Henderson  <rth@cygnus.com>
+
+       * regmove.c (combine_stack_adjustments): New.
+       (stack_memref_p, single_set_for_csa): New.
+       (free_csa_memlist, record_one_stack_memref): New.
+       (try_apply_stack_adjustment): New.
+       (combine_stack_adjustments_for_block): New.
+       * rtl.h (combine_stack_adjustments): Declare.
+       * toplev.c (rest_of_compilation): Call it.
+
+       * i386.md: Revert 2000-01-16 change.
+
+2000-03-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * gccbug.in: Add web category, gcc specific classes.
+
+2000-03-14  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * stor-layout.c (finalize_record_size): Fix typo.
+
+2000-03-14  Stan Shebs  <shebs@apple.com>
+
+       * c-typeck.c (c_alignof): Error on incomplete types.
+       * extend.texi (Alignment): Document this.
+
+2000-03-13  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cppfiles.c: Include mkdeps.h.
+       (find_include_file, read_include_file): Remove _cpp_ prefix
+       from name, make static.
+       (_cpp_execute_include): New function, broken out of
+       do_include.
+
+       * cpplib.c: Don't include mkdeps.h.
+       (struct directive): Remove type field. Reorder entries.  The
+       function takes only one argument.
+       (struct if_stack): Make type field an int.
+       (directive_table): Rename to dtable.  Generate it, the
+       prototypes of the directive handlers, and the enum for the
+       directive numbers, from a template macro.
+       (do_ifndef, do_include_next, do_import): New functions.
+       (do_define, do_include, do_endif, do_ifdef, do_if, do_else,
+       do_undef, do_line, do_elif, do_error, do_pragma, do_warning,
+       do_ident, do_assert, do_unassert, do_sccs): Take only one
+       argument.
+       (do_sccs): Define always, but alter behavior based on
+       SCCS_DIRECTIVE.
+       (_cpp_handle_directive, consider_directive_while_skipping):
+       Restructure for new directive table layout.
+
+       (pass_thru_directive): Take a directive number, not a pointer
+       to a struct directive.
+       (parse_include): New function, broken out of do_include.
+       (do_include, do_import, do_include_next): Use parse_include
+       and _cpp_execute_include.
+       (do_elif, do_else): Test for T_ELSE specifically when checking
+       for #elif/#else after #else.
+       (parse_ifdef): New function, broken out of do_ifdef.
+       (validate_else): Expect a name arg without a leading #.
+       (if_directive_name): Delete.
+       (cpp_define, cpp_assert, cpp_undef, cpp_unassert): Call
+       directive handlers with only one argument.
+
+       * cpphash.h: Update prototypes.
+       (enum node_type): Remove entries for directives.
+       * Makefile.in: Update dependencies.
+
+       * cpphash.c (dump_hash_helper): Only dump nodes of type
+       T_MACRO.  Emit a newline after each definition.
+
+2000-03-14  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * gccbug.in: New file.
+       * configure.in (all_outputs): Add gccbug.
+       * Makefile.in (install-common): Install gccbug.
+       (GCCBUG_INSTALL_NAME): New variable.
+       * configure: Rebuilt.
+       
+2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
+
+       * function.c (put_var_into_stack): Use type_for_mode to calculate
+       part_type.  Use MEM_SET_IN_STRUCT_P.
+       * expr.c (store_field): Handle CONCAT.
+       (store_constructor): Use fields_length.
+       * tree.c (fields_length): New fn.
+       * tree.h: Declare it.
+
+2000-03-13  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * Makefile.in (LIBCPP_OBJS): Add cpplex.o.
+       (cpplex.o): New target.
+       * po/POTFILES.in: Add cpplex.c.
+
+       * cpplex.c (_cpp_grow_token_buffer, null_cleanup,
+       cpp_push_buffer, cpp_pop_buffer, cpp_scan_buffer,
+       cpp_expand_to_buffer, cpp_buf_line_and_col, cpp_file_buffer,
+       skip_block_comment, skip_line_comment, skip_comment,
+       copy_comment, _cpp_skip_hspace, _cpp_skip_rest_of_line,
+       _cpp_parse_name, skip_string, parse_string,
+       _cpp_parse_assertion, cpp_get_token, cpp_get_non_space_token,
+       _cpp_get_directive_token, find_position,
+       _cpp_read_and_prescan, _cpp_init_input_buffer): Move here.
+       (maybe_macroexpand, _cpp_lex_token): New functions.
+
+       * cpplib.c (SKIP_WHITE_SPACE, eval_if_expr, parse_set_mark,
+       parse_goto_mark): Delete.
+       (_cpp_handle_eof): New function.
+       (_cpp_handle_directive): Rename from handle_directive.
+       (_cpp_output_line_command): Rename from output_line_command.
+       (do_if, do_elif): Call _cpp_parse_expr directly.
+       * cppfiles.c (_cpp_read_include_file): Don't call
+       init_input_buffer here.
+       * cpphash.c (quote_string): Move here, rename _cpp_quote_string.
+       * cppexp.c (_cpp_parse_expr): Diddle parsing_if_directive
+       here; pop the token_buffer and skip the rest of the line here.
+       * cppinit.c (cpp_start_read): Call _cpp_init_input_buffer
+       here.
+
+       * cpphash.h (CPP_RESERVE, CPP_IS_MACRO_BUFFER, ACTIVE_MARK_P):
+       Define here.
+       (CPP_SET_BUF_MARK, CPP_GOTO_BUF_MARK, CPP_SET_MARK,
+       CPP_GOTO_MARK): New macros.
+       (_cpp_quote_string, _cpp_parse_name, _cpp_skip_rest_of_line,
+       _cpp_skip_hspace, _cpp_parse_assertion, _cpp_lex_token,
+       _cpp_read_and_prescan, _cpp_init_input_buffer,
+       _cpp_grow_token_buffer, _cpp_get_directive_token,
+       _cpp_handle_directive, _cpp_handle_eof,
+       _cpp_output_line_command): Prototype them here.
+       * cpplib.h (enum cpp_token): Add CPP_MACRO.
+       (CPP_RESERVE, get_directive_token, cpp_grow_buffer,
+       quote_string, output_line_command): Remove.
+
+2000-03-13  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * stmt.c (expand_end_case): RANGE may be signed, and when checking
+       whether it is too large we must also verify that it isn't negative.
+
+2000-03-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.md: Remove all traces of TARGET_LIVE_G0.
+       (movsi_zero_liveg0): Remove.
+       (movsf_insn_novis_liveg0): Remove.
+       (negsi2): Remove.
+       (negsi2_not_liveg0): Rename to negsi2.
+       (one_cmplsi2): Remove.
+       (one_cmplsi2_not_liveg0): Rename to one_cmplsi2.
+       (one_cmplsi2_liveg0): Remove.
+       * config/sparc/sparc.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE,
+       MASK_LIVE_G0, MASK_BROKEN_SAVERESTORE): Remove.
+       (CONDITIONAL_REGISTER_USAGE): Remove TARGET_LIVE_G0 if.
+       (PREDICATE_CODES): Remove zero_operand.
+       * config/sparc/sparc.c: Remove all traces of TARGET_LIVE_G0 and
+       TARGET_BROKEN_SAVERESTORE.
+       (zero_operand): Remove.
+       * config/sparc/splet.h (SUBTARGET_SWITCHES): Remove -mlive-g0,
+       -mno-live-g0, -mbroken-saverestore and -mno-broken-saverestore
+       options.
+       (SUBTARGET_OVERRIDE_OPTIONS): Remove.
+       * config/sparc/linux-aout.h (TARGET_LIVE_G0,
+       TARGET_BROKEN_SAVERESTORE): Remove.
+       * config/sparc/linux.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE):
+       Remove.
+       * config/sparc/linux64.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE):
+       Remove.
+       * config/sparc/sol2.h (TARGET_LIVE_G0, TARGET_BROKEN_SAVERESTORE):
+       Remove.
+
+       * config/sparc/sparc.md (return_df_no_fpu): New pattern.
+
+2000-03-13  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cpplib.c (do_pragma_implementation): Fix off-by-one error
+       truncating a string.  Don't assume tokens are nul terminated.
+       Problem noted by Andreas Jaeger <aj@suse.de>
+
+2000-03-13  Jason Merrill  <jason@casey.cygnus.com>
+
+       * dwarf2out.c (add_name_and_src_coords_attributes): Only add
+       DW_AT_MIPS_linkage_name for TREE_PUBLIC decls.
+       (ASM_OUTPUT_DWARF_ADDR_CONST): Don't output trailing newline.
+
+2000-03-13  Richard Earnshaw <rearnsha@arm.com>
+
+       * stor-layout.c (new_record_layout_info): Fix typo inside ifdef
+       STRUCTURE_SIZE_BOUNDARY.
+
+2000-03-13  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.h (record_layout_info_s): New structure.
+       (record_layout_info): New type.
+       (new_record_layout_info): New function.
+       (layout_field): Likewise.
+       (finish_record_layout): Likewise.
+       * stor-layout.c (layout_record): Remove.
+       (new_record_layout_info): New function.
+       (layout_field): New function, broken out from layout_record.
+       (finalize_record_size): Likewise.
+       (compute_record_mode): Likewise.
+       (finalize_type_size): New function, broken out from layout_type.
+       (finish_record_layout): Likewise.
+       (layout_type): Use them.
+       
+2000-03-12  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cpphash.c: Don't include version.h.
+       (special_symbol) [case T_VERSION]: Look for the string in
+       hp->value.cpval; don't use version_string.
+       * cppinit.c (initialize_builtins): Set hp->value.cpval for
+       __VERSION__ to version_string.
+       * Makefile.in (cpphash.o): Update deps.
+
+2000-03-12  Zack Weinberg  <zack@wolery.cumb.org>
+
+       Convert cpplib to use libiberty/hashtab.c.
+
+       * cpplib.h (struct cpp_reader): Make hashtab and
+       all_include_files of type 'struct htab *'.  Delete HASHSIZE
+       and ALL_INCLUDE_HASHSIZE macros.
+
+       * cpphash.h: Update prototypes.
+       (struct hashnode): Remove next, prev, and bucket_hdr members.
+       Make length a size_t.  Add hash member.
+       (struct ihash): Remove next member.  Add hash member.  Make
+       name a flexible array member.
+
+       * cppfiles.c: Include hashtab.h.
+       (include_hash): Delete.
+       (IHASHSIZE): New macro.
+       (hash_IHASH, eq_IHASH, _cpp_init_include_hash): New functions.
+       (cpp_included): Do the hash lookup here.
+       (_cpp_find_include_file): Rewrite.
+       (cpp_read_file): Put the "fake" hash entry into the hash
+       table.  Honor the control_macro, if it turns out we've seen
+       the file before.  Don't push the buffer here.
+       (_cpp_read_include_file): Push the buffer here.
+       (OMODES): New macro.  Use it whenever we call open(2).
+
+       * cpphash.c: Include hashtab.h.
+       (hash_HASHNODE, eq_HASHNODE, del_HASHNODE, dump_hash_helper,
+       _cpp_init_macro_hash, _cpp_dump_macro_hash, _cpp_make_hashnode,
+       _cpp_lookup_slot): New functions.
+       (HASHSIZE): new macro.
+       (hashf, _cpp_install, _cpp_delete_macro): Delete.
+       (_cpp_lookup): Use hashtab.h routines.
+
+       * cppinit.c: Include hashtab.h.
+       (cpp_reader_init): Call _cpp_init_macro_hash and
+       _cpp_init_include_hash.  Don't allocate hashtab directly.
+       (cpp_cleanup): Just call htab_delete on pfile->hashtab and
+       pfile->all_include_files.
+       (initialize_builtins): Use _cpp_make_hashnode and
+       htab_find_slot to add hash entries.
+       (cpp_finish): Just call _cpp_dump_macro_hash.
+       * cpplib.c: Include hashtab.h.
+       (do_define): Use _cpp_lookup_slot and _cpp_make_hashnode to
+       create hash entries.
+       (do_pragma_poison, do_assert): Likewise.
+       (do_include): Don't push the buffer here.  Don't increment
+       system_include_depth unless _cpp_read_include_file succeeds.
+       (do_undef, do_unassert): Use _cpp_lookup_slot and htab_clear_slot
+       or htab_remove_elt.
+       (do_pragma_implementation): Use alloca to create copy.
+
+       * Makefile.in: Update dependencies.
+
+2000-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * cppinit.c (cl_directive_handler): More K&R fixing.
+
+Sat Mar 11 23:54:26 2000  Jim Wilson  <wilson@cygnus.com>
+
+       * config/ia64/ia64.c (ia64_compute_frame_size): Align size to
+       STACK_BOUNDARY.
+       * config/ia64/ia64.h (REGISTER_MOVE_COST): Add missing parentheses.
+
+2000-03-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * cppinit.c (no_arg, no_ass, no_dir, no_fil, no_mac, no_pth):
+       Change from char[] to macros.
+
 2000-03-12  Neil Booth  <NeilB@earthling.net>
 
        * cppinit.c (cpp_start_read): Update indirect function
@@ -102,8 +994,8 @@ Thu Mar  9 20:01:38 2000  Jim Wilson  <wilson@cygnus.com>
 
 Thu Mar  9 18:10:02 2000  Jeffrey A Law  (law@cygnus.com)
 
-        * config/pa/pa-hpux10.h (LIB_SPEC): Correct typo in !p case.
-        (MD_STARTFILE_PREFIX_1): New macro.
+       * config/pa/pa-hpux10.h (LIB_SPEC): Correct typo in !p case.
+       (MD_STARTFILE_PREFIX_1): New macro.
 
 2000-03-09  Robert Lipe  <robertl@sco.com>
 
@@ -1215,7 +2107,7 @@ Mon Feb 28 21:07:59 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
        (SET_DEFAULT_TYPE_ATTRIBUTES): Define.
 
        * config/arm/arm.md (call): Call arm_is_longcall_p to decide
-        if a long call is needed.
+       if a long call is needed.
        (call_value): Ditto.
        (call_symbol): Ditto.
 
@@ -16260,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):
@@ -16390,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>
 
@@ -17100,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.
@@ -17206,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.
@@ -18003,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>
@@ -18113,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>