In the origin, cc1 registers rvv builtins with turn on all sub vector extensions but lto not. It makes lto use the asynchronous DECL_MD_FUNCTION_CODE from lto-objects.
Example:
riscv64-unknown-elf-gcc -flto gcc/testsuite/gcc.target/riscv/rvv/base/bug-10.c
-O2 -march=rv64gcv
bug-10.c: In function 'main':
bug-10.c:10:3: error: invalid argument to built-in function
10 | __riscv_vse32_v_i32m1 (d, vd, 1);
gcc/ChangeLog:
* config/riscv/riscv-c.cc
(riscv_pragma_intrinsic_flags_pollute): Move to
riscv-vector-builtins.cc
(riscv_pragma_intrinsic_flags_restore): Ditto
(riscv_ext_version_value): Remove flags initialization.
* config/riscv/riscv-vector-builtins.cc:
(reinit_builtins): Remove handle_pragma_vector in lto_p.
(riscv_pragma_intrinsic_flags_pollute): Cut from riscv-c.cc.
(riscv_pragma_intrinsic_flags_restore): Ditto.
(riscv_vector_push_setting): Backup flags.
(riscv_vector_pop_setting): Restore flags.
(handle_pragma_vector): Intialize flags for registering
builtins.
0003-RISC-V-Fix-rvv-builtin-function-groups-registration-.patch
Description: Binary data
