https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119016
--- Comment #7 from rguenther at suse dot de <rguenther at suse dot de> --- On Wed, 26 Feb 2025, tnfchris at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119016 > > --- Comment #6 from Tamar Christina <tnfchris at gcc dot gnu.org> --- > At the start of the second iteration len = 2, so start becomes misaligned at > 0x7fffffffe2f2 > > but the peeling iteration code checks (0x7fffffffe2f2 / 8) & 1 which is 0, so > it doesn't peel to align it. > > Indeed the dump says: > > oel.c:6:14: note: created buf_15(D) > oel.c:6:14: note: niters for prolog loop: (size_t) ((unsigned long) buf_15(D) > >> 3) & 1 > > Because of the scalar code doing DI mode loads, and the misalignment being > HImode, I don't think the alignment can be reached by peeling. > > i.e. I don't think you can reach target alignment, and unless I'm missing > something, get_misalign_in_elems does not have a failure mode for when target > alignment can't be reached? get_misalign_in_elems of course returns garbage when the access isn't element aligned - we're not supposed to compute it in this case.