aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/config/xtensa/xtensa-protos.h2
-rw-r--r--gcc/config/xtensa/xtensa.cc10
-rw-r--r--gcc/config/xtensa/xtensa.md9
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;
})