[Bug tree-optimization/127149] Wrong code with vectorisation of popcount of bitint
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Sep 2 09:29:27 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127149
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:
https://gcc.gnu.org/g:431068af077e13f0113f3640385b7b6cfa0a3e68
commit r17-3855-g431068af077e13f0113f3640385b7b6cfa0a3e68
Author: Jakub Jelinek <jakub@redhat.com>
Date: Wed Sep 2 11:27:11 2026 +0200
vect-patterns: Fix up vect_recog_popcount_clz_ctz_ffs_pattern for non-mode
precision types [PR127149]
The following testcase is miscompiled on aarch64-linux. The problem is
that
vect_recog_popcount_clz_ctz_ffs_pattern for builtins other than clz
doesn't require type_has_mode_precision_p (lhs_type) and matches to an ifn
with an argument with say _BitInt(7) type (as well as result) and we then
happily vectorize it and match something that doesn't properly extend the
padding bits.
One possibility is to punt in this case (i.e.
if (!type_has_mode_precision_p (lhs_type))
return NULL;
), the following patch instead pattern matches it with a cast to/from
the TREE_TYPE (vec_type), i.e. the actual mode precision type we'll use
for the vectorization.
2026-09-02 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/127149
* tree-vect-patterns.cc (vect_recog_popcount_clz_ctz_ffs_pattern):
Handle lhs_type without mode precision by adding casts.
* gcc.dg/bitint-142.c: New test.
Reviewed-by: Richard Biener <rguenth@suse.de>
More information about the Gcc-bugs
mailing list