tree-optimization/121049 - avoid loop masking with even/odd reduction

The following disables loop masking when we are using an even/odd
widening operation in a reduction because the loop mask then aligns
to the wrong elements.

	PR tree-optimization/121049
	* internal-fn.h (widening_evenodd_fn_p): Declare.
	* internal-fn.cc (widening_evenodd_fn_p): New function.
	* tree-vect-stmts.cc (vectorizable_conversion): When using
	an even/odd widening function disable loop masking.

	* gcc.dg/vect/pr121049.c: New testcase.

(cherry picked from commit bc5570f7ef796fa7f5ab89b34ed9de2be5299f0e)
4 files changed