https://gcc.gnu.org/g:1b58f46ba2079b327580ffa1720c0b40ab3db74d

commit r15-936-g1b58f46ba2079b327580ffa1720c0b40ab3db74d
Author: Takayuki 'January June' Suwa <jjsuwa_sys3...@yahoo.co.jp>
Date:   Thu May 30 22:32:24 2024 +0900

    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.

Diff:
---
 gcc/config/xtensa/xtensa-protos.h |  1 -
 gcc/config/xtensa/xtensa.cc       | 14 --------------
 gcc/config/xtensa/xtensa.md       |  5 ++++-
 3 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/gcc/config/xtensa/xtensa-protos.h 
b/gcc/config/xtensa/xtensa-protos.h
index 508d5b28aa2..b87b3e8ac48 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 75973cfbac0..84268db5c9d 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 1b82a12d879..6061a86ee13 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") :

Reply via email to