(pragma_nosave_low_regs): New global variable.
(calc_live_regs): If SH3 and pragma_nosave_low_regs, then don't
save registers r0 through r7 for interrupt functions.
(function_epilogue): Clear pragma_nosave_low_regs.
(handle_pragma): Set pragma_nosave_low_regs if see pragma for it.
From-SVN: r10649
(prepare_scc_operands): New local variable mode. Set it from
sh_compare_op0 or sh_compare_op1. Use it instead of SImode in
force_reg calls.
From-SVN: r10500
(find_barrier): Always use get_attr_length to compute length of
instructions. If count_hi or count_si out of range at end, need two
PREV_INSN calls not one.
From-SVN: r10496
(output_stack_adjust): Add new argument reg. Use it instead of
stack_pointer_rtx.
(sh_expand_prologue, sh_expand_epilogue): Pass new argument to
output_stack_adjust.
From-SVN: r10259
(add_constant, current_function_pretend_args_size,
flag_traditional, table_lab): Delete unnecessary declarations.
(sh_cpu): Change type from attr_cpu to processor_type.
(need_slot, output_shift, lshiftrt_insns, howshift,
pop_operand): Delete.
(print_operand, output_branch): Delete calls to need_slot.
(synth_constant): Comment that it doesn't work.
(output_movedouble): Handle PRE_DEC dest not POST_INC dest.
(output_options): Don't use flag_traditional.
(shift_insns): Correct numbers to optimal sequences.
(shift_amounts): New table.
(shift_insns_rtx): New function.
(shiftinsns): Combine LSHIFTRT and ASHIFT cases.
(shiftcosts): Return true costs of shifts instead of estimate of 1.
(gen_ashift): Handle negative shift amounts. Call gen_lshrsi3_m
for single bit LSHIFTRT, and gen_lshrisi3_k for multiple bit shifts.
(gen_shifty_op): Handle negative shift amounts at top. Generate
optimal sequences for ASHIFT and LSHIFTRT.
(find_barrier): Correct pattern for matching mova instructions.
(general_movsrc_operand): Delete redundant test for (MEM LABEL_REF).
Don't reject POST_INC address for size > 4.
(general_movdst_operand): Don't reject PRE_DEC address for size > 4.
From-SVN: r9062
(prepare_scc_operands): Force sh_compare_op1 to a register if
it is an invalid constant.
(output_branch): Add cases for 4, 8, and 18. Correct branch offsets
in comments.
(find_barrier): Correct test for move instructions that need to be
fixed by verifying that the set source is a bad constant.
(arith_reg_or_0_operand): New function.
From-SVN: r8824
(multcosts): Do not compute cost of constant power-of-two
multiplies as if they were shifts. Reduce multiply cost from 5 to 3.
Delete variable insn_cost.
From-SVN: r8777