OSDN Git Service

* ssa.c (convert_to_ssa): Eliminate dead code when calling
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index d37980e..775428c 100644 (file)
@@ -1,3 +1,796 @@
+2000-04-08  Alex Samuel  <samuel@codesourcery.com>
+
+       * ssa.c (convert_to_ssa): Eliminate dead code when calling
+       life_analysis.  
+       (convert_from_ssa): Call compute_bb_for_insn before life_analysis.
+       (for_each_successor_phi): Change parameter to basic_block.
+       (coalesce_regs_in_successor_phi_nodes): Likewise.
+       (coalesce_regs_in_copies): Likewise.
+       (compute_coalesced_reg_partition): Use basic_block instead of index.
+       * rtl.h (convert_to_ssa): Delete.
+       (convert_from_ssa): Likewise.
+       (successor_phi_fn): Likewise.
+       (for_each_successor_phi): Likewise.
+       (in_ssa_form): Likewise.
+       * basic-block.h (convert_to_ssa): Moved from rtl.h.
+       (convert_from_ssa): Likewise.
+       (successor_phi_fn): Likewise.
+       (in_ssa_form): Likewise.
+       (for_each_successor_phi): Likewise.  Change parameter to basic_block. 
+       * flow.c (calculate_global_regs_live): Pass a basic_block to
+       for_each_successor_phi.
+
+2000-04-08  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (mark_used_reg): Use reg_set_p to determine if a register
+       was modified in the current insn.
+
+2000-04-08  Richard Earnshaw (rearnsha@arm.com)
+
+       * arm/thumb.md: Delete.
+       * arm/thumb-protos.h: Delete.
+
+2000-04-08  Richard Earnshaw (rearnsha@arm.com)
+
+       Merge changes from merged-arm-thumb-backend-branch onto trunk.
+
+       2000-04-08  Richard Earnshaw (rearnsha@arm.com)
+
+       * Merge trunk code from tag merged-arm-thumb-backend-merge_20000408
+       into branch.
+
+       * arm.md (nop): Use the standard RTL expression.  Don't code as a
+       define_expand.
+       (*arm_nop, *thumb_nop): Delete.
+
+       * arm.c (const_ok_for_arm): Don't use ANSI extensions for defining
+       constants.  Use casts instead.
+       (arm_gen_constant, arm_rtx_costs, arm_reload_in_hi, arm_reload_out_hi,
+       output_multi_immediate, arm_poke_function_name): Likewise.
+       * arm.h (ARM_LEGITIIMIZE_RELOAD_ADDRESS, ARM_SIGN_EXTEND,
+       MASK_RETURN_ADDDR): Likewise.
+
+       2000-03-31  Richard Earnshaw (rearnsha@arm.com)
+
+       * Merge trunk code from tag merged-arm-thumb-backend-merge_20000325 
+       into branch.
+       
+       * arm.md (eh_epilogue): New function.
+       * arm.h (struct machine_function): Move to here ...
+       * arm.c: ... from here.
+       (arm_output_epilogue): Support epilogues for __builtin_eh_return.
+       (thumb_exit): Extra parameter eh_ofs.  All callers changed.
+       Handle epilogues for __builtin_eh_return.  Make bit-fields unsigned.
+
+       2000-03-30  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/semi.h (ASM_SPEC): Restore definition.
+       (SUBTARGET_EXTRA_ASM_SPEC): Define if not already defined.
+
+       * config/arm/elf.h (ASM_SPEC): Restore definition.
+       (SUBTARGET_EXTRA_ASM_SPEC): Define if not already defined.
+
+       * config/arm/arm.h (ASM_SPEC): Remove definition.
+       (SUBTARGET_EXTRA_ASM_SPEC): Remove definition.
+
+       2000-03-26  Bernd Schmidt <bernds@cygnus.co.uk>
+
+       * config/arm/arm.c: Disable -fschedule-insns for Thumb.
+
+       2000-03-24  Nick Clifton  <nickc@cygnus.com>
+
+       Various formating tidyups, elimination of compile time
+       warnings and synchronisation with internal sources:
+       
+       * config/arm/arm-protos.h (assemble_align): Add prototype.
+       (gen_rotated_half_load): Rename to arm_gen_rotated_half_load.
+       (gen_comapre_reg): Rename to arm_gen_compare_reg.
+       (arm_return_addr_rtx): Rename to arm_return_addr.
+
+       * config/arm/arm.c: Include except.h.
+       Define shorter typenames for strict minipool_node and struct
+       minipool_fix.
+       (arm_return_in_memory): For WinCE return all structures <= 32 bits
+       in memory.
+       (gen_rotated_half_load): Rename to arm_gen_rotated_half_load.
+       (gen_comapre_reg): Rename to arm_gen_compare_reg.
+
+       * config/arm/arm.h (SUBTARGET_EXTRA_ASM_SPEC): Define if not
+       already defined.
+       (ASM_SPEC): Define if not already defined.
+       (ASM_OUTPUT_DEF_FROM_DECLS): Define.
+
+       * config/arm/arm.md: Rename references to gen_rotated_half_load to
+       arm_gen_rotated_half_load, and references to gen_comapre_reg to
+       arm_gen_compare_reg.
+       (indirect_jump):  Only accept register operands.
+       (load_indirect_jump): Keep this pattern since combine can generate
+       it.
+
+       * config/arm/coff.h: Include aout.h.
+       (MULTILIB_DEFAULTS): Only define if not already defined.
+
+       * config/arm/elf.h (ASM_OUTPUT_DEF_FROM_DECLS): Move definition
+       into arm.h (so that COFF ports can support thumb based aliases).
+       (ASM_SPEC): Move definition into arm.h
+       
+       * config/arm/linux-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Remove
+       redundant apcs spec.
+       (ASM_SPEC): Move definition to arm.h
+
+       * config/arm/semi.h (ASM_SPEC): Move definition to arm.h
+
+       * config/arm/unknown-elf.h (ASM_OUTPUT_SECTION_NAME): Add support
+       for entries in the .bss section
+
+       2000-03-23  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.h (THUMB_INITIAL_ELIMINATION_OFFSET): Pass 0
+       to thumb_far_jump_used_p.
+
+       * config/arm/arm-protos.h (thumb_far_jump_used_p): Take a
+       single integer parameter.
+
+       * config/arm/arm.c (struct machine_function): Add two new
+       fields, 'far_jump_used' and 'arg_pointer_live'.
+       (thumb_far_jump_used_p): Once the decision has been made that
+       far jumps might be used, always return true.
+       If being called from the initial elimination offset macro then
+       do not bother to perform the test if the arg pointer is not
+       being used.
+       (thumb_unexpand_epilogue): Pass 1 to thumb_far_jump_used_p().
+       (output_thumb_prologue): Pass 1 to thumb_far_jump_used_p().
+
+       2000-03-23  Richard Earnshaw (rearnsha@arm.com)
+
+       * arm.c (output_return_instruction): Handle more cases where we can
+       return from a function with an ldr instruction.
+       (arm_output_epilogue): Likewise.
+
+       * arm.c (thumb_expand_prologue): Don't clobber the frame pointer
+       if we need to push a large stack frame and there are no callee-saved
+       registers.
+
+       * arm.c (arm_debugger_arg_offset): An offset of 0 is also valid
+       in ARM code if the frame pointer has been eliminated.
+
+       * arm.md (epilogue, *epilogue_insns, consttable_*, align_4): Renumber
+       unspec_volatile arguments to avoid duplicates.
+       (consttable_1, consttable_2): Fixes for big-endian mode.
+
+       * arm.md (all ARM-mode load insns): Add neg_pool_range attribute
+       as appropriate.
+
+       Re-write constant pool code.
+       * arm.c (minipool_node, minipool_fix): New types.
+       (minifix): Delete type.
+       (arm_add_minipool_constant): Delete.
+       (arm_compute_minipool_offsets, arm_find_barrier, 
+       arm_find_minipool_constant, fixup_compare, sort_fixups): Likewise.
+       (get_jump_table_size): Now returns HOST_WIDE_INT.
+       (move_minipool_fix_forward_ref, add_minipool_forward_ref): New
+       functions.
+       (move_minipool_fix_backward_ref, add_minipool_backward_ref): Likewise.
+       (assign_minipool_offsets, arm_print_value): Likewise.
+       (dump_minipool): Rewrite.
+       (arm_barrier_cost): New function.
+       (create_fix_barrier): New function.
+       (push_minipool_barrier): New function.
+       (push_minipool_fix): Record additional information about the fixup 
+       required.
+       (note_invalid_constants): Remove push for (UNSPEC 3).  Don't
+       check the mode of what needs fixing.
+       (arm_reorg): Rewrite.
+
+       2000-03-08  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.md (indirect_jump): Force constant addresses into
+       a register. 
+
+       2000-03-01  Bernd Schmidt <bernds@cygnus.co.uk>
+
+       * config/arm/arm.md: Add splitter to turn SF moves into SI moves.
+
+       2000-02-24  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.c (thumb_expand_prologue): Make sure that stack
+       adjust is word aligned.
+       (thumb_expand_epilogue): Make sure that stack adjust is word
+       aligned.
+
+       * config/arm/elf.h (ASM_FILE_START): Fix type of version string.
+       
+       2000-02-24  Bernd Schmidt <bernds@cygnus.com>
+
+       * config/arm/arm.h (THUMB_GO_IF_LEGITIMATE_ADDRESS): Allow frame
+       pointer relative addresses.
+
+       2000-02-10  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.c (find_barrier): Find the last barrier within the allowed 
+       range.
+
+       2000-02-09  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm-protos.h: Replace PROTO with PARAMS.
+
+       2000-02-09  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/linux-elf.h (FUNCTION_PROFILER): Rename to
+       ARM_FUNCTION_PROFILER. 
+
+       * config/arm/netbsd.h (FUNCTION_PROFILER): Rename to
+       ARM_FUNCTION_PROFILER. 
+
+       * config/arm/linux-oldld.h: Imported from mainline sources.
+
+       2000-02-07  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/lib1funcs.asm: Merge in thumb functions from
+       lib1thumb.asm.
+       
+       * config/arm/lib1thumb.asm: Delete.
+
+       2000-02-04  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.c: Sychronised with current Red hat local
+       sources. 
+       * config/arm/arm.h: Ditto.
+       * config/arm/arm-protos.h: Ditto.
+
+       2000-02-02  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * arm.c (soft_df_operand): Reject SUBREGs containing a constant.
+
+       * arm.c (arm_gen_movstrqi): Generate halfword stores rather than two
+       byte stores.
+
+       2000-02-02  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/thumb.c (thumb_exit): Additional fix for same bug.
+
+       * config/arm/arm.md (epilogue): Fix rtl checking abort because
+       (return) was emited using an emit_insn() call. 
+       
+       2000-01-31  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.c (output_thumb_prologue): Fix bug generating
+       thumb stack frame.
+       (thumb_exit): Move frame pointer back into hard frame pointer
+       register if backtracing is being used.
+
+       2000-01-13  Richard Earnshaw (rearnsha@arm.com)
+
+       * Merge trunk code from tag merged-arm-thumb-backend-merge_20000113 
+       into branch.
+
+       1999-12-15  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * config/arm/arm.md (neg_pool_offset): Provide default for new
+       attribute.
+       (arm_movsi_insn): Add neg_pool_offset attribute.
+       * config/arm/arm.c (arm_find_barrier): Replace arg FIX with an
+       rtx for the insn that starts the scan and an unsigned long for its
+       address.  Add MIN_OFFSET and PINSERTED args.  All callers changed.
+       Change scan to ignore insns before MIN_OFFSET.  Store size of inserted
+       instructions in *PINSERTED.
+       (struct minipool_fixup): Add MIN_ADDRESS elt.
+       (sort_fixups): Compute it.
+       (arm_reorg): Changes to support inserting pools before the insn to be
+       fixed up.
+
+       1999-12-08  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * config/arm/elf.h (MULTILIB_DEFAULTS): Add "marm".
+       * config/arm/linux-elf.h (MULTILIB_DEFAULTS): Add "marm".
+       * config/arm/coff.h (MULTILIB_DEFAULTS): Add "marm".
+
+       Wed Nov  3 10:04:07 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/semi.h (TARGET_VERSION): Do not define if already
+       defined.
+       (TARGET_DEFAULT): Do not define if already defined.
+
+       Tue Nov  2 10:37:25 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.md (anddi3): Allow disjoint source operands.
+       (iordi3): Allow disjoint source operands.
+       (xordi3): Allow disjoint source operands.
+       (negdi2): Permit construction for ARM and Thumb.
+       (arm_negdi2): Renamed version of old negdi2 pattern.
+       (thumb_negdi2): New pattern: Only permit non-overlapping
+       source and destination.
+
+       Fri Oct 29 18:52:38 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/arm.c (thumb_expand_prologue): Emit a USE of the
+       scratch low register so that it will not be deleted.
+
+       Fri Oct 29 15:23:48 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/pe.h (ARM_PE): Define.
+       
+       * config/arm/arm.c (arm_valid_machine_decl_attribute): Allow
+       interfacearm attribute if this is a PE toolchain.
+       (output_return_instruction): Do not emit anything if the function
+       has the naked attribute set.
+       (is_called_in_ARM_mode): If the function has the interfacearm
+       attribute then return true.
+       (thumb_expand_prologue): Do not generate a prologue for naked
+       functions.
+       (thumb_expand_epilogue): Do not generate an epilogie for a naked
+       function.
+       (output_thumb_prologue): Do not bother if the function is naked.
+       Strip PE encoding from function name before emitting.
+
+       Thu Oct 28 11:05:13 1999  Richard Earnshaw <rearnsha@arm.com>
+
+       * arm.md (pic_load_addr): Fix constraints.
+
+       * arm.md (casesi_insn): Fix mis-applied patch.
+
+       * arm.md ("core" function unit): Add rules for single- and
+       multi-cycle insns.
+       (All TARGET_THUMB patterns): Add "type" attribute information
+       where needed.
+       * arm.c (arm_adjust_cost): Reduce the cost of a data dependency if
+       the following insn is a CALL.
+
+       * arm.c (thumb_expand_epilogue): Add a use of the adjusted stack
+       pointer.
+       * arm.h (CONDITIONAL_REGISTER_USAGE): Nail down the 
+       ARM_HARD_FRAME_POINTER_REGNUM when TARGET_APCS_FRAME.
+       (FRAME_POINTER_REQUIRED): Only check TARGET_APCS_FRAME if TARGET_ARM.
+       
+       Wed Oct 27 14:40:48 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/linux-gas.h: oops - this file was missed out when the
+       branch was created...
+
+       Tue Oct 26 17:07:38 1999  Richard Earnshaw <rearnsha@arm.com>
+
+       * thumb.c: Deleted.  Move contents to ...
+       * arm.c: ... here.
+       * t-arm-aout, t-arm-coff, t-arm-elf, t-linux, t-netbsd, t-semi: Remove
+       rule for thumb.o
+       * configure.in (arm*-*-*): Remove thumb.o from extra_objs list.
+       * configure: Regen.
+
+       * arm-protos.h: Use RTX_CODE and tidy up long lines.  Don't
+       declare a prototype for asm_output_align();
+
+       * arm.c (thumb_condition_code): Delete.
+       (arm_print_operand): Always use arm_condition_code array.
+
+       * arm.c (thumb_return_addr_rtx): Delete.
+       (arm_save_machine_status, arm_restore_machine_status): Delete.
+       (arm_init_machine_status, arm_mark_machine_status): New functions.
+       (arm_init_expanders): Update accordingly.
+       (arm_return_addr): Renamed from arm_return_addr_rtx.  Rewrite.
+       (thumb_expand_prologue): Delete code referencing thumb_return_addr_rtx.
+       * arm.h (RETURN_ADDR_RTX): Call arm_return_addr().
+       
+       Tue Oct 26 13:24:16 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * configure.in : Fix arm-*-aout target to use new t-arm-aout
+       script. 
+       * config/arm/t-arm-aout: New file: Makefile script for arm-*-aout
+       targets.
+
+       Tue Oct 26 11:27:12 1999  Nick Clifton  <nickc@cygnus.com>
+
+       * config/arm/thumb.c (output_thumb_prologue): Fix bug creating
+       stack backtrace structure.
+
+       * config/arm/arm-protos.h: Add prototypes for functions defined in
+       arm/pe.h.
+       
+       * config/arm/arm.c (arm_override_options): Fix selection of 
+       attributes of default processor.
+       
+       * config/arm/coff.h: Delete needless #include.
+       
+       * config/arm/pe.c: Delete unused code.
+       
+       * config/arm/pe.h (CPP_DEFINES): Delete
+       (SUBTARGET_CPP_SPEC): Define.
+       (ASM_DECLARE_FUNCTION_NAME): Use ARM_DECLARE_FUNCTION_NAME.
+       
+       * config/arm/t-pe: Add -DInhibit_libc to allof libgcc.a to build.
+
+       Mon Oct 25 15:42:09 1999  Richard Earnshaw (rearnsha@arm.com)
+
+       * arm.h (TARGET_APCS_FRAME): Renamed from TARGET_APCS -- all uses
+       updated.
+       (CAN_DEBUG_WITHOUT_FP): Define.
+       (FIXED_REGISTERS): Make r11 call-saved.
+       (CALL_USED_REGISTERS): Likewise.
+       (CONDITIONAL_REGISTER_USAGE): Fix r11 if TARGET_APCS_FRAME.
+       (FRAME_POINTER_REQUIRED): Correct logic for determining when a 
+       frame-pointer is required.
+       (TARGET_DEFAULT): Make default setting include ARM_FLAG_APCS_FRAME.
+       * arm.c (arm_override_options): Warn about -mno-apcs-frame and -g
+       if the target normally needs a stack frame in non-leaf functions.
+       (use_return_insn): Correct logic for determining when a return
+       instruction can be used.
+       (output_return_instruction): Handle the frame-pointer register as
+       a normal register when not TARGET_APCS_FRAME.
+       (arm_output_prologue): Likewise.
+       (arm_output_epilogue): Likewise.
+       (output_func_epilogue): Likewise.
+       (arm_expand_prologue): Likewise.
+       * netbsd.h semi.h (TARGET_DEFAULT): Add ARM_FLAG_APCS_FRAME.
+
+       * arm.c (use_return_insn): No need to check floating point regs if
+       TARGET_SOFT_FLOAT.
+       (arm_find_minipool_constant): Correct typo; use GET_CODE to get
+       the code of value stored in the minipool array.
+       (arm_add_minipool_constant): Likewise.
+
+2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * basic-block.h (conflict_graph_enum_fn): K&R fix.
+
+2000-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * tree.c (tree_expr_nonnegative_p): New function.
+
+       * tree.h (tree_expr_nonnegative_p): Declare.
+
+       * c-typeck.c (build_binary_op): Call `tree_expr_nonnegative_p' to
+       elide some sign_compare warnings.
+       (build_conditional_expr): Likewise.
+
+Sat Apr  8 00:21:51 EDT 2000  John Wehle  (john@feith.com)
+
+       * i386.md (ashrsi3, ashrhi3, ashrqi3): Fix typo.
+
+       * i386.md (floathisf2, floathidf2, floathixf2): New patterns.
+       * i386.c (print_operand): Use the proper suffix for a 387 HImode
+       operand.  Abort if a 387 operand has an unsupported size.
+
+2000-04-08  Neil Booth  <NeilB@earthling.net>
+
+       * cppexp.c (parse_charconst): Null does not end character
+       constants.
+       * cppinit.c (ISTABLE): Null character handled as whitespace.
+       * cpplex.c (null_warning):  new function.
+       (skip_string): Emit warning if nulls encountered.
+       (_cpp_skip_hspace): Emit warning if nulls encountered.
+       (_cpp_lex_token): Emit warning if nulls encountered.  Drop
+       them.
+       * cpp.texi: Update.
+
+2000-04-07  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (loop_depth): Remove.
+       (reg_next_use, cc0_live, mem_set_list): Replace with ...
+       (struct propagate_block_info): New.
+       (life_analysis): Don't allocate reg_next_use.
+       (propagate_block_delete_insn): Break out of propagate_block.
+       Use flow_delete_insn to unlink rather than use NOTE_INSN_DELETED.
+       (propagate_block_delete_libcall): Likewise.
+       (propagate_block): Create a propagate_block_info struct to pass
+       to subroutines.  Allocate one not two temporary regsets.  Don't
+       clobber memory for const calls.  Look for clobbers in
+       CALL_INSN_FUNCTION_USAGE.
+       (mark_set_regs): Recognize COND_EXEC.
+       (mark_set_reg): Break out of mark_set_1.
+       (mark_used_reg): Break out of mark_used_regs.
+       (mark_used_regs): Recognize COND_EXEC.
+       (insn_dead_p): Use propagate_block_info struct.
+       (libcall_dead_p, invalidate_mems_from_autoinc): Likewise.
+       (find_auto_inc, try_pre_increment_1): Likewise.
+       (print_rtl_with_bb): Dump regs live at end too.
+       (count_reg_sets_1): Pass in loop_depth.
+       (count_reg_sets, count_reg_references): Likewise.
+       (recompute_reg_usage): Provide it.
+
+2000-04-07  Richard Henderson  <rth@cygnus.com>
+
+       * Makefile.in (conflict.o): Depend on $(RTL_H) and $(BASIC_BLOCK_H)
+       not the raw files.
+
+2000-04-07  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cpplib.c (do_elif): Skip the rest of the line if we're
+       not going to bother evaluating it.
+       (skip_if_group): Clear pfile->only_seen_white.  Reorder loop
+       to avoid pointless calls to the lexer.
+
+Fri Apr  7 11:50:54 2000  Jim Wilson  <wilson@cygnus.com>
+
+       * config/ia64/ia64.c: Delete stdio.h and ctype.h includes.
+
+2000-04-07  Jason Merrill  <jason@casey.cygnus.com>
+
+       * calls.c (expand_call): emit_queue if we're trying a sibcall.
+
+2000-04-07  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/t-linux64 (tcrtbeginS.o, tcrtendS.o): Remove.
+
+2000-04-06  Geoff Keating  <geoffk@cygnus.com>
+
+       * Makefile.in: Build crtbeginS and crtendS like crtbegin and
+       crtend so they can be multilibbed.
+       (STAGESTUFF): Remove s-crt and s-crtS.
+
+2000-04-07  Richard Henderson  <rth@cygnus.com>
+
+       * config/alpha/alpha.c (alpha_emit_conditional_move): Fail
+       if we discover we need a pseudo and no_new_pseudos is true.
+       * config/alpha/alpha.md (ne:DI insn): New.
+       (trunctfsf2, sne): Emit NE instead of non-canonical LTU.
+
+2000-04-07  Richard Henderson  <rth@cygnus.com>
+
+       * rtl.def (COND_EXEC): New.
+       * rtl.h (COND_EXEC_TEST, COND_EXEC_CODE): New.
+       * tm.texi (MAX_CONDITIONAL_EXECUTE): Document.
+
+       * genconfig.c (have_cond_arith_flag): Remove.
+       (have_cond_exec_flag): New.
+       (walk_insn_part): Detect COND_EXEC, not arithmetic in IF_THEN_ELSE.
+       (main): Print HAVE_conditional_execution.
+
+       * haifa-sched.c (haifa_classify_insn): Recognize COND_EXEC.
+       (sched_analyze_insn, print_pattern): Likewise.
+       * reload.c (find_equiv_reg): Likewise.
+       * rtlanal.c (reg_referenced_p): Likewise.
+       (note_stores, dead_or_set_regno_p): Likewise.
+       (reg_overlap_mentioned_p): Rewrite to use a switch.
+
+       * ggc.h (struct rtx_def): Forward declare.
+
+       * print-rtl.c (debug_rtx_range): New.
+       * rtl.h (debug_rtx_range): Declare.
+
+       * varray.h (VARRAY_ACTIVE_SIZE, VARRAY_POP_ALL): New.
+
+       * gcse.c (gcse_main): Don't rebuild the CFG here.
+       (delete_null_pointer_checks): Likewise.
+       * ssa.c (convert_to_ssa): Likewise.
+       * toplev.c (rest_of_compilation): Do it here instead.  Combine
+       sequential calls to TIMEVAR.  Consistently use `insns' instead of
+       `get_insns()'.  Always split insns after reload when optimizing.
+
+       * basic-block.h (merge_blocks_nomove): Declare.
+       (tidy_fallthru_edge): Declare.
+       * flow.c (merge_blocks_nomove): Document as merging into previous
+       blocks.  Remove cruft from between blocks; remove all edges out of A.
+       (tidy_fallthru_edge): Export.
+
+2000-04-06  Alex Samuel  <samuel@codesourcery.com>
+
+       * ssa.c (compute_conservative_reg_partition): Declare with
+       void arguments.
+       * toplev.c (clean_dump_file): Remove previously-deleted function
+       inadvertantly merged back in.
+       * conflict.c (conflict_graph_add): Use a single call to
+       htab_find_slot to look up and insert.
+
+2000-04-06  Richard Henderson  <rth@cygnus.com>
+
+       * genrecog.c (*): Rename _last_insn to last_insn.
+       (make_insn_sequence): Set the position of the peephole2 C test
+       to be at the last insn.
+
+2000-04-06  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (compute_flow_dominators): Free worklist.
+
+2000-04-06  Michael Matz  <matzmich@cs.tu-berlin.de>
+
+       * flow.c (compute_flow_dominators): Process blocks FIFO not LIFO.
+
+2000-04-06  Alex Samuel  <samuel@codesourcery.com>
+
+       * rtl.h (INSN_P): New macro.
+       (successor_phi_fn): New typedef.
+       (for_each_successor_phi): New prototype.
+       (in_ssa_form): New variable.
+       (PHI_NODE_P): Likewise.
+       * flow.c (calculate_global_regs_live): Add to new_live_at_end from
+       phi nodes in successors.
+       (mark_used_regs): Add PHI case.
+       (set_phi_alternative_reg): New function.
+       (life_analysis): Assert that dead code elimination is not selected
+       when in SSA form.
+       * toplev.c (to_ssa_time): New variable.
+       (from_ssa_time): Likewise.
+       (compile_file): Zero to_ssa_time and from_ssa_time.
+       Print time to convert to and from SSA.
+       (rest_of_compilation): Time convert_to_ssa and convert_from_ssa.
+       (print_time): Compute percent fraction as integer.
+       * ssa.c (PHI_NODE_P): Moved to rtl.h.
+       (convert_to_ssa): Check if we're already in SSA.  
+       Don't eliminate dead code in life_analysis.
+       Rerun flow and life analysis at bottom.
+       (eliminate_phi): Use canonical regnos when adding nodes.
+       (mark_reg_in_phi): New function.
+       (mark_phi_and_copy_regs): Likewise.
+       (convert_from_ssa): Rerun life analysis at top.  
+       Use coalesced partition.
+       Check for removing a phi node at the end of the block.
+       (compute_coalesced_reg_partition): New function.
+       (coalesce_regs_in_copies): Likewise.
+       (coalesce_reg_in_phi): Likewise.
+       (coalesce_regs_in_sucessor_phi_nodes): Likewise.
+       (for_each_successor_phi): Likewise.
+       (rename_context): New struct.
+       (rename_block): Use a rename_context with rename_insn_1.  When
+       renaming sets of a subreg, emit a copy of the entire reg first.
+       (rename_insn_1): Treat data as a rename_context *.  Save current
+       insn in set_data.
+       (rename_set_data): Add field set_insn.
+       * Makefile.in (HASHTAB_H): Move up in file.
+       (OBSTACK_H): New macro.
+       (collect2.o): Use OBSTACK_H in dependencies.
+       (sdbout.o): Likewise.
+       (emit-rtl.o): Likewise.
+       (simplify-rtx.o): Likewise.
+       (fix-header.o): Likewise.
+       (OBJS): Add conflict.o.
+       (conflict.o): New rule.
+       * basic-block.h: Include partition.h.
+       (conflict_graph): New typedef.
+       (conflict_graph_enum_fn): Likewise.
+       (conflict_graph_new): New prototype.
+       (conflict_graph_delete): Likewise.
+       (conflict_graph_add): Likewise.
+       (conflict_graph_conflict_p): Likewise.
+       (conflict_graph_enum): Likewise.
+       (conflict_graph_merge_regs): Likewise.
+       (conflict_graph_print): Likewise.
+       (conflict_graph_compute): Likewise.
+       * conflict.c: New file.
+
+2000-04-06  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * tlink.c (read_repo_files): Don't look for .rpo info for
+       linker flags.
+
+Thu Apr  6 20:39:26 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * sh.h (STRUCT_VALUE, RETURN_IN_MEMORY): Define.
+
+Thu Apr  6 19:34:08 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * config/sh/lib1funcs.asm (___udivsi3_i4):
+       ( __SH4_SINGLE__ / __SH4_SINGLE_ONLY__ variant): value for fpscr
+       only depends on FMOVD_WORKS.
+
+Thu Apr  6 19:11:47 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * config/sh/lib1funcs.asm (___udivsi3_i4): When using fmovd,
+       make double constant 8-byte aligned.
+
+2000-04-06  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/sparc/sparc.md (movtf_insn_sp32, movtf_insn_vis_sp32,
+       movtf_no_e_insn_sp32, movtf_insn_hq_sp64, movtf_insn_hq_vis_sp64,
+       movtf_no_e_insn_sp64): Accept loading 0.0 into GENERAL_REGS.
+       (movtf_insn_sp64, movtf_insn_vis_sp64): Likewise.
+       Accept storing GENERAL_REGS into offsetable memory.
+       * config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Don't allow
+       building a TFmode constant other than 0.0L into GENERAL_REGS.
+
+2000-04-06  Clinton Popetz  <cpopetz@cygnus.com>
+
+       * regrename.c (regrename_optimize): Handle no REG_ALLOC_ORDER.
+       
+2000-04-06  Zack Weinberg  <zack@wolery.cumb.org>
+
+       * cpphash.c (CPP_IS_MACRO_BUFFER, FORWARD, PEEKC): Delete.
+       (macro_cleanup): No need to cast pbuf->macro.
+       (collect_expansion): Use _cpp_get_define_token.  Goto done if
+       it returns VSPACE.  Remove check for trailing space after
+       CPP_COMMENT.
+       (_cpp_create_definition): Don't diddle flags here.  Return
+       directly on error.
+       (unsafe_chars): Handle c1 being EOF.
+       (push_macro_expansion): Use unsafe_chars for both accidental-paste
+       checks.  Don't push the buffer till after we're done with
+       them.
+       * cpplex.c (PEEKBUF, GETBUF, FORWARDBUF): New.
+       (PEEKN, FORWARD, GETC, PEEKC): Use them.
+       (cpp_push_buffer): Don't set new->alimit.  Set new->mark
+       appropriately.
+       (_cpp_parse_assertion): Don't NUL terminate.
+       (_cpp_lex_token): Fix -traditional macro handling.  Don't skip
+       hspace before calling _cpp_parse_assertion.  Remove all sets
+       of only_seen_white. Treat '\f' as hspace.  Don't do anything
+       special with '\n' here.
+       (maybe_macroexpand): Handle T_EMPTY hash entries without
+       pushing a buffer at all.
+       (cpp_get_token): Handle clearing only_seen_white here.  Handle
+       incrementing the line number here.  Clear
+       potential_control_macro as well as only_seen_white, if
+       appropriate.
+       (cpp_get_non_space_token): Don't eat CPP_POP tokens.
+       (_cpp_get_define_token): New function, basically like
+       _cpp_get_directive_token was but doesn't eat horizontal space.
+       Don't do anything with only_seen_white here.
+       (_cpp_get_directive_token): Just call _cpp_get_define_token
+       repeatedly till it returns non-hspace.
+
+       * cpplib.c (PEEKN, FORWARD, GETC, PEEKC): Delete.
+       (conditional_skip, skip_if_group): Return int.
+       (DIRECTIVE_TABLE): Change origin of all conditional directives
+       to "COND".
+       (TRAD_DIRECT_P): New macro.
+       (_cpp_handle_directive): Use _cpp_get_directive_token.  Issue
+       an error for a bogus directive, unless -lang-asm.  Use
+       TRAD_DIRECT_P. Loop calling handler functions till one returns
+       zero.
+       (get_macro_name): Don't diddle flags here.
+       (do_define): Diddle flags here.  Use _cpp_get_directive_token.
+       Create T_EMPTY nodes for #define macro /* nothing */.
+       (do_undef): Don't copy the name.  Use _cpp_get_directive_token.
+       Use hp->name when calling pass_thru_directive.
+       (do_if, do_else, do_elif, do_ifdef, do_ifndef, conditional_skip):
+       Return the result of conditional_skip and/or skip_if_group.
+       Don't call _cpp_output_line_command.
+       (consider_directive_while_skipping): Use _cpp_get_directive_token.
+       Issue -Wtraditional warnings as appropriate.  Don't complain
+       about unrecognized directives.  If we are to stop skipping,
+       return the number of the directive that ended the skip.
+       (skip_if_group): Use _cpp_get_directive_token.  Turn off macro
+       expansion and line commands while skipping.  Return the result
+       of consider_directive_while_skipping, if nonzero.
+       (do_endif): Just set potential_control_macro here.
+       (validate_else): Use _cpp_get_directive_token.
+       (do_assert, do_unassert): Don't save pointers into the
+       token_buffer across calls to the lexer.  Use
+       _cpp_get_directive_token.  
+
+       * cpplib.h (cpp_buffer): Remove alimit and colno.  Make mark a 
+       pointer, not an offset.  Replace 'data', which was a generic
+       pointer, with 'macro', which points to a struct hashnode.
+       (cpp_reader): Add 'potential_control_macro' pointer.
+       * cpphash.h (T_UNUSED): Replace with T_EMPTY.
+       (CPP_BUF_GET, CPP_FORWARD): Delete.
+       (CPP_IN_COLUMN_1, ADJACENT_TO_MARK): New macros.
+       (CPP_IS_MACRO_BUFFER, CPP_SET_BUF_MARK, CPP_GOTO_BUF_MARK,
+       ACTIVE_MARK_P): Update.
+       (_cpp_get_define_token): New internal function.
+       * cppfiles.c (read_include_file): Don't set fp->alimit or fp->colno.
+
+2000-04-05   Benjamin Kosnik  <bkoz@cygnus.com>
+
+       * configure.in: And here.
+       * configure: Regenerate.
+       * acconfig.h: Add ENABLE_STD_NAMESPACE to set flag_honor_std if
+       --enable-libstdcxx-v3 is passed at configure time.
+       * config.h.in: Regenerate.
+
+2000-04-05  Mark Mitchell  <mark@codesourcery.com>
+
+       * final.c (final): Use xcalloc to allocate line_note_exists.
+       * function.c (free_after_compilation): Free the temp_slots.
+       (assign_stack_temp_for_type): Use xmalloc to allocate temp_slots.
+       (combine_temp_slot): Free temp_slots when they get combined.
+       (purge_addressof): Fix typo in comment.
+       * stmt.c (mark_goto_fixup): Mark the fixup itself.
+       (expand_fixup): Allocate the fixup with ggc_alloc_obj.
+
+       * ggc.h: Include varray.h.
+       (ggc_pending_trees): Declare.
+       (ggc_mark_tree_children): Remove declaration.
+       (ggc_mark_tree): Just push unmarked trees on ggc_pending_trees.
+       * ggc-common.c (ggc_pending_trees): New variable.
+       (ggc_mark_roots): Call ggc_mark_trees.
+       (ggc_mark_tree_children): Rename to ggc_mark_trees.  Process all
+       the ggc_pending_trees.
+       * Makefile.in (GGC_H): New variable.  Use it throughout in place
+       of ggc.h.
+       
+Thu Apr  6 00:30:50 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * sh.h (FUNCTION_ARG_PARTIAL_NREGS): Accomodate an unsigned
+       GET_MODE_SIZE.
+
 Wed Apr  5 23:17:10 2000  J"orn Rennecke <amylaar@cygnus.co.uk>
 
        * sh.c (sh_insn_length_adjustment): New function.
@@ -16,9 +809,9 @@ Wed Apr  5 12:35:18 2000  Hans-Peter Nilsson  <hp@axis.com>
        all (op (minus A B) 0) with (op A B).
 
 Wed Apr  5 18:03:31 2000  Toshiyasu Morita  (toshi.morita@sega.com)
-                          J"orn Rennecke <amylaar@cygnus.co.uk>
+                         J"orn Rennecke <amylaar@cygnus.co.uk>
 
-       * sh.c (block_lump_real_i4): Add missing clobber of T_REG
+       * sh.md (block_lump_real_i4): Add missing clobber of T_REG
        (block_lump_real): Likewise.
 
 2000-04-05  Chris Demetriou  <cgd@netbsd.org>