https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111764
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- /* Try to simplify the vector initialization by applying an adjustment after the reduction has been performed. */ if (!reduc_info->reused_accumulator && STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def && !operand_equal_p (neutral_op, initial_def)) { STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT (reduc_info) = initial_def; initial_def = neutral_op; } maybe just allow PLUS/MINUS_EXPR here. Maybe it's all premature ...