https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111754
--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> --- On Tue, 10 Oct 2023, prathamesh3492 at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111754 > > --- Comment #3 from prathamesh3492 at gcc dot gnu.org --- > The issue is that we only support integral vector types in fold_vec_perm_cst, > but fail to check for the same before calling it from fold_vec_perm. > The following tweak fixes the ICE: > > diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc > index 4f8561509ff..a29a8af6d2f 100644 > --- a/gcc/fold-const.cc > +++ b/gcc/fold-const.cc > @@ -10801,7 +10801,8 @@ fold_vec_perm (tree type, tree arg0, tree arg1, const > vec_perm_indices &sel) > return NULL_TREE; > > if (TREE_CODE (arg0) == VECTOR_CST > - && TREE_CODE (arg1) == VECTOR_CST) > + && TREE_CODE (arg1) == VECTOR_CST > + && INTEGRAL_TYPE_P (TREE_TYPE (type))) > return fold_vec_perm_cst (type, arg0, arg1, sel); Huh, that looks wrong. I fail to see how the element type matters at all.