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

--- Comment #1 from John David Anglin <danglin at gcc dot gnu.org> ---
This is caused by infinite loop in LRA.

We have a problem handling OImode:

(insn 385 384 386 2 (set (subreg:SI (reg/v:OI 132 [ e ]) 20)
        (subreg:SI (reg/v:OI 452 [orig:132 e ] [132]) 20))
"/home/dave/gnu/gcc/g
cc/gcc/testsuite/gcc.c-torture/compile/pr92618.c":18:15 42 {*pa.md:2195}
     (nil))
(insn 386 385 387 2 (set (subreg:SI (reg/v:OI 132 [ e ]) 24)
        (subreg:SI (reg/v:OI 452 [orig:132 e ] [132]) 24))
"/home/dave/gnu/gcc/g
cc/gcc/testsuite/gcc.c-torture/compile/pr92618.c":18:15 42 {*pa.md:2195}
     (nil))
(insn 387 386 35 2 (set (subreg:SI (reg/v:OI 132 [ e ]) 28)
        (subreg:SI (reg/v:OI 452 [orig:132 e ] [132]) 28))
"/home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/compile/pr92618.c":18:15 42
{*pa.md:2195}
     (nil))
(insn 35 387 36 2 (set (subreg:SI (reg/v:OI 132 [ e ]) 4)
        (mem:SI (plus:SI (reg/f:SI 173)
                (const_int 4 [0x4])) [1  S4 A32]))
"/home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/compile/pr92618.c":18:15 42
{*pa.md:2195}
     (nil))

The insns generated by LRA aren't valid. OImode can't fit in a set of
registers on this target, so the subreg:SI operations shown above can
never be simplified to a general registers.  e has to be in memory.
The pa architecture does not support moving data directly between two
memory locations.

Reply via email to