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?).