https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118950
--- Comment #5 from Robin Dapp <rdapp at gcc dot gnu.org> --- Yeah, the original statement is recognized as a mask conversion pattern: pr118950.c:9:21: note: vect_recog_mask_conversion_pattern: detected: _152 = .MASK_LOAD (_230, 8B, _229, 0); pr118950.c:9:21: note: mask_conversion pattern recognized: patt_355 = .MASK_LOAD (_230, 8B, patt_54, 0); but also as a scatter/gather: pr118950.c:9:21: note: gather/scatter pattern: detected: _152 = .MASK_LOAD (_230, 8B, _229, 0); pr118950.c:9:21: note: gather_scatter pattern recognized: patt_375 = .MASK_LEN_GATHER_LOAD ((sizetype) _215 + 20, _85, 1, 0, _229, 0); The type of _152 is _Bool but patt_375's type is unsigned char. With unsigned char the presence of padding bits is not obvious and we should have looked at _152's type.