https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101802
Bug ID: 101802
Summary: Vectorization can end up creating vector bool CTORs
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Target Milestone: ---
When SLP vectorization creates code for external bool defs that are used in
condition composition we can end up combining them with vector booleans
and thus push types like vector(16) <signed-boolean:1> on them.
vect_create_constant_vectors then converts the components to signed-boolean:1
using _3 = _2 ? -1 : 0 and builds a CTOR with signed-boolean:1 components.
It's probably better to code-generate the "conversion" to vector bool by
using a CTOR with the original bools and then producing the vector bool mask
by a comparison against zero (if supported?).