diff options
-rw-r--r-- | gcc/config/xtensa/xtensa-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/xtensa/xtensa.cc | 10 | ||||
-rw-r--r-- | gcc/config/xtensa/xtensa.md | 9 |
3 files changed, 7 insertions, 14 deletions
diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h index 8f645e8..3646cea 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 772150c..1ccd42b 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 376d0f7..a3b99dc 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; }) |