Commit 854f240e by Eric Botcazou Committed by Eric Botcazou

sparc.md (return): Rewrite length formula.

	* config/sparc/sparc.md (return): Rewrite length formula.
	* config/sparc/sparc.c (output_return): Pass 1 as 5th
	argument to final_scan_insn when in a delay slot.
	(output_sibcall): Likewise.

From-SVN: r84352
parent 2ad4dcf9
2004-07-09 Eric Botcazou <ebotcazou@libertysurf.fr>
* config/sparc/sparc.md (return): Rewrite length formula.
* config/sparc/sparc.c (output_return): Pass 1 as 5th
argument to final_scan_insn when in a delay slot.
(output_sibcall): Likewise.
2004-07-09 Richard Earnshaw <rearnsha@arm.com> 2004-07-09 Richard Earnshaw <rearnsha@arm.com>
* arm.c (arm_cpp_interwork): New variable. * arm.c (arm_cpp_interwork): New variable.
......
...@@ -4553,7 +4553,7 @@ output_return (rtx insn) ...@@ -4553,7 +4553,7 @@ output_return (rtx insn)
epilogue_renumber (&pat, 0); epilogue_renumber (&pat, 0);
fprintf (asm_out_file, "\treturn\t%%i7+%d\n", fprintf (asm_out_file, "\treturn\t%%i7+%d\n",
sparc_skip_caller_unimp ? 12 : 8); sparc_skip_caller_unimp ? 12 : 8);
final_scan_insn (delay, asm_out_file, 1, 0, 0, NULL); final_scan_insn (delay, asm_out_file, 1, 0, 1, NULL);
} }
else else
{ {
...@@ -4614,7 +4614,7 @@ output_sibcall (rtx insn, rtx call_operand) ...@@ -4614,7 +4614,7 @@ output_sibcall (rtx insn, rtx call_operand)
output_asm_insn ("sethi\t%%hi(%a0), %%g1", operands); output_asm_insn ("sethi\t%%hi(%a0), %%g1", operands);
output_asm_insn ("jmp\t%%g1 + %%lo(%a0)", operands); output_asm_insn ("jmp\t%%g1 + %%lo(%a0)", operands);
final_scan_insn (delay, asm_out_file, 1, 0, 0, NULL); final_scan_insn (delay, asm_out_file, 1, 0, 1, NULL);
PATTERN (delay) = gen_blockage (); PATTERN (delay) = gen_blockage ();
INSN_CODE (delay) = -1; INSN_CODE (delay) = -1;
......
...@@ -7708,23 +7708,23 @@ ...@@ -7708,23 +7708,23 @@
"* return output_return (insn);" "* return output_return (insn);"
[(set_attr "type" "return") [(set_attr "type" "return")
(set (attr "length") (set (attr "length")
(if_then_else (eq_attr "leaf_function" "true") (cond [(eq_attr "leaf_function" "true")
(if_then_else (eq_attr "empty_delay_slot" "true") (if_then_else (eq_attr "empty_delay_slot" "true")
(const_int 2) (const_int 2)
(const_int 1)) (const_int 1))
(if_then_else (eq_attr "calls_eh_return" "true") (eq_attr "calls_eh_return" "true")
(if_then_else (eq_attr "delayed_branch" "true") (if_then_else (eq_attr "delayed_branch" "true")
(if_then_else (eq_attr "isa" "v9") (if_then_else (eq_attr "isa" "v9")
(const_int 2) (const_int 2)
(const_int 3)) (const_int 3))
(if_then_else (eq_attr "isa" "v9") (if_then_else (eq_attr "isa" "v9")
(const_int 3) (const_int 3)
(const_int 4))) (const_int 4)))
(if_then_else (eq_attr "empty_delay_slot" "true") (eq_attr "empty_delay_slot" "true")
(if_then_else (eq_attr "delayed_branch" "true") (if_then_else (eq_attr "delayed_branch" "true")
(const_int 2) (const_int 2)
(const_int 3)) (const_int 3))
(const_int 1)))))]) ] (const_int 1)))])
;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
;; all of memory. This blocks insns from being moved across this point. ;; all of memory. This blocks insns from being moved across this point.
......
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