+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.
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>