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

--- Comment #8 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-14 branch has been updated by Xi Ruoyao <xry...@gcc.gnu.org>:

https://gcc.gnu.org/g:3e04b6f6ba568e6183e8aa8223d4156234503843

commit r14-10142-g3e04b6f6ba568e6183e8aa8223d4156234503843
Author: Xi Ruoyao <xry...@xry111.site>
Date:   Fri Apr 26 15:59:11 2024 +0800

    LoongArch: Add constraints for bit string operation define_insn_and_split's
[PR114861]

    Without the constrants, the compiler attempts to use a stack slot as the
    target, causing an ICE building the kernel with -Os:

        drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c:3144:1:
        error: could not split insn
        (insn:TI 1764 67 1745
          (set (mem/c:DI (reg/f:DI 3 $r3) [707 %sfp+-80 S8 A64])
               (and:DI (reg/v:DI 28 $r28 [orig:422 raster_config ] [422])
                       (const_int -50331649 [0xfffffffffcffffff])))
          "drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c":1386:21 111
          {*bstrins_di_for_mask}
          (nil))

    Add these constrants to fix the issue.

    gcc/ChangeLog:

            PR target/114861
            * config/loongarch/loongarch.md (bstrins_<mode>_for_mask): Add
            constraints for operands.
            (bstrins_<mode>_for_ior_mask): Likewise.

    gcc/testsuite/ChangeLog:

            PR target/114861
            * gcc.target/loongarch/pr114861.c: New test.

    (cherry picked from commit 140124ad54eef88ca87909f63aedc8aaeacefc65)

Reply via email to