From: Richard Biener Date: Wed, 18 Nov 2020 09:32:29 +0000 (+0100) Subject: tree-optimization/97886 - deal with strange LC PHI nodes X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=30270bf042049bf6aee6184e0b7688d9ca7b479d;p=gcc.git tree-optimization/97886 - deal with strange LC PHI nodes This makes vectorization properly assign vector types to PHI nodes that copy from externals on loop exit edges. 2020-11-18 Richard Biener PR tree-optimization/97886 * tree-vect-loop.c (vectorizable_lc_phi): Properly assign vector types to invariants for SLP. --- diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index ecaaf0116d3..856bbfebf7c 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -7593,6 +7593,17 @@ vectorizable_lc_phi (loop_vec_info loop_vinfo, if (!vec_stmt) /* transformation not required. */ { + /* Deal with copies from externs or constants that disguise as + loop-closed PHI nodes (PR97886). */ + if (slp_node + && !vect_maybe_update_slp_op_vectype (SLP_TREE_CHILDREN (slp_node)[0], + SLP_TREE_VECTYPE (slp_node))) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, + "incompatible vector types for invariants\n"); + return false; + } STMT_VINFO_TYPE (stmt_info) = lc_phi_info_type; return true; }