Hi, This patch disables epilogue vectorization when we are peeling for alignment in the prologue and we can't guarantee the main vectorized loop is entered.  This is to prevent executing vectorized code with an unaligned access if the target has indicated it wants to peel for alignment. We take this conservative approach as we currently do not distinguish between peeling for alignment for correctness or for performance. A better codegen would be to make it skip to the scalar epilogue in case the main loop isn't entered when alignment peeling is required. However, that would require a more aggressive change to the codebase which we chose to avoid at this point of development.  We can revisit this option during stage 1 if we choose to. Bootstrapped on aarch64-none-linux and regression tested on aarch64-none-elf. gcc/ChangeLog:     PR tree-optimization/105219     * tree-vect-loop.cc (vect_epilogue_when_peeling_for_alignment): New function.     (vect_analyze_loop): Use vect_epilogue_when_peeling_for_alignment to determine     whether to vectorize epilogue.     * testsuite/gcc.target/aarch64/pr105219.c: New.     * testsuite/gcc.target/aarch64/pr105219-2.c: New.     * testsuite/gcc.target/aarch64/pr105219-3.c: New.