https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104759
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[12 Regression] |[11/12 Regression] |gcc.dg/vect/vect-multitypes |gcc.dg/vect/vect-multitypes |-12.c FAILs |-12.c FAILs Keywords|missed-optimization | Priority|P3 |P2 Target Milestone|12.0 |11.3 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Btw, this was backported to GCC 11 as well. With a cc1 cross to sparc-sun-solaris2.11 on the GCC 10 branch I see the initialization loop vectorized as .LL10: st %g2, [%fp-280] xor %g2, %g3, %o7 and %g2, %o5, %i0 st %g1, [%fp-276] xor %g1, %g3, %i1 and %g1, %o5, %i4 ldd [%fp-280], %f8 and %o7, %o4, %o7 add %i0, %g3, %i0 and %i1, %o4, %i1 add %i4, %g3, %i4 std %f8, [%g4] xor %o7, %i0, %i2 xor %i1, %i4, %i3 add %g4, 8, %g4 mov %i2, %g2 cmp %g4, %o3 bne,pt %icc, .LL10 where we indeed vectorize with V8QImode operations but have vector lowering decompose them to <bb 3> [local count: 132284996]: # vect_vec_iv_.26_12 = PHI <{ 0, 1, 2, 3, 4, 5, 6, 7 }(2), _44(3)> # ivtmp.42_38 = PHI <ivtmp.42_40(2), ivtmp.42_39(3)> _29 = BIT_FIELD_REF <vect_vec_iv_.26_12, 32, 0>; _22 = _29 ^ 134744072; _27 = _29 & 2139062143; _4 = _22 & 2155905152; _5 = _27 + 134744072; _9 = _4 ^ _5; _10 = BIT_FIELD_REF <vect_vec_iv_.26_12, 32, 32>; _18 = _10 ^ 134744072; _26 = _10 & 2139062143; _31 = _18 & 2155905152; _32 = _26 + 134744072; _35 = _31 ^ _32; _36 = {_9, _35}; _44 = VIEW_CONVERT_EXPR<vector(8) char>(_36); _41 = (void *) ivtmp.42_38; MEM[base: _41, offset: 0B] = vect_vec_iv_.26_12; ivtmp.42_39 = ivtmp.42_38 + 8; if (ivtmp.42_39 != _43) so I think this is an improvement code-generation wise, not a regression.