On Mon, Aug 30, 2021 at 6:49 AM Jakub Jelinek <ja...@redhat.com> wrote:
>
> On Sun, Aug 29, 2021 at 12:11:23PM -0700, H.J. Lu wrote:
> > --- a/gcc/config/i386/i386.c
> > +++ b/gcc/config/i386/i386.c
> > @@ -1840,6 +1840,54 @@ init_cumulative_args (CUMULATIVE_ARGS *cum,  /* 
> > Argument info to initialize */
> >    cfun->machine->arg_reg_available = (cum->nregs > 0);
> >  }
> >
> > +/* Return the single 64-bit vector type of TYPE.  */
> > +
> > +static const_tree
> > +single_m64_base_type (const_tree type)
> > +{
> > +  if ((TREE_CODE (type) == RECORD_TYPE
> > +       || TREE_CODE (type) == UNION_TYPE
> > +       || TREE_CODE (type) == QUAL_UNION_TYPE)
> > +      && int_size_in_bytes (type) == 8)
> > +    {
> > +      const_tree field;
> > +      const_tree first_field = nullptr;
> > +
> > +      for (field = TYPE_FIELDS (type);
> > +        field;
> > +        field = DECL_CHAIN (field))
> > +     if (TREE_CODE (field) == FIELD_DECL)
> > +       {
> > +         if (TREE_TYPE (field) == error_mark_node)
> > +           continue;
> > +
> > +         /* Skip if structure has more than one field.  */
> > +         if (first_field)
> > +           return nullptr;
> > +
> > +         first_field = field;
> > +       }
> > +
> > +      /* Skip if structure doesn't have any fields.  */
> > +      if (!first_field)
> > +     return nullptr;
>
> Is this an attempt to emulate compute_record_mode or something else?
> How should it treat zero-width bitfields (either the C ones kept
> in the structures or C++ ones formerly removed from them and now no longer)?
> compute_record_mode actually has more complicated details...

I will submit the v3 patch.


-- 
H.J.

Reply via email to