i386 soft frame pointer patch V3
Richard Henderson
rth@cygnus.com
Sun Jan 23 14:43:00 GMT 2000
On Fri, Jan 21, 2000 at 03:28:38PM +0100, Jan Hubicka wrote:
> * i386.h (FIRST_PSEUDO_REGISTER): Set to 21.
> (FIXED_REGISTERS, CALL_USED_REGISTERS,
> REG_ALLOC_ORDER): Add frame pointer
> (FRAME_POINTER_REGNUM): Set to 20
> (HARD_FRAME_POINTER_REGNUM): New macro.
> (ELIMINABLE_REGS): Eliminate ARG_POINTER and FRAME_POINTER
> to HARD_FRAME_POINTER.
> (REGNO_OK_FOR_BASE_P): Accept FRAME_POINTER_REGNUM
> (REG_OK_FOR_INDEX_NONSTRICT_P): Likewise.
> (REG_OK_FOR_BASE_NONSTRICT_P): Likewise.
> (HI_REGISTER_NAMES): Add "frame".
> (CAN_ELIMINATE): Handle FRAME_POINTER_REGNUM elimination.
> (debug_reg): Handle FRAME_POINTER_REGNUM.
> (reg_class): Add arg pointer and frame pointer to NON_Q_REGS,
> GENERAL_REGS and INDEX_REGS.
> * i386.c (SAVED_REGS_FIRST): new macro.
> (AT_BP): Use hard_frame_pointer_rtx instead of frame_pointer_rtx
> (regclass_map): Add dirflag and frame pointer; set arg pointer
> to NON_Q_REGS class.
> (ix86_decompise_address, memory_address_length): Likewise.
> (call_insn_operand): Handle frame_pointer_rtx.
> (reg_no_sp_operand): Handle frame_pointer_rtx.
> (ix86_can_use_return_insn_p): Likewise.
> (ix86_decompose_address): Handle frame_pointer_rtx as stack_pointer_rtx.
> (print_operand): Fix formating.
> (ix86_compute_frame_size): Make static, update prototype, new
> parameters padding1, padding2, use ix86_nsaved_regs, use
> stack_alignment_needed.
> (ix86_initial_elimination_offset): Handle FRAME_POINTER_REGNUM
> to HARD_FRAME_POINTER_REGNUM conversions.
> (ix86_expand_prologue): Handle SAVED_REGS_FIRST prologues.
> (ix86_expand_epilogue): Handle SAVED_REGS_FIRST epilogues.
> (print_reg): Abort on FRAME_POINTER_REGNUM
> * i386-protos.h (ix86_compute_frame_size): Remove.
> (ix86_initial_elimination_offset): Declare.
Ok, but re-check the changelog entry. There is, for instance,
no longer a change to i386-protos.h.
r~
More information about the Gcc-patches
mailing list