https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113933

--- Comment #3 from John David Anglin <danglin at gcc dot gnu.org> ---
This code in pa_emit_move_sequence is reload specific (reg_equiv_mem):

  if (scratch_reg
      && reload_in_progress
      && GET_CODE (operand0) == REG
      && REGNO (operand0) >= FIRST_PSEUDO_REGISTER)
    operand0 = reg_equiv_mem (REGNO (operand0));
  else if (scratch_reg
           && reload_in_progress
           && GET_CODE (operand0) == SUBREG
           && GET_CODE (SUBREG_REG (operand0)) == REG
           && REGNO (SUBREG_REG (operand0)) >= FIRST_PSEUDO_REGISTER)
    {
     /* We must not alter SUBREG_BYTE (operand0) since that would confuse
        the code which tracks sets/uses for delete_output_reload.  */
      rtx temp = gen_rtx_SUBREG (GET_MODE (operand0),
                                 reg_equiv_mem (REGNO (SUBREG_REG (operand0))),
                                 SUBREG_BYTE (operand0));
      operand0 = alter_subreg (&temp, true);
    }

We need something similar for lra.  Otherwise, we hit following error:

dave@mx3210:~/gnu/gcc/objdir/hppa-linux-gnu/libgcc$ sh xx.sh
GNU C17 (GCC) version 15.0.0 20240918 (experimental) [master
r15-3695-gcc62b2c3da1] (hppa-linux-gnu)
        compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version
4.2.1, MPC version 1.3.1, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 07d108a61db93a2471fe8e13f11689df
during RTL pass: reload
../../../gcc/libgcc/libgcc2.c: In function ‘__mulvdi3’:
../../../gcc/libgcc/libgcc2.c:376:1: internal compiler error: maximum number of
generated reload insns per insn achieved (90)
  376 | }
      | ^
0x335fd73 internal_error(char const*, ...)
        ../../gcc/gcc/diagnostic-global-context.cc:517
0x12b9e43 lra_constraints(bool)
        ../../gcc/gcc/lra-constraints.cc:5404
0x1291b63 lra(_IO_FILE*, int)
        ../../gcc/gcc/lra.cc:2445
0x11f4d43 do_reload
        ../../gcc/gcc/ira.cc:5976
0x11f5663 execute
        ../../gcc/gcc/ira.cc:6164

Reply via email to