> This patch simply adds loop_vinfo as an extra argument to > vect_get_vec_def_for_operand and only generates a stmt_vinfo if required. > This is a required cleanup for patch [2/3]. > Tested on x86 and aarch64. > > gcc/ > * tree-vectorizer.h (vect_get_vec_def_for_operand): Pass loop_vinfo in. > * tree-vect-stmts.c (vect_get_vec_def_for_operand): Pass loop_vinfo in. > (vect_get_vec_defs): Pass down loop_vinfo. > (vectorizable_mask_load_store): Likewise. > (vectorizable_call): Likewise. > (vectorizable_simd_clone_call): Likewise. > (vect_get_loop_based_defs): Likewise. > (vectorizable_conversion): Likewise. > (vectorizable_operation): Likewise. > (vectorizable_store): Likewise. > (vectorizable_load): Likewise. > (vectorizable_condition): Likewise. > (vectorizable_comparison): Likewise. > * tree-vect-loop.c (get_initial_def_for_induction): Likewise. > (get_initial_def_for_reduction): Likewise. > (vectorizable_reduction): Likewise.
New version. I've removed the additional loop_vinfo arg. Instead, I've split part of vect_get_vec_def_for_operand into a new function vect_get_vec_def_for_operand_1. My [2/3] patch will call vect_get_vec_def_for_operand_1 direct from vectorizeable_live_operation gcc/ * tree-vectorizer.h (vect_get_vec_def_for_operand_1): New * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): New (vect_get_vec_def_for_operand): Split out code. Alan.
1of3get_vec_def.patch
Description: Binary data