aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/numeric
diff options
context:
space:
mode:
authorRobin Dapp <rdapp@ventanamicro.com>2025-04-04 17:06:44 +0200
committerRobin Dapp <rdapp@ventanamicro.com>2025-04-15 17:20:59 +0200
commit517f7e3f02b4c945d2b4bdabb490961cf986391e (patch)
treeb912ceb1778db918fd46334360e1a0d6308fc4cb /libstdc++-v3/include/std/numeric
parentf62e5d720de829cf346b799f3463fee53728ba6c (diff)
downloadgcc-517f7e3f02b4c945d2b4bdabb490961cf986391e.zip
gcc-517f7e3f02b4c945d2b4bdabb490961cf986391e.tar.gz
gcc-517f7e3f02b4c945d2b4bdabb490961cf986391e.tar.bz2
RISC-V: Do not lift up vsetvl into non-transparent blocks [PR119547].
When lifting up a vsetvl into a block we currently don't consider the block's transparency with respect to the vsetvl as in other parts of the pass. This patch does not perform the lift when transparency is not guaranteed. This condition is more restrictive than necessary as we can still perform a vsetvl lift if the conflicting register is only every used in vsetvls and no regular insns but given how late we are in the GCC 15 cycle it seems better to defer this. Therefore gcc.target/riscv/rvv/vsetvl/avl_single-68.c is XFAILed for now. This issue was found in OpenCV where it manifests as a runtime error. Zhijin Zeng debugged PR119547 and provided an initial patch. Reported-By: 曾治金 <zhijin.zeng@spacemit.com> PR target/119547 gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (pre_vsetvl::earliest_fuse_vsetvl_info): Do not perform lift if block is not transparent. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/vsetvl/avl_single-68.c: xfail. * g++.target/riscv/rvv/autovec/pr119547.C: New test. * g++.target/riscv/rvv/autovec/pr119547-2.C: New test. * gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-10.c: Adjust.
Diffstat (limited to 'libstdc++-v3/include/std/numeric')
0 files changed, 0 insertions, 0 deletions