https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107672
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code CC| |rguenth at gcc dot gnu.org Target Milestone|--- |13.0 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- for (i = 0; i < MAX_INTERM_CVT_STEPS; i++) { intermediate_mode = insn_data[icode1].operand[0].mode; if (VECTOR_BOOLEAN_TYPE_P (prev_type)) intermediate_type = vect_halve_mask_nunits (prev_type, intermediate_mode); else intermediate_type = lang_hooks.types.type_for_mode (intermediate_mode, TYPE_UNSIGNED (prev_type)); if (VECTOR_BOOLEAN_TYPE_P (intermediate_type) that fails to check for the case the langhook returns NULL. In fact, using build_nonstandard_integer_type is prefered, just use GET_MODE_PRECISION on the intermediate_mode. Note that's just guessed from the backtrace reported. If you can fire up gdb and see what it actually segfaults on that would be helpful. Likewise the above would suggest your type_for_mode needs amemdment.