61a55e8b09
* sparc/sparc.c (SKIP_CALLERS_UNIMP_P): Define. (sparc_cpu_type, sparc_arg_count, sparc_n_named_args, frame_base_offset, fpconv_stack_temp): New globals. (leaf_reg_remap): Add additional registers for v9. (sparc_override_options, sparc64_init_expanders, sparc64_fpconv_stack_temp, intreg_operand, ccfp_reg_operand, data_segment_operand, text_segment_operand, v9_regcmp_op, arith11_operand, arith10_operand, arith11_double_operand, arith10_double_operand, gen_v9_scc, emit_v9_brxx_insn, sparc_init_modes, build_big_number, output_v9branch, sparc_initialize_trampoline, sparc64_initialize_trampoline): New functions. (arith_double_operand, gen_compare_reg, finalize_pic, emit_move_sequence, mem_aligned_8, output_move_double, output_move_quad, output_fp_move_double, output_fp_move_quad, output_block_move, save_regs, restore_regs): Add v9 support. (sparc_mode_class): New enum. (*_MODES): Redefine to use it. (hard_32bit_mode_classes): Renamed from hard_regno_mode_ok. (hard_regno_mode_classes, hard_64bit_mode_classes, sparc_mode_class): New globals. (num_gfregs): Renamed from num_fregs. (compute_frame_size): Add v9 support. Simplify calculations. (output_function_prologue): Call build_big_number to compute stack size in %g1, then adjust %sp. Fix saving of call saved registers. Handle new v9 registers. (output_function_epilogue): Fix restoration of call saved registers. Handle new v9 registers. Use SKIP_CALLERS_UNIMP_P to see if unimp insn is at return address. (sparc_builtin_saveregs): Define v9 version. (output_cbranch): New argument fp_cond_reg. All callers changed. Add v9 support. (output_return): Use SKIP_CALLERS_UNIMP_P. (print_operand): New codes '_', '@', 'C', 'D'. (output_double_int): Handle LABEL_REF and MINUS for v9. Use ASM_LONGLONG if assembler can handle it. From-SVN: r7486 |
||
---|---|---|
gcc |