https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114639
--- Comment #5 from Li Pan <pan2.li at intel dot com> --- (In reply to Kito Cheng from comment #4) > Reduced case: > ```c > typedef long c; > #pragma riscv intrinsic "vector" > template <unsigned long> struct d {}; > struct e { > using f = d<0>; > }; > struct g { > using f = e::f; > }; > template <typename, int> using h = g::f; > template <unsigned long i> long k(d<i>); > vbool16_t j(vuint64m4_t a) { > c b; > return __riscv_vmsne_vx_u64m4_b16(a, b, k(h<c, 2>())); > } > > ``` Thanks Kito, reproduced on reduced case with option "riscv64-unknown-elf-g++ -O2 -march=rv64gcv". will take a look into it. during RTL pass: mode_sw test.c: In function ‘vbool16_t j(vuint64m4_t)’: test.c:15:1: internal compiler error: in create_pre_exit, at mode-switching.cc:451 15 | } | ^ 0x3978f12 create_pre_exit /home/pli/gcc/555/riscv-gnu-toolchain/gcc/__RISCV_BUILD__/../gcc/mode-switching.cc:451 0x3979e9e optimize_mode_switching /home/pli/gcc/555/riscv-gnu-toolchain/gcc/__RISCV_BUILD__/../gcc/mode-switching.cc:849 0x397b9bc execute /home/pli/gcc/555/riscv-gnu-toolchain/gcc/__RISCV_BUILD__/../gcc/mode-switching.cc:1324 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.