diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h index 8f645e87de96842660f21b1a78615a102850afd1..3646ceaa09385f7f458f05e0bddc01a2777ca248 100644 --- a/gcc/config/xtensa/xtensa-protos.h +++ b/gcc/config/xtensa/xtensa-protos.h @@ -53,7 +53,7 @@ extern void xtensa_expand_atomic (enum rtx_code, rtx, rtx, rtx, bool); extern void xtensa_emit_loop_end (rtx_insn *, rtx *); extern char *xtensa_emit_branch (bool, rtx *); extern char *xtensa_emit_movcc (bool, bool, bool, rtx *); -extern void xtensa_expand_call (int, rtx *, bool); +extern void xtensa_expand_call (int, rtx *); extern char *xtensa_emit_call (int, rtx *); extern char *xtensa_emit_sibcall (int, rtx *); extern bool xtensa_tls_referenced_p (rtx); diff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc index 772150c7fa228ca2f80af94df0bb322492db0496..1ccd42bcda890990937cc31920043aa30d40bdd8 100644 --- a/gcc/config/xtensa/xtensa.cc +++ b/gcc/config/xtensa/xtensa.cc @@ -2297,7 +2297,7 @@ xtensa_emit_movcc (bool inverted, bool isfp, bool isbool, rtx *operands) void -xtensa_expand_call (int callop, rtx *operands, bool sibcall_p) +xtensa_expand_call (int callop, rtx *operands) { rtx call; rtx_insn *call_insn; @@ -2339,14 +2339,6 @@ xtensa_expand_call (int callop, rtx *operands, bool sibcall_p) CALL_INSN_FUNCTION_USAGE (call_insn) = gen_rtx_EXPR_LIST (Pmode, clob, CALL_INSN_FUNCTION_USAGE (call_insn)); } - else if (sibcall_p) - { - /* Sibling call requires a return address to the caller, similar to - "return" insn. */ - rtx use = gen_rtx_USE (VOIDmode, gen_rtx_REG (SImode, A0_REG)); - CALL_INSN_FUNCTION_USAGE (call_insn) = - gen_rtx_EXPR_LIST (Pmode, use, CALL_INSN_FUNCTION_USAGE (call_insn)); - } } diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md index 376d0f75544632bb2930f405464bfafe59f168aa..a3b99dc381de92d0332701f7c5887e1fc01698d9 100644 --- a/gcc/config/xtensa/xtensa.md +++ b/gcc/config/xtensa/xtensa.md @@ -2597,7 +2597,7 @@ (match_operand 1 "" ""))] "" { - xtensa_expand_call (0, operands, false); + xtensa_expand_call (0, operands); DONE; }) @@ -2618,7 +2618,7 @@ (match_operand 2 "" "")))] "" { - xtensa_expand_call (1, operands, false); + xtensa_expand_call (1, operands); DONE; }) @@ -2639,7 +2639,7 @@ (match_operand 1 "" ""))] "!TARGET_WINDOWED_ABI" { - xtensa_expand_call (0, operands, true); + xtensa_expand_call (0, operands); DONE; }) @@ -2660,7 +2660,7 @@ (match_operand 2 "" "")))] "!TARGET_WINDOWED_ABI" { - xtensa_expand_call (1, operands, true); + xtensa_expand_call (1, operands); DONE; }) @@ -2777,6 +2777,7 @@ "!TARGET_WINDOWED_ABI" { xtensa_expand_epilogue (); + emit_use (gen_rtx_REG (SImode, A0_REG)); DONE; })