https://gcc.gnu.org/g:e86b07d6e414b45ffe69614caf4b039041e5fe0a

commit r17-5362-ge86b07d6e414b45ffe69614caf4b039041e5fe0a
Author: Trevor Saunders <[email protected]>
Date:   Fri Oct 16 17:29:39 2026 +0200

    Use rtx_insn * for locals that already hold an insn
    
    These locals are assigned only from functions that already return
    rtx_insn * or rtx_code_label *, so changing the declaration is enough
    for them to compile.
    
    gcc/ChangeLog:
    
            * config/i386/i386.cc (zero_all_st_registers): Declare the insn
            local as rtx_insn *.
            (ix86_emit_save_reg_using_mov): Likewise.
            (pro_epilogue_adjust_stack): Likewise.
            (release_scratch_register_on_entry): Likewise.
            (ix86_adjust_stack_and_probe): Likewise.
            (ix86_expand_prologue): Likewise.
            * reorg.cc (make_return_insns): Likewise.
            * config/i386/i386.md (restore_stack_nonlocal): Declare label 
locals as rtx_code_label *.

Diff:
---
 gcc/config/i386/i386.cc | 38 ++++++++++++++++++++------------------
 gcc/config/i386/i386.md |  6 +++---
 gcc/reorg.cc            |  6 +++---
 3 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 68b350ac19b6..eda00c137b40 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -4058,8 +4058,7 @@ zero_all_st_registers (HARD_REG_SET need_zeroed_hardregs)
 
   for (unsigned int i = 0; i < num_of_st; i++)
     {
-      rtx insn;
-      insn = emit_insn (gen_rtx_SET (st_reg, st_reg));
+      rtx_insn *insn = emit_insn (gen_rtx_SET (st_reg, st_reg));
       add_reg_note (insn, REG_DEAD, st_reg);
     }
   return num_of_st;
@@ -7718,7 +7717,7 @@ ix86_emit_save_reg_using_mov (machine_mode mode, unsigned 
int regno,
 {
   struct machine_function *m = cfun->machine;
   rtx reg = gen_rtx_REG (mode, regno);
-  rtx mem, addr, base, insn;
+  rtx mem, addr, base;
   unsigned int align = GET_MODE_ALIGNMENT (mode);
 
   addr = choose_baseaddr (cfa_offset, &align);
@@ -7729,7 +7728,7 @@ ix86_emit_save_reg_using_mov (machine_mode mode, unsigned 
int regno,
   gcc_assert (! (cfa_offset & (align / BITS_PER_UNIT - 1)));
   set_mem_align (mem, align);
 
-  insn = emit_insn (gen_rtx_SET (mem, reg));
+  rtx_insn *insn = emit_insn (gen_rtx_SET (mem, reg));
   RTX_FRAME_RELATED_P (insn) = 1;
 
   base = addr;
@@ -7870,7 +7869,7 @@ pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset,
 {
   struct machine_function *m = cfun->machine;
   rtx addend = offset;
-  rtx insn;
+  rtx_insn *insn;
   bool add_frame_related_expr = false;
 
   if (!x86_64_immediate_operand (offset, Pmode))
@@ -8242,7 +8241,8 @@ release_scratch_register_on_entry (struct scratch_reg 
*sr, HOST_WIDE_INT offset,
       if (release_via_pop)
        {
          struct machine_function *m = cfun->machine;
-         rtx x, insn = emit_insn (gen_pop (sr->reg));
+         rtx_insn *insn = emit_insn (gen_pop (sr->reg));
+         rtx x;
 
          /* The RX FRAME_RELATED_P mechanism doesn't know about pop.  */
          RTX_FRAME_RELATED_P (insn) = 1;
@@ -8415,7 +8415,7 @@ ix86_adjust_stack_and_probe (HOST_WIDE_INT size,
       /* Step 2: compute final value of the loop counter.  Use lea if
         possible.  */
       rtx addr = plus_constant (Pmode, stack_pointer_rtx, -rounded_size);
-      rtx insn;
+      rtx_insn *insn;
       if (address_no_seg_operand (addr, Pmode))
        insn = emit_insn (gen_rtx_SET (sr.reg, addr));
       else
@@ -9312,7 +9312,7 @@ void
 ix86_expand_prologue (void)
 {
   struct machine_function *m = cfun->machine;
-  rtx insn, t;
+  rtx t;
   HOST_WIDE_INT allocate;
   bool int_registers_saved;
   bool sse_registers_saved;
@@ -9394,7 +9394,7 @@ ix86_expand_prologue (void)
             I don't expect Wine generates dwarf2 unwind info for the
             system libraries that use this feature.  */
 
-         insn = emit_insn (gen_blockage ());
+         rtx_insn *insn = emit_insn (gen_blockage ());
 
          push = gen_push (hard_frame_pointer_rtx);
          mov = gen_rtx_SET (hard_frame_pointer_rtx,
@@ -9426,7 +9426,7 @@ ix86_expand_prologue (void)
   else if (ix86_static_chain_on_stack)
     {
       static_chain = ix86_static_chain (cfun->decl, false);
-      insn = emit_insn (gen_push (static_chain));
+      rtx_insn *insn = emit_insn (gen_push (static_chain));
       emit_insn (gen_blockage ());
 
       /* We don't want to interpret this push insn as a register save,
@@ -9443,6 +9443,7 @@ ix86_expand_prologue (void)
   if (stack_realign_drap)
     {
       int align_bytes = crtl->stack_alignment_needed / BITS_PER_UNIT;
+      rtx_insn *insn;
 
       /* Can't use DRAP in interrupt function.  */
       if (cfun->machine->func_type != TYPE_NORMAL)
@@ -9489,7 +9490,7 @@ ix86_expand_prologue (void)
          /* Replicate static chain on the stack so that static chain
             can be reached via (argp - 2) slot.  This is needed for
             nested function with stack realignment.  */
-         insn = emit_insn (gen_push (static_chain));
+         rtx_insn *insn = emit_insn (gen_push (static_chain));
          RTX_FRAME_RELATED_P (insn) = 1;
        }
     }
@@ -9503,12 +9504,13 @@ ix86_expand_prologue (void)
     {
       /* Note: AT&T enter does NOT have reversed args.  Enter is probably
          slower on all targets.  Also sdb didn't like it.  */
-      insn = emit_insn (gen_push (hard_frame_pointer_rtx));
+      rtx_insn *insn = emit_insn (gen_push (hard_frame_pointer_rtx));
       RTX_FRAME_RELATED_P (insn) = 1;
 
       if (m->fs.sp_offset == frame.hard_frame_pointer_offset)
        {
-         insn = emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx);
+         rtx_insn *insn
+           = emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx);
          RTX_FRAME_RELATED_P (insn) = 1;
 
          if (m->fs.cfa_reg == stack_pointer_rtx)
@@ -9753,7 +9755,7 @@ ix86_expand_prologue (void)
 
       if (eax_live)
        {
-         insn = emit_insn (gen_push (eax));
+         rtx_insn *insn = emit_insn (gen_push (eax));
          allocate -= UNITS_PER_WORD;
          /* Note that SEH directives need to continue tracking the stack
             pointer even after the frame pointer has been set up.  */
@@ -9773,7 +9775,7 @@ ix86_expand_prologue (void)
       if (r10_live)
        {
          r10 = gen_rtx_REG (Pmode, R10_REG);
-         insn = emit_insn (gen_push (r10));
+         rtx_insn *insn = emit_insn (gen_push (r10));
          allocate -= UNITS_PER_WORD;
          if (sp_is_cfa_reg || TARGET_SEH)
            {
@@ -9792,7 +9794,7 @@ ix86_expand_prologue (void)
       emit_insn (gen_allocate_stack_worker_probe (Pmode, eax, eax));
 
       /* Use the fact that AX still contains ALLOCATE.  */
-      insn = emit_insn (gen_pro_epilogue_adjust_stack_sub
+      rtx_insn *insn = emit_insn (gen_pro_epilogue_adjust_stack_sub
                        (Pmode, stack_pointer_rtx, stack_pointer_rtx, eax));
 
       if (sp_is_cfa_reg || TARGET_SEH)
@@ -9834,7 +9836,7 @@ ix86_expand_prologue (void)
   /* If we haven't already set up the frame pointer, do so now.  */
   if (frame_pointer_needed && !m->fs.fp_valid)
     {
-      insn = gen_add3_insn (hard_frame_pointer_rtx, stack_pointer_rtx,
+      rtx_insn *insn = gen_add3_insn (hard_frame_pointer_rtx, 
stack_pointer_rtx,
                            GEN_INT (frame.stack_pointer_offset
                                     - frame.hard_frame_pointer_offset));
       insn = emit_insn (insn);
@@ -9859,7 +9861,7 @@ ix86_expand_prologue (void)
   if (!TARGET_64BIT && pic_offset_table_rtx && crtl->profile && !flag_fentry)
     {
       rtx pic = gen_rtx_REG (Pmode, REAL_PIC_OFFSET_TABLE_REGNUM);
-      insn = emit_insn (gen_set_got (pic));
+      rtx_insn *insn = emit_insn (gen_set_got (pic));
       RTX_FRAME_RELATED_P (insn) = 1;
       add_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL_RTX);
       emit_insn (gen_prologue_use (pic));
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 69d33dba8eb2..cce99217f44d 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -28857,7 +28857,7 @@
                                     reg_ssp, 1, OPTAB_DIRECT);
 
       /* Compare and jump over adjustment code.  */
-      rtx noadj_label = gen_label_rtx ();
+      rtx_code_label *noadj_label = gen_label_rtx ();
       emit_cmp_and_jump_insns (reg_ssp, const0_rtx, EQ, NULL_RTX,
                               word_mode, 1, noadj_label);
 
@@ -28871,12 +28871,12 @@
                                     reg_adj, 1, OPTAB_DIRECT);
 
       /* Check if number of frames <= 255 so no loop is needed.  */
-      rtx inc_label = gen_label_rtx ();
+      rtx_code_label *inc_label = gen_label_rtx ();
       emit_cmp_and_jump_insns (reg_adj, GEN_INT (255), LEU, NULL_RTX,
                               ptr_mode, 1, inc_label);
 
       /* Adjust the ssp in a loop.  */
-      rtx loop_label = gen_label_rtx ();
+      rtx_code_label *loop_label = gen_label_rtx ();
       emit_label (loop_label);
       LABEL_NUSES (loop_label) = 1;
 
diff --git a/gcc/reorg.cc b/gcc/reorg.cc
index 8a865fa9ef96..4f4accda8225 100644
--- a/gcc/reorg.cc
+++ b/gcc/reorg.cc
@@ -3470,8 +3470,8 @@ make_return_insns (rtx_insn *first)
 {
   rtx_insn *insn;
   rtx_jump_insn *jump_insn;
-  rtx real_return_label = function_return_label;
-  rtx real_simple_return_label = function_simple_return_label;
+  rtx_insn *real_return_label = function_return_label;
+  rtx_insn *real_simple_return_label = function_simple_return_label;
   int slots, i;
 
   /* See if there is a RETURN insn in the function other than the one we
@@ -3480,7 +3480,7 @@ make_return_insns (rtx_insn *first)
   for (insn = first; insn; insn = NEXT_INSN (insn))
     if (JUMP_P (insn) && ANY_RETURN_P (PATTERN (insn)))
       {
-       rtx t = get_label_before (insn, NULL_RTX);
+       rtx_insn *t = get_label_before (insn, NULL_RTX);
        if (PATTERN (insn) == ret_rtx)
          real_return_label = t;
        else

Reply via email to