From: Richard Biener Date: Wed, 13 Dec 2023 08:38:59 +0000 (+0100) Subject: tree-optimization/112990 - unsupported VEC_PERM from match pattern X-Git-Tag: basepoints/gcc-15~3657 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9baead90d74e9211fc94d655ecd5d3af3858158;p=thirdparty%2Fgcc.git tree-optimization/112990 - unsupported VEC_PERM from match pattern The following avoids creating an unsupported VEC_PERM after vector lowering from the pattern merging a bit-insert from a bit-field-ref to a VEC_PERM. For the already existing s390 testcase we get TImode vectors which later ICE during attempted expansion of a vec_perm_const. PR tree-optimization/112990 * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): Restrict to vector modes after lowering. --- diff --git a/gcc/match.pd b/gcc/match.pd index 15bca217aafb..e3dcff5c29ca 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -8505,6 +8505,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (bit_insert @0 (BIT_FIELD_REF@2 @1 @rsize @rpos) @ipos) (if (VECTOR_TYPE_P (type) + && (VECTOR_MODE_P (TYPE_MODE (type)) + || optimize_vectors_before_lowering_p ()) && types_match (@0, @1) && types_match (TREE_TYPE (TREE_TYPE (@0)), TREE_TYPE (@2)) && TYPE_VECTOR_SUBPARTS (type).is_constant ())