diff options
author | Xi Ruoyao <xry111@xry111.site> | 2024-04-26 15:59:11 +0800 |
---|---|---|
committer | Xi Ruoyao <xry111@xry111.site> | 2024-04-27 11:59:14 +0800 |
commit | 140124ad54eef88ca87909f63aedc8aaeacefc65 (patch) | |
tree | 665a84e65df97dc9192082056f2012cd84caab45 /gcc/tree-vect-loop.cc | |
parent | 50c218e3ffe57860591a987ecf44fcc0abb31f2c (diff) | |
download | gcc-140124ad54eef88ca87909f63aedc8aaeacefc65.zip gcc-140124ad54eef88ca87909f63aedc8aaeacefc65.tar.gz gcc-140124ad54eef88ca87909f63aedc8aaeacefc65.tar.bz2 |
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.
Diffstat (limited to 'gcc/tree-vect-loop.cc')
0 files changed, 0 insertions, 0 deletions