This patch changes STMT_VINFO_SAME_DR_STMT from a gimple stmt to a stmt_vec_info.
2018-07-24 Richard Sandiford <richard.sandif...@arm.com> gcc/ * tree-vectorizer.h (_stmt_vec_info::same_dr_stmt): Change from a gimple stmt to a stmt_vec_info. * tree-vect-stmts.c (vectorizable_load): Update accordingly. Index: gcc/tree-vectorizer.h =================================================================== --- gcc/tree-vectorizer.h 2018-07-24 10:23:12.060939107 +0100 +++ gcc/tree-vectorizer.h 2018-07-24 10:23:15.756906285 +0100 @@ -876,7 +876,7 @@ struct _stmt_vec_info { stmt_vec_info next_element; /* For data-refs, in case that two or more stmts share data-ref, this is the pointer to the previously detected stmt with the same dr. */ - gimple *same_dr_stmt; + stmt_vec_info same_dr_stmt; /* The size of the group. */ unsigned int size; /* For stores, number of stores from this group seen. We vectorize the last Index: gcc/tree-vect-stmts.c =================================================================== --- gcc/tree-vect-stmts.c 2018-07-24 10:23:08.536970400 +0100 +++ gcc/tree-vect-stmts.c 2018-07-24 10:23:15.756906285 +0100 @@ -7590,8 +7590,7 @@ vectorizable_load (gimple *stmt, gimple_ we have to give up. */ if (DR_GROUP_SAME_DR_STMT (stmt_info) && (STMT_SLP_TYPE (stmt_info) - != STMT_SLP_TYPE (vinfo_for_stmt - (DR_GROUP_SAME_DR_STMT (stmt_info))))) + != STMT_SLP_TYPE (DR_GROUP_SAME_DR_STMT (stmt_info)))) { if (dump_enabled_p ()) dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,