https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117498
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Though, question is why hasn't the vectorizer increased the alignment of the n variable when it decided to vectorize accesses to it using V16QImode aligned loads. The fact that lim4 hasn't moved also the vect__12.118_21 = MEM <vector(16) char> [(char *)&n + 16B]; vect__12.119_107 = MEM <vector(16) char> [(char *)&n + 32B]; vect__12.120_109 = MEM <vector(16) char> [(char *)&n + 48B]; loads suggests that tree_could_trap_p returns true in that case when it is wholy out of bounds, but doesn't when it is partially out of bounds, because that is something e.g. the vectorizer could sometimes do, load something including padding bytes after it and then mask those away or something like that.