[PATCH PR96757] aarch64: ICE during GIMPLE pass: vect
Richard Sandiford
richard.sandiford@arm.com
Wed Sep 30 10:38:21 GMT 2020
Thanks for the update, looks good apart from…
"duanbo (C)" <duanbo3@huawei.com> writes:
> @@ -4361,7 +4391,7 @@ vect_recog_mask_conversion_pattern (vec_info *vinfo,
> if (known_eq (TYPE_VECTOR_SUBPARTS (vectype1),
> TYPE_VECTOR_SUBPARTS (vectype2))
> && (TREE_CODE (rhs1) == SSA_NAME
> - || rhs1_type == TREE_TYPE (TREE_OPERAND (rhs1, 0))))
> + || !rhs1_op0_type || !rhs1_op1_type))
> return NULL;
…I think this should be:
&& (TREE_CODE (rhs1) == SSA_NAME
|| (!rhs1_op0_type && !rhs1_op1_type))
i.e. punt only if both types are already OK. If one operand wants
a specific mask type, we should continue to the code below and attach
the chosen type to the comparison.
Although I guess this simplifies to:
if (known_eq (TYPE_VECTOR_SUBPARTS (vectype1),
TYPE_VECTOR_SUBPARTS (vectype2))
&& !rhs1_op0_type
&& !rhs1_op1_type)
return NULL;
(I think the comment above the code is still accurate with this change.)
> @@ -4393,7 +4423,16 @@ vect_recog_mask_conversion_pattern (vec_info *vinfo,
> if (TREE_CODE (rhs1) != SSA_NAME)
> {
> tmp = vect_recog_temp_ssa_var (TREE_TYPE (rhs1), NULL);
> - pattern_stmt = gimple_build_assign (tmp, rhs1);
> + if (rhs1_op0_type && TYPE_PRECISION (rhs1_op0_type)
> + != TYPE_PRECISION (rhs1_type))
> + rhs1_op0 = build_mask_conversion (vinfo, rhs1_op0,
> + vectype2, stmt_vinfo);
> + if (rhs1_op1_type && TYPE_PRECISION (rhs1_op1_type)
> + != TYPE_PRECISION (rhs1_type))
Very minor -- I would have fixed this up before committing if it
wasn't for the above -- but: GCC formatting is instead:
if (rhs1_op1_type
&& TYPE_PRECISION (rhs1_op1_type) != TYPE_PRECISION (rhs1_type))
LGTM with those changes, thanks.
Richard
> + rhs1_op1 = build_mask_conversion (vinfo, rhs1_op1,
> + vectype2, stmt_vinfo);
> + pattern_stmt = gimple_build_assign (tmp, TREE_CODE (rhs1),
> + rhs1_op0, rhs1_op1);
> rhs1 = tmp;
> append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt, vectype2,
> rhs1_type);
More information about the Gcc-patches
mailing list