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
