On Fri, Jul 30, 2021 at 8:40 AM Richard Sandiford
<richard.sandif...@arm.com> wrote:
>
> "H.J. Lu via Gcc-patches" <gcc-patches@gcc.gnu.org> writes:
> > +/* Callback routine for store_by_pieces.  Read GET_MODE_BITSIZE (MODE)
> > +   bytes from constant string DATA + OFFSET and return it as target
> > +   constant.  If PREV isn't nullptr, it has the RTL info from the
> > +   previous iteration.  */
> >
> > +rtx
> > +builtin_memset_read_str (void *data, void *prev,
> > +                      HOST_WIDE_INT offset ATTRIBUTE_UNUSED,
> > +                      fixed_size_mode mode)
> > +{
> >    const char *c = (const char *) data;
> > -  char *p = XALLOCAVEC (char, GET_MODE_SIZE (mode));
> > +  unsigned int size = GET_MODE_SIZE (mode);
> >
> > -  memset (p, *c, GET_MODE_SIZE (mode));
> > +  rtx target = gen_memset_value_from_prev ((by_pieces_prev *) prev,
> > +                                        mode);
> > +  if (target != nullptr)
> > +    return target;
> > +  rtx src = gen_int_mode (*c, QImode);
> >
> > -  return c_readstr (p, mode);
> > +  if (VECTOR_MODE_P (mode))
> > +    {
> > +      gcc_assert (GET_MODE_INNER (mode) == QImode);
> > +
> > +      rtx const_vec = gen_const_vec_duplicate (mode, src);
> > +      if (prev == NULL)
> > +     /* Return CONST_VECTOR when called by a query function.  */
> > +     target = const_vec;
> > +      else
> > +     {
> > +       /* Use the move expander with CONST_VECTOR.  */
> > +       target = targetm.gen_memset_scratch_rtx (mode);
> > +       emit_move_insn (target, const_vec);
> > +     }
> > +
> > +      return target;
>
> I guess this is personal preference, sorry, but it seems more obvious
> to me with an early return rather than an assignemnt to target:
>
>       if (prev == NULL)
>         /* Return CONST_VECTOR when called by a query function.  */
>         return const_vec;
>
>       /* Use the move expander with CONST_VECTOR.  */
>       target = targetm.gen_memset_scratch_rtx (mode);
>       emit_move_insn (target, const_vec);
>       return target;

I made the change and checked it in.   Thank you very much for your help.

> OK with that change, thanks, no need to repost.  (And thanks for
> your patience.)
>
> Richard



-- 
H.J.

Reply via email to