(init_extends, init_fixtab, init_floattab): Deleted.
(init_optabs): Move active stuff from above functions in.
Delete filling of optabs.
Call init_all_optabs.
From-SVN: r3925
(i960_function_prologue): When profiling, don't use those
registers clobbered around an mcount call.
(output_function_profiler): New function.
From-SVN: r3916
Change a few occurrences of RTX_CODE to enum rtx_code for consistency.
(merge_trees): Add casts of args to mybcopy.
(write_tree_1): Now static.
(fatal): Always called with one arg, so define that way.
From-SVN: r3914
and caller-save.c.
(reload_strict_low, reload_needed_for_multiple, reload_needed_for): Deleted.
(reload_opnum): New array.
(enum reload_type): Renamed from reload_when_needed and expanded to include
more reload types.
(reload_n_operands): New variable.
From-SVN: r3912
(struct decompose): Move to before function declarations.
(secondary_memlocs_elim): One per operand, not per mode.
(get_secondary_mem): Accept and use reload description (opnum and type).
(push_reload): Accept and use new reload description instead of old NEEDED_FOR.
Define two new macros: MERGEABLE_RELOADS and MERGE_TO_OTHER.
Use these macros to see if reloads can be merged and how to do it.
(transfer_replacements): New function.
(combine_reloads): Refine when we can combine reloads.
(find_reloads): Use new method of tracking what a reload is for.
When we make a CLOBBER insn, do so with DImode.
Merge cases of making optional reloads, avoid making output-only optional
reloads, refine when we may not make in-out optional reloads, and make an
optional reload for a pair of matching operands.
(find_reloads_toplev, find_reloads_address{,_1, part}): Accept and use reload
description.
(forget_volatility): Delete long-obsolete function.
From-SVN: r3911
(REGISTER_MOVE_COST, MEMORY_MOVE_COST): Include default definitions.
(reload): Count number of registers needed for insn using new reload type
information.
If mode of insn is DImode, don't change it.
Refine the way we handle conflict with the return value register.
Don't try to account for needs already covered by previously spilled
registers; instead, put them back in the front of potential_reload_regs and
let them be allocated again.
(order_regs_for_reload): Don't restrict regs explicitly used if we have
SMALL_REGISTER_CLASSES defined.
(reload_as_needed): Don't need to deactivate optional reloads ever; if they
inherit, it must have been safe.
Call merge_assigned_reloads if SMALL_REGISTER_CLASSES.
(reload_reg_used_*): Refine our tracking of reload reg usage by defining more
of these HARD_REG_SETs.
(mark_reload_reg_in_use, reload_reg_free_p): Rework to use new method of
describing where a reload register is used.
(reload_reg_free_before_p, reload_reg_reaches_end_p): Likewise.
(allocate_reload_reg): Pass new reload descriptions.
(choose_reload_regs): Likewise.
Save and restore the new HARD_REG_SETs.
Remove now-redundant code to prevent conflicts.
(merge_assigned_reloads): New function.
(emit_reload_insns): Output each reload type into its own sequence, then
output the sequences in the proper order.
Put our output reloads after a CLOBBER made by find_reloads.
Pass ALL_REGS to find_equiv_regs; nothing special about GENERAL_REGS.
Don't use an old equivalence if doing so would be more expensive.
Clean up tracking of values still in reload regs using reload description
info to see if the reload reaches the end of the insn.
(gen_input_reload): Pass reload description and emit insns to end of current
sequence.
(inc_for_reload): Return void; no longer need INSN as operand.
Emit insns to end of current sequence.
From-SVN: r3910
* pa.md (smin, umin, smax, umax): New patterns.
* pa.md (cbranch define_delay): Enable nullification of
conditional branch delay slots (based upon branch direction).
(conditional branch patterns): Call output_cbranch to get the
correct output template. Long conditional branches with an
annulled delay slot have a length of 3.
(branch on bit patterns): Call output_bb to get the correct
output template. Long branches with an annulled delay slot have
a length of 3.
(decrement and branch pattern): Handle nullification of long
From-SVN: r3906
* reorg.c (ANNUL_IFTRUE_SLOTS, ANNUL_IFFALSE_SLOTS): Add new
flags variable to these dummy macros.
(get_jump_flags): New function.
(optimize_skip): Get jump flags information from the delay insn.
(steal_delay_list_from_target): Get jump flags information from the
delay insn and the label of the trial jump.
(steal_delay_list_from_fallthrough): Get jump flags information
from the delay insn.
(try_merge_delay_insns): Likewise.
(fill_simple_delay_slots): Likewise.
(fill_slots_from_thread): Likewise.
(make_return_insn): Likewise.
From-SVN: r3904