https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114639
--- Comment #8 from Li Pan <pan2.li at intel dot com> --- Find an even simpler code for reproduction. #include <riscv_vector.h> extern unsigned long get_vl (); vbool16_t test (vuint64m4_t a) { unsigned long b; return __riscv_vmsne_vx_u64m4_b16 (a, b, get_vl ()); } ../__RISC-V_INSTALL___RV64/bin/riscv64-unknown-elf-g++ -O3 -march=rv64gcv -c ref.c -S -o - acc22d56e140220e7dc6c138918cb6754b6d1c0b enabled the vector abi by default, and trigger this assert in create_pre_exit. Replace get_vl () with a local variable could bypass this issue. will continue to investigate.