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
This commit is contained in:
parent
2ad4dcf985
commit
854f240ee0
@ -1,3 +1,10 @@
|
||||
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>
|
||||
|
||||
* arm.c (arm_cpp_interwork): New variable.
|
||||
|
@ -4553,7 +4553,7 @@ output_return (rtx insn)
|
||||
epilogue_renumber (&pat, 0);
|
||||
fprintf (asm_out_file, "\treturn\t%%i7+%d\n",
|
||||
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
|
||||
{
|
||||
@ -4614,7 +4614,7 @@ output_sibcall (rtx insn, rtx call_operand)
|
||||
|
||||
output_asm_insn ("sethi\t%%hi(%a0), %%g1", 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 ();
|
||||
INSN_CODE (delay) = -1;
|
||||
|
@ -7708,23 +7708,23 @@
|
||||
"* return output_return (insn);"
|
||||
[(set_attr "type" "return")
|
||||
(set (attr "length")
|
||||
(if_then_else (eq_attr "leaf_function" "true")
|
||||
(if_then_else (eq_attr "empty_delay_slot" "true")
|
||||
(const_int 2)
|
||||
(const_int 1))
|
||||
(if_then_else (eq_attr "calls_eh_return" "true")
|
||||
(if_then_else (eq_attr "delayed_branch" "true")
|
||||
(if_then_else (eq_attr "isa" "v9")
|
||||
(const_int 2)
|
||||
(const_int 3))
|
||||
(if_then_else (eq_attr "isa" "v9")
|
||||
(const_int 3)
|
||||
(const_int 4)))
|
||||
(if_then_else (eq_attr "empty_delay_slot" "true")
|
||||
(if_then_else (eq_attr "delayed_branch" "true")
|
||||
(const_int 2)
|
||||
(const_int 3))
|
||||
(const_int 1)))))])
|
||||
(cond [(eq_attr "leaf_function" "true")
|
||||
(if_then_else (eq_attr "empty_delay_slot" "true")
|
||||
(const_int 2)
|
||||
(const_int 1))
|
||||
(eq_attr "calls_eh_return" "true")
|
||||
(if_then_else (eq_attr "delayed_branch" "true")
|
||||
(if_then_else (eq_attr "isa" "v9")
|
||||
(const_int 2)
|
||||
(const_int 3))
|
||||
(if_then_else (eq_attr "isa" "v9")
|
||||
(const_int 3)
|
||||
(const_int 4)))
|
||||
(eq_attr "empty_delay_slot" "true")
|
||||
(if_then_else (eq_attr "delayed_branch" "true")
|
||||
(const_int 2)
|
||||
(const_int 3))
|
||||
] (const_int 1)))])
|
||||
|
||||
;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
|
||||
;; all of memory. This blocks insns from being moved across this point.
|
||||
|
Loading…
Reference in New Issue
Block a user