Hi!

On Fri, Sep 04, 2020 at 08:55:43AM +0200, Richard Biener wrote:
> On Thu, Sep 3, 2020 at 8:10 PM Segher Boessenkool
> <seg...@kernel.crashing.org> wrote:
> > On Thu, Sep 03, 2020 at 10:37:33AM -0500, will schmidt wrote:
> > > On Wed, 2020-09-02 at 05:13 -0500, Segher Boessenkool wrote:
> > > > On Tue, Sep 01, 2020 at 09:00:20PM -0500, will schmidt wrote:
> > > > > -  V2DI_type_node = rs6000_vector_type (TARGET_POWERPC64 ?
> > > > > "__vector long"
> > > > > -                                : "__vector long long",
> > > > > -                                intDI_type_node, 2);
> > > > > +  V2DI_type_node
> > > > > +    = rs6000_vector_type (TARGET_POWERPC64
> > > > > +                   ? "__vector long" : "__vector long long",
> > > > > +                   TARGET_POWERPC64
> > > > > +                   ? long_long_integer_type_node :
> > > > > intDI_type_node,
> > > > > +                   2);
> > > >
> > > > Can't you just use long_long_integer_type_node in all cases?  Or,
> > > > what
> > > > else is intDI_type_node for 32 bit?
> > >
> > > I'm not sure offhand.  I'm tending to assume the use of intDI_type_node
> > > is critical for some underlying reason.    I'll give this a spin with
> > > just long_long_integer_type_node and see what happens.
> >
> > If that works, that is okay for trunk (and all backports you want).  If
> > not, just use what you sent.
> 
> Beware of alias issues!  'long' and 'long long' are distinct types even if
> they have the same size and long * aliases with vector<long> * but not
> with vector<long long> *.

That is what this patch is all about, so I do beware (right now ;-) ),
don't worry :-)

> So if the user writes 'vector long' you should use the appropriate component
> type.  If the user writes 'vector intDI_type' you should use intDI_type.

Yes.  But intDI is not something the user can write, it is an internal
name, and for 32 bit it is just long long int.  We use intDI if
something is long on 64 bit and long long on 32 bit, but here we always
want long long, so we can just as well just write that :-)

  intDI_type_node = make_or_reuse_type (GET_MODE_BITSIZE (DImode), 0);


Segher

Reply via email to