Commit c112e233 by Richard Henderson Committed by Richard Henderson

alpha.c (alpha_expand_epilogue): Don't emit the return insn.

        * alpha.c (alpha_expand_epilogue): Don't emit the return insn.
        * alpha.h (EPILOGUE_USES): New.  Mark $26 live.
        * alpha.md (return): Turn into an expander.
        (return_internal): Don't use $26.
        (epilogue): Emit the return insn.

From-SVN: r31702
parent 51ec054c
2000-01-30 Richard Henderson <rth@cygnus.com> 2000-01-30 Richard Henderson <rth@cygnus.com>
* alpha.c (alpha_expand_epilogue): Don't emit the return insn.
* alpha.h (EPILOGUE_USES): New. Mark $26 live.
* alpha.md (return): Turn into an expander.
(return_internal): Don't use $26.
(epilogue): Emit the return insn.
2000-01-30 Richard Henderson <rth@cygnus.com>
* alpha.md (negtf2, abstf2): Fix word order thinko. * alpha.md (negtf2, abstf2): Fix word order thinko.
(extendsftf2): New. (extendsftf2): New.
(trunctfsf2): Avoid intermediate rounding errors. (trunctfsf2): Avoid intermediate rounding errors.
......
...@@ -4721,9 +4721,6 @@ alpha_expand_epilogue () ...@@ -4721,9 +4721,6 @@ alpha_expand_epilogue ()
gen_rtx_REG (DImode, vms_save_fp_regno))); gen_rtx_REG (DImode, vms_save_fp_regno)));
} }
} }
/* Return. */
emit_jump_insn (gen_return_internal ());
} }
/* Output the rest of the textual info surrounding the epilogue. */ /* Output the rest of the textual info surrounding the epilogue. */
......
...@@ -1267,6 +1267,10 @@ struct machine_function ...@@ -1267,6 +1267,10 @@ struct machine_function
No definition is equivalent to always zero. */ No definition is equivalent to always zero. */
#define EXIT_IGNORE_STACK 1 #define EXIT_IGNORE_STACK 1
/* Define registers used by the epilogue and return instruction. */
#define EPILOGUE_USES(REGNO) ((REGNO) == 26)
/* Output assembler code for a block containing the constant parts /* Output assembler code for a block containing the constant parts
of a trampoline, leaving space for the variable parts. of a trampoline, leaving space for the variable parts.
......
...@@ -3984,17 +3984,13 @@ ...@@ -3984,17 +3984,13 @@
"br $31,%l0" "br $31,%l0"
[(set_attr "type" "ibr")]) [(set_attr "type" "ibr")])
(define_insn "return" (define_expand "return"
[(return)] [(return)]
"direct_return ()" "direct_return ()"
"ret $31,($26),1" "")
[(set_attr "type" "ibr")])
;; Use a different pattern for functions which have non-trivial (define_insn "*return_internal"
;; epilogues so as not to confuse jump and reorg. [(return)]
(define_insn "return_internal"
[(use (reg:DI 26))
(return)]
"" ""
"ret $31,($26),1" "ret $31,($26),1"
[(set_attr "type" "ibr")]) [(set_attr "type" "ibr")])
...@@ -5431,9 +5427,9 @@ ...@@ -5431,9 +5427,9 @@
"mov %1,%0") "mov %1,%0")
(define_expand "epilogue" (define_expand "epilogue"
[(clobber (const_int 0))] [(return)]
"" ""
"alpha_expand_epilogue (); DONE;") "alpha_expand_epilogue ();")
(define_expand "eh_epilogue" (define_expand "eh_epilogue"
[(use (match_operand:DI 0 "register_operand" "r")) [(use (match_operand:DI 0 "register_operand" "r"))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment