Skip add insn generate if the adjust size equal to zero.

gcc/ChangeLog:

        * config/riscv/riscv.cc (riscv_expand_epilogue): 
                                New if control segement.

---
 gcc/config/riscv/riscv.cc | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 02a01ca0b7c..af138db7545 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -5186,24 +5186,26 @@ riscv_expand_epilogue (int style)
        }
 
       /* Get an rtx for STEP1 that we can add to BASE.  */
-      rtx adjust = GEN_INT (step1.to_constant ());
-      if (!SMALL_OPERAND (step1.to_constant ()))
+      if (step1.to_constant () != 0){
+        rtx adjust = GEN_INT (step1.to_constant ());
+        if (!SMALL_OPERAND (step1.to_constant ()))
        {
          riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode), adjust);
          adjust = RISCV_PROLOGUE_TEMP (Pmode);
        }
 
-      insn = emit_insn (
+        insn = emit_insn (
               gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx, adjust));
 
-      rtx dwarf = NULL_RTX;
-      rtx cfa_adjust_rtx = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
+        rtx dwarf = NULL_RTX;
+        rtx cfa_adjust_rtx = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
                                         GEN_INT (step2));
 
-      dwarf = alloc_reg_note (REG_CFA_DEF_CFA, cfa_adjust_rtx, dwarf);
-      RTX_FRAME_RELATED_P (insn) = 1;
+        dwarf = alloc_reg_note (REG_CFA_DEF_CFA, cfa_adjust_rtx, dwarf);
+        RTX_FRAME_RELATED_P (insn) = 1;
 
-      REG_NOTES (insn) = dwarf;
+        REG_NOTES (insn) = dwarf;
+      }
     }
   else if (frame_pointer_needed)
     {
-- 
2.25.1

Reply via email to