diff options
author | Jakub Jelinek <jakub@redhat.com> | 2021-03-04 19:38:08 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2021-03-04 19:38:08 +0100 |
commit | 0ad6de3883a1641f7ec0bd9cf56d41fa5b313dae (patch) | |
tree | f536bfcc765ed079b35d0dae668bda3d48e56176 /gcc/c/c-parser.c | |
parent | 87dc3d0d36a8ac55122da72cf5b1dcf06e694018 (diff) | |
download | gcc-0ad6de3883a1641f7ec0bd9cf56d41fa5b313dae.zip gcc-0ad6de3883a1641f7ec0bd9cf56d41fa5b313dae.tar.gz gcc-0ad6de3883a1641f7ec0bd9cf56d41fa5b313dae.tar.bz2 |
expand: Fix ICE in store_bit_field_using_insv [PR93235]
The following testcase ICEs on aarch64. The problem is that
op0 is (subreg:HI (reg:HF ...) 0) and because we can't create a SUBREG of a
SUBREG and aarch64 doesn't have HImode insv, only SImode insv,
store_bit_field_using_insv tries to create (subreg:SI (reg:HF ...) 0)
which is not valid for the target and so gen_rtx_SUBREG ICEs.
The following patch fixes it by punting if the to be created SUBREG
doesn't validate, callers of store_bit_field_using_insv can handle
the fallback.
2021-03-04 Jakub Jelinek <jakub@redhat.com>
PR middle-end/93235
* expmed.c (store_bit_field_using_insv): Return false of xop0 is a
SUBREG and a SUBREG to op_mode can't be created.
* gcc.target/aarch64/pr93235.c: New test.
Diffstat (limited to 'gcc/c/c-parser.c')
0 files changed, 0 insertions, 0 deletions