http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53773
--- Comment #4 from William J. Schmidt <wschmidt at gcc dot gnu.org> 2012-07-27 16:26:47 UTC --- Operand swapping is also done in vect_is_slp_reduction. Places that rely on the reduction operand being the last operand: * vect_model_reduction_cost * vectorizable_reduction * vect_recog_dot_prod_pattern * vect_recog_widen_sum_pattern Some commentary in vectorizable_reduction indicates that the last-operand rule is not used for nested cycles, so there are a few places where a reduc_index parameter is passed around instead.