[Bug target/97532] [11 Regression] Error: insn does not satisfy its constraints, internal compiler error: in extract_constrain_insn, at recog.c:2196

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Oct 22 17:16:42 GMT 2020


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |liuhongt at gcc dot gnu.org,
                   |                            |vmakarov at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r11-4203-g7026bb9504eb0f95e114f832cd6dd14302376861
We have:
(insn 87 4 5 2 (set (reg:DI 189)
        (reg:DI 2 cx [ fact ])) "simd-2.f90":13:0 74 {*movdi_internal}
     (expr_list:REG_DEAD (reg:DI 2 cx [ fact ])
        (nil)))
...
(insn 76 75 81 2 (set (reg:V8DF 153 [ vect_c_20.334 ])
        (plus:V8DF (vec_duplicate:V8DF (mem:DF (reg:DI 189) [6 *fact_18(D)+0 S8
A64]))
            (reg:V8DF 184 [ vect__17.333 ]))) "simd-2.f90":18:0 1569
{*addv8df3}
     (expr_list:REG_DEAD (reg:DI 189)
        (expr_list:REG_DEAD (reg:V8DF 184 [ vect__17.333 ])
            (nil))))
as the only insns that refer to pseudo 189, and for some reason IRA decides to
allocate that pseudo into xmm4 register which is not valid for memory
addresses.
So, something in the r11-4202 IRA changes doesn't work properly (and maybe
something in LRA too, because even if IRA decides to put it into such register,
which it e.g. could because 95% of uses would be in vector register contexts,
LRA should be able to fix it up, shouldn't it?


More information about the Gcc-bugs mailing list