aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTakayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>2024-05-30 22:32:24 +0900
committerMax Filippov <jcmvbkbc@gmail.com>2024-05-30 23:24:26 -0700
commit1b58f46ba2079b327580ffa1720c0b40ab3db74d (patch)
tree90de438e5677e67a9ba2e51ab8a87648c9d410bc /gcc
parent1e091097b1b42fed562a6d80a6e08603d1c648a2 (diff)
downloadgcc-1b58f46ba2079b327580ffa1720c0b40ab3db74d.zip
gcc-1b58f46ba2079b327580ffa1720c0b40ab3db74d.tar.gz
gcc-1b58f46ba2079b327580ffa1720c0b40ab3db74d.tar.bz2
xtensa: Use epilogue_completed rather than cfun->machine->epilogue_done
In commit ad89d820bf, an "epilogue_done" member was added to the machine_function structure, but it is sufficient to use the existing "epilogue_completed" global variable. gcc/ChangeLog: * config/xtensa/xtensa-protos.h (xtensa_use_return_instruction_p): Remove. * config/xtensa/xtensa.cc (machine_function): Remove "epilogue_done" field. (xtensa_expand_epilogue): Remove "cfun->machine->epilogue_done" usage. (xtensa_use_return_instruction_p): Remove. * config/xtensa/xtensa.md ("return"): Replace calling "xtensa_use_return_instruction_p()" with inline code.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/xtensa/xtensa-protos.h1
-rw-r--r--gcc/config/xtensa/xtensa.cc14
-rw-r--r--gcc/config/xtensa/xtensa.md5
3 files changed, 4 insertions, 16 deletions
diff --git a/gcc/config/xtensa/xtensa-protos.h b/gcc/config/xtensa/xtensa-protos.h
index 508d5b2..b87b3e8 100644
--- a/gcc/config/xtensa/xtensa-protos.h
+++ b/gcc/config/xtensa/xtensa-protos.h
@@ -76,7 +76,6 @@ extern rtx xtensa_return_addr (int, rtx);
extern void xtensa_setup_frame_addresses (void);
extern int xtensa_debugger_regno (int);
extern long compute_frame_size (poly_int64);
-extern bool xtensa_use_return_instruction_p (void);
extern void xtensa_expand_prologue (void);
extern void xtensa_expand_epilogue (bool);
extern void xtensa_adjust_reg_alloc_order (void);
diff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc
index 75973cf..84268db 100644
--- a/gcc/config/xtensa/xtensa.cc
+++ b/gcc/config/xtensa/xtensa.cc
@@ -104,7 +104,6 @@ struct GTY(()) machine_function
compute_frame_size. */
int callee_save_size;
bool frame_laid_out;
- bool epilogue_done;
bool inhibit_logues_a1_adjusts;
rtx last_logues_a9_content;
HARD_REG_SET eliminated_callee_saved;
@@ -3747,25 +3746,12 @@ xtensa_expand_epilogue (bool sibcall_p)
stack_pointer_rtx,
EH_RETURN_STACKADJ_RTX));
}
- cfun->machine->epilogue_done = true;
if (sibcall_p)
emit_use (gen_rtx_REG (SImode, A0_REG));
else
emit_jump_insn (gen_return ());
}
-bool
-xtensa_use_return_instruction_p (void)
-{
- if (!reload_completed)
- return false;
- if (TARGET_WINDOWED_ABI)
- return true;
- if (compute_frame_size (get_frame_size ()) == 0)
- return true;
- return cfun->machine->epilogue_done;
-}
-
void
xtensa_set_return_address (rtx address, rtx scratch)
{
diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index 1b82a12..6061a86 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -2735,7 +2735,10 @@
(define_insn "return"
[(return)
(use (reg:SI A0_REG))]
- "xtensa_use_return_instruction_p ()"
+ "reload_completed
+ && (TARGET_WINDOWED_ABI
+ || compute_frame_size (get_frame_size ()) == 0
+ || epilogue_completed)"
{
return TARGET_WINDOWED_ABI ?
(TARGET_DENSITY ? "retw.n" : "retw") :