* 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
+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.
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
{
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;
"* 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.