• rth's avatar
    * config/ia64/ia64-protos.h: Remove duplicates. Update · cac50a9f
    rth authored
    	for massive code rearrangements.
    	* config/ia64/ia64.c (ia64_arpfs_regno): Remove.
    	(ia64_rp_regno, ia64_fp_regno, ia64_input_regs): Remove.
    	(ia64_local_regs, ia64_need_regstk): Remove.
    	(ar_ccv_reg_operand): New.
    	(ia64_gp_save_reg): New.
    	(struct ia64_frame_info): Combine most of the size elements;
    	add new gr save elements.
    	(find_gr_spill): New.
    	(next_scratch_gr_reg): New.
    	(mark_reg_gr_used_mask): New.
    	(ia64_compute_frame_size): Rewrite.  Allocate special AR regs
    	to GR backing store regs when possible.
    	(ia64_initial_elimination_offset): New.
    	(ia64_rap_fp_offset): Remove.
    	(save_restore_insns): Remove.
    	(setup_spill_pointers): New.
    	(finish_spill_pointers): New.
    	(spill_restore_mem): New.
    	(do_spill, do_restore): New.
    	(ia64_expand_prologue): Rewrite to use them.
    	(ia64_expand_epilogue): Likewise.
    	(ia64_direct_return): Update for current_frame_info changes.
    	(ia64_function_prologue): Simplify .prologue emission.  Emit
    	.spill when needed.
    	(ia64_setup_incoming_varargs): Don't ever emit rtl.
    	(ia64_dbx_register_number): New.
    	(ia64_initialize_trampoline): New.
    	(ia64_secondary_reload_class): Request GR_REGS for integer
    	arithmetic destined for FR_REGS.
    	(ia64_init_machine_status): Don't reset return_address_pointer_rtx.
    	(ia64_mark_machine_status): Mark ia64_gp_save.
    	(rws_access_regno): Rename from rws_access_reg; don't treat
    	predicates specially.
    	(rws_access_reg): New.  Update all callers.
    	(rtx_needs_barrier): Remove dead unspecs.
    	(ia64_epilogue_uses): Mark ar.pfs and ar.unat live on exit.
    	(ia64_encode_section_info): Silence signed/unsigned warnings.
    	(spill_offset, sp_offset, spill_offset_emitted): Remove.
    	(tmp_reg, tmp_saved): Remove.
    	(process_set): Rewrite to expect complicated bits via
    	REG_FRAME_RELATED_EXPR.
    	(ia64_expand_fetch_and_op): Use emit_move_insn; be explicit
    	in the use of ar.ccv; never set RTX_UNCHANGING_P.
    	(ia64_expand_op_and_fetch): Likewise.
    	(ia64_expand_compare_and_swap): Likewise.
    	(ia64_expand_builtin): Likewise.
    	* config/ia64/ia64.h (AR_UNAT_REGNUM): New.
    	(FIRST_PSEUDO_REGISTER): Update.
    	(AR_M_REGNO_P): Update.
    	(FIXED_REGS): Don't mark three local registers as used.
    	(EXTRA_CC_MODES): New.
    	(SELECT_CC_MODE): New.
    	(HARD_REGNO_NREGS): Allow DImode in p0; handle CCImode.
    	(HARD_REGNO_MODE_OK): Disallow CCImode from non-predicates.
    	(FRAME_GROWS_DOWNWARD): Unset.
    	(STARTING_FRAME_OFFSET): Zero.
    	(ELIMINABLE_REGS): Eliminate from the soft to hard frame pointer.
    	(INITIAL_ELIMINATION_OFFSET): Defer to out of line function.
    	(HARD_FRAME_POINTER_REGNUM): New.
    	(CAN_DEBUG_WITHOUT_FP): Define.
    	(TRAMPOLINE_TEMPLATE): Remove.
    	(TRAMPOLINE_SIZE): Lower to 32.
    	(TRAMPOLINE_ALIGNMENT): Lower to 64.
    	(INITIALIZE_TRAMPOLINE): Defer to out of line function.
    	(PREDICATE_CODES): Update.
    	(struct machine_function): Add ia64_gp_save.
    	* config/ia64/ia64.md: Purge unused unspecs.
    	(movsi patterns): Allow moves to/from AR_M_REGS.
    	(movdi patterns): Allow moves to/from p0.
    	(call patterns): Move most setjmp hackery to ia64_gp_save_reg.
    	(gr_spill, gr_restore): Indicate ar.unat read/written.
    	(nonlocal_goto): Don't pass old frame_pointer.
    	(nonlocal_goto_receiver): Remove.
    	(exception_receiver): New.
    	(builtin_setjmp_setup): New.
    	(builtin_setjmp_receiver): New.
    	* config/ia64/lib1funcs.asm (__ia64_save_stack_nonlocal): Bundle.
    	(__ia64_nonlocal_goto): Bundle.  Don't kill r7.
    	(__ia64_restore_stack_nonlocal): Likewise.
    	(__ia64_trampoline): New.
    	* config/ia64/sysv4.h (DBX_REGISTER_NUMBER): Defer to out of line
    	function.
    	* config/ia64/t-ia64 (LIB1ASMFUNCS): Add __trampoline.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@35568 138bc75d-0d04-0410-961f-82ee72b054a4
    cac50a9f
ChangeLog 121 KB