]> git.ipfire.org Git - thirdparty/gcc.git/commit
DSE: Fix ICE after allow vector type in get_stored_val
authorPan Li <pan2.li@intel.com>
Tue, 30 Apr 2024 01:42:39 +0000 (09:42 +0800)
committerPan Li <pan2.li@intel.com>
Mon, 20 May 2024 01:05:04 +0000 (09:05 +0800)
commit88b3f83238087cbe2aa2c51c6054796856f2fb94
treeda22d38bfca00871ea951ccc23528b2df7478ab1
parentf22afbe0e084f478ef7a5594a00b8eb232958a7f
DSE: Fix ICE after allow vector type in get_stored_val

We allowed vector type for get_stored_val when read is less than or
equal to store in previous.  Unfortunately,  the valididate_subreg
treats the vector type's size is less than vector register as
invalid.  Then we will have ICE here.

This patch would like to fix it by filter-out the invalid type size,
and make sure the subreg is valid for both the read_mode and store_mode
before perform the real gen_lowpart.

The below test suites are passed for this patch:

* The x86 bootstrap test.
* The x86 regression test.
* The riscv rv64gcv regression test.
* The riscv rv64gc regression test.
* The aarch64 regression test.

gcc/ChangeLog:

* dse.cc (get_stored_val): Make sure read_mode/write_mode
is valid subreg before gen_lowpart.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/base/bug-6.c: New test.

Signed-off-by: Pan Li <pan2.li@intel.com>
gcc/dse.cc
gcc/testsuite/gcc.target/riscv/rvv/base/bug-6.c [new file with mode: 0644]