]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Fix wrong check of register occurrences [PR109535]
authorJu-Zhe Zhong <juzhe.zhong@rivai.ai>
Wed, 19 Apr 2023 10:41:51 +0000 (18:41 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Thu, 20 Apr 2023 13:21:03 +0000 (21:21 +0800)
commita2d12abedc89a9439fd6aadc38730fdadca0684f
treea1bf575970880c6c0210029df116d99a3bf28921
parent98ebdda3fd81c2c87ef0e73de9c94135fb49210f
RISC-V: Fix wrong check of register occurrences [PR109535]

count_occurrences will conly count same RTX (same code and same mode),
but what we want to track is the occurrence of a register, a register
might appeared in the insn with different mode or contain in SUBREG.

Testcase coming from Kito.

gcc/ChangeLog:

PR target/109535
* config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
(pass_vsetvl::cleanup_insns): Fix bug.

gcc/testsuite/ChangeLog:

PR target/109535
* g++.target/riscv/rvv/base/pr109535.C: New test.
* gcc.target/riscv/rvv/base/pr109535.c: New test.

Signed-off-by: Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
Co-authored-by: kito-cheng <kito.cheng@sifive.com>
gcc/config/riscv/riscv-vsetvl.cc
gcc/testsuite/g++.target/riscv/rvv/base/pr109535.C [new file with mode: 0644]
gcc/testsuite/gcc.target/riscv/rvv/base/pr109535.c [new file with mode: 0644]