On Wed, Apr 05, 2023 at 02:11:08PM +0200, Richard Biener wrote: > Ok, but maybe there’s a gimple_build overload that meanwhile implements > the desired semantics? It would probably need to specify the valueization > hook to follow SSA edges beyond the sequence we’re currently building.
Jeff has apparently committed the patch in the meantime. For gimple_build, did you mean to use it just for this fallback case, or instead of the initial resimplification as well? > > 2023-04-05 Jakub Jelinek <ja...@redhat.com> > > > > PR tree-optimization/109392 > > * tree-vect-generic.cc (tree_vec_extract): If maybe_push_res_to_seq > > fails, build BIT_FIELD_REF insn without trying to simplify it. > > > > * gcc.dg/pr109392.c: New test. > > > > --- gcc/tree-vect-generic.cc.jj 2023-03-23 10:02:18.997935620 +0100 > > +++ gcc/tree-vect-generic.cc 2023-04-04 14:28:32.977729134 +0200 > > @@ -174,7 +174,16 @@ tree_vec_extract (gimple_stmt_iterator * > > opr.resimplify (NULL, follow_all_ssa_edges); > > gimple_seq stmts = NULL; > > tree res = maybe_push_res_to_seq (&opr, &stmts); > > - gcc_assert (res); > > + if (!res) > > + { > > + /* This can happen if SSA_NAME_OCCURS_IN_ABNORMAL_PHI are > > + used. Build BIT_FIELD_REF manually otherwise. */ > > + t = build3 (BIT_FIELD_REF, type, t, bitsize, bitpos); > > + res = make_ssa_name (type); > > + gimple *g = gimple_build_assign (res, t); > > + gsi_insert_before (gsi, g, GSI_SAME_STMT); > > + return res; > > + } > > gsi_insert_seq_before (gsi, stmts, GSI_SAME_STMT); > > return res; > > } Jakub