gcc: xtensa: fix PR target/108876
gcc/ PR target/108876 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use for A0_REG. * config/xtensa/xtensa.md (sibcall, sibcall_internal) (sibcall_value, sibcall_value_internal): Add 'use' expression for A0_REG.
This commit is contained in:
parent
6c1b825b3d
commit
b2ef02e8cb
2 changed files with 13 additions and 9 deletions
|
@ -3548,8 +3548,6 @@ xtensa_expand_epilogue (bool sibcall_p)
|
|||
gen_frame_mem (SImode, x));
|
||||
}
|
||||
}
|
||||
if (sibcall_p)
|
||||
emit_use (gen_rtx_REG (SImode, A0_REG));
|
||||
|
||||
if (cfun->machine->current_frame_size > 0)
|
||||
{
|
||||
|
|
|
@ -2369,8 +2369,10 @@
|
|||
(set_attr "length" "3")])
|
||||
|
||||
(define_expand "sibcall"
|
||||
[(call (match_operand 0 "memory_operand" "")
|
||||
(match_operand 1 "" ""))]
|
||||
[(parallel [
|
||||
(call (match_operand 0 "memory_operand" "")
|
||||
(match_operand 1 "" ""))
|
||||
(use (reg:SI A0_REG))])]
|
||||
"!TARGET_WINDOWED_ABI"
|
||||
{
|
||||
xtensa_prepare_expand_call (0, operands);
|
||||
|
@ -2378,7 +2380,8 @@
|
|||
|
||||
(define_insn "sibcall_internal"
|
||||
[(call (mem:SI (match_operand:SI 0 "call_insn_operand" "nic"))
|
||||
(match_operand 1 "" "i"))]
|
||||
(match_operand 1 "" "i"))
|
||||
(use (reg:SI A0_REG))]
|
||||
"!TARGET_WINDOWED_ABI && SIBLING_CALL_P (insn)"
|
||||
{
|
||||
return xtensa_emit_sibcall (0, operands);
|
||||
|
@ -2388,9 +2391,11 @@
|
|||
(set_attr "length" "3")])
|
||||
|
||||
(define_expand "sibcall_value"
|
||||
[(set (match_operand 0 "register_operand" "")
|
||||
(call (match_operand 1 "memory_operand" "")
|
||||
(match_operand 2 "" "")))]
|
||||
[(parallel [
|
||||
(set (match_operand 0 "register_operand" "")
|
||||
(call (match_operand 1 "memory_operand" "")
|
||||
(match_operand 2 "" "")))
|
||||
(use (reg:SI A0_REG))])]
|
||||
"!TARGET_WINDOWED_ABI"
|
||||
{
|
||||
xtensa_prepare_expand_call (1, operands);
|
||||
|
@ -2399,7 +2404,8 @@
|
|||
(define_insn "sibcall_value_internal"
|
||||
[(set (match_operand 0 "register_operand" "=a")
|
||||
(call (mem:SI (match_operand:SI 1 "call_insn_operand" "nic"))
|
||||
(match_operand 2 "" "i")))]
|
||||
(match_operand 2 "" "i")))
|
||||
(use (reg:SI A0_REG))]
|
||||
"!TARGET_WINDOWED_ABI && SIBLING_CALL_P (insn)"
|
||||
{
|
||||
return xtensa_emit_sibcall (1, operands);
|
||||
|
|
Loading…
Add table
Reference in a new issue