OSDN Git Service

Emit MMIX function prologue and epilogue as rtl.
authorhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Jul 2002 17:13:14 +0000 (17:13 +0000)
committerhp <hp@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Jul 2002 17:13:14 +0000 (17:13 +0000)
commitd33107045bbd0b2ced761435480bf2e2775879fc
tree7360583492a7eea5f3ca793f548aa470e505136f
parent547309503c706e536c65f4fbf7e0eb6aff9b1c79
Emit MMIX function prologue and epilogue as rtl.
* config/mmix/mmix.md ("call"): Use mmix_get_hard_reg_initial_val,
not unprototyped get_hard_reg_initial_val.
("call_value", "nonlocal_goto_receiver"): Ditto.
("return"): Make define_expand.  Move real insn to...
("*expanded_return"): New pattern.
("prologue", "epilogue"): New define_expands.
* config/mmix/mmix.h (MMIX_rO_REGNUM): New macro.
(struct machine_function): New member in_prologue.
(FIRST_PSEUDO_REGISTER): Adjust for including rO as register.
(FIXED_REGISTERS, CALL_USED_REGISTERS): Ditto.
(MMIX_MMIXWARE_ABI_REG_ALLOC_ORDER): Ditto.
(MMIX_GNU_ABI_REG_ALLOC_ORDER, REG_CLASS_CONTENTS): Ditto.
(REGISTER_NAMES, ADDITIONAL_REGISTER_NAMES): Ditto.
(LOCAL_REGNO): Define.  Adjust comment.
* config/mmix/mmix.c (MMIX_CFUN_NEEDS_SAVED_EH_RETURN_ADDRESS):
Consider regs_ever_live[MMIX_rJ_REGNUM], not just
leaf_function_p.
(MMIX_OUTPUT_REGNO): Don't translate registers while outputting
the prologue.
(mmix_target_asm_function_prologue): Make static.  Just mark that
the prologue is being emitted.  Move guts to...
(mmix_expand_prologue): New function.  Adjust for emitting
prologue as rtl.  For sizes, use HOST_WIDE_INT only.
(mmix_target_asm_function_epilogue): Make static.  Simply emit a
\n.  Move guts to...
(mmix_expand_epilogue): New function.  Adjust for emitting
epilogue as rtl.  For sizes, use HOST_WIDE_INT only.
(mmix_target_asm_function_end_prologue): Mark that the prologue
has ended.
(TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
(mmix_conditional_register_usage): Improve comments.
(mmix_local_regno): New function.
(mmix_emit_sp_add, mmix_get_hard_reg_initial_val): Ditto.
* config/mmix/mmix-protos.h (mmix_local_regno): Prototype.
(mmix_expand_prologue, mmix_expand_epilogue): Ditto.
(mmix_get_hard_reg_initial_val): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55302 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/mmix/mmix-protos.h
gcc/config/mmix/mmix.c
gcc/config/mmix/mmix.h
gcc/config/mmix/mmix.md