]> git.ipfire.org Git - thirdparty/gcc.git/commit
RISC-V: Fix recursive vsetvli checking [PR114172]
authorKito Cheng <kito.cheng@sifive.com>
Wed, 24 Apr 2024 08:54:44 +0000 (16:54 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Wed, 24 Apr 2024 13:13:06 +0000 (21:13 +0800)
commit67e50daa5bd05f16d98c2dc651af2d6fa8335186
tree9cd1dc4fbca4ce9a617fbc2b06459526f2fa2c67
parent85831fbdda01d9128699c37e40878cf260411edf
RISC-V: Fix recursive vsetvli checking [PR114172]

extract_single_source will recursive checking the sources to
make sure if it's single source, however it may cause infinite
recursive when the source is come from itself, so it should just skip
first source to prevent that.

NOTE: This logic has existing on trunk/GCC 14, but it included in a big
vsetvli improvement patch, which is not backport to GCC 13.

```

void saxpy_rvv_m8(float *y, long vl)
{
    for (;;)
    {
        vl = __riscv_vsetvl_e32m8(vl); //ICE
        vfloat32m8_t y_vec;
        __riscv_vse32_v_f32m8(y, y_vec, vl);
    }
}
```

gcc/ChangeLog:

PR target/114172
* config/riscv/riscv-vsetvl.cc (extract_single_source):
Skip first set.

gcc/testsuite/ChangeLog:

PR target/114172
* gcc.target/riscv/rvv/vsetvl/pr114172.c: New.
gcc/config/riscv/riscv-vsetvl.cc
gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr114172.c [new file with mode: 0644]