* 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
* mn10300/mn10300.c (expand_prologue): Rework to avoid unnecessary
"add" operations.
(expand_epilogue): Likewise.
* mn10300/mn10300.h (STARTING_FRAME_OFFSET): Is zero after the last
round of prologue/epilogue changes.
(FIRST_PARM_OFFSET): Is now 16 (-4 for REG_PARM_STACK_SPACE + 20 for
register save area).
(REG_PARM_STACK_SPACE): Define as 4 bytes.
(OUTGOING_REG_PARM_STACK_SPACE): Define so caller allocates it.
* mn10300/mn10300.md (call expander): Don't emit insns to adjust the
stack here anymore.
(call_value expander): Likewise.
* mn10300/mn10300.md (bCC patterns): Just use "bCC target" now that
the assembler handles relaxing.
From-SVN: r13696
* pa/pa.c (emit_move_sequence): Don't copy 0.0 (double precision)
directly to memory, go through a reg if reload hasn't started.
* pa/pa.md (main movdf pattern): Don't allow 0.0 (double precision)
to be copied directly to memory.
From-SVN: r13669
* pa/pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10.
(MD_STARTFILE_PREFIX): Similarly.
* pa/pa.c (return_addr_rtx): Add some comments about cases it
doesn't handle correctly.
* pa/pa.h (ASM_OUTPUT_SECTION_NAME): Surround the section name
with '$' if not using GAS.
From-SVN: r13668
* pa/pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10.
(MD_STARTFILE_PREFIX): Similarly.
* pa/pa.c (return_addr_rtx): Add some comments about cases it
doesn't handle correctly.
* pa/pa.h (ASM_OUTPUT_SECTION_NAME): Surround the section name
with '$' if not using GAS.
From-SVN: r13667
* reload1.c (eliminate_regs, case MINUS): Canonicalize
(minus (plus reg const) reg) to (plus (minus reg reg) const).
Back out this patch.
From-SVN: r13664