mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-28 09:44:48 +08:00
777fbf098d
* mn10300/mn10300.c (expand_prologue): Rework so that eliminating the frame pointer produces faster/smaller code. (expand_epilogue): Likewise. (initial_offset): New function for argument pointer and frame pointer elimination. * mn10300/mn10300.h (FIRST_PSEUDO_REGISTER): Bump to 10. (FIXED_REGISTERS): Add argument pointer register, it's a fake fixed register. (CALL_USED_REGISTERS, REG_ALLOC_ORDER): Corresponding changes. (REGNO_REG_CLASS, REG_CLASS_CONTENTS): Likewise. (REG_OK_FOR_BASE_P, REGISTER_NAMES): Likewise. (reg_class, REG_CLASS_NAMES): Delete unwanted DATA_OR_SP_REGS class. (PREFERRED_OUTPUT_RELOAD_CLASS): Define. (FIRST_PARM_OFFSET): No longer include register save area in computation. (STACK_POINTER_REGNUM): Is now register 9. (ARG_POINTER_REGNUM): Is now register 8. (FRAME_POINTER_REQUIRED): Refine. (ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Define. (CAN_DEUG_WITHOUT_FP): Define. * mn10300/mn10300.md (return_internal): Break into two patterns. * mn10300/mn10300.h (CONST_OK_FOR_LETTER_P): Handle 'M' too. (REGISTER_MOVE_COST): Fix errors and refine. * mn10300/mn10300.c (notice_update_cc): SET_ZN_C0 insns leave the overflow bit in an unuseable state. Rename CC_SET to CC_TST. * mn10300/mn10300.md (cc attributes): "set" is gone, replaced by "tst". Update attributes on various insns. * mn10300/mn10300.md: Improve sign and zero extension instructions. (ashlsi3): Improve. Handle address registers too. (add peephole): Combine two consecutive adjustments of a register into a single adjustment. From-SVN: r13700 |
||
---|---|---|
gcc |