On Fri, 2020-09-04 at 03:47 -0500, Segher Boessenkool wrote:
> 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);

Thanks for the additional scrutiny and discussion.. :-)
My regtests with that change passed cleanly, so it was committed
yesterday. 

Thanks,
-Will

> 
> 
> Segher

Reply via email to