On Thu, Sep 3, 2020 at 8:10 PM Segher Boessenkool <seg...@kernel.crashing.org> wrote: > > Hi! > > 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: > > > > This corrects an issue with the powerpc vector long long > > > > subtypes. > > > > As reported by SjMunroe in PR96139. When building some code with > > > > -Wall > > > > and attempting to print an element of a "long long vector" with a > > > > long long > > > > printf format string, we will report a error because the vector > > > > sub-type > > > > was improperly defined as int. > > > > > > > > When defining a V2DI_type_node we use a TARGET_POWERPC64 ternary to > > > > define the V2DI_type_node with "vector long" or "vector long long". > > > > We also need to specify the proper sub-type when we define the > > > > type. > > > > - 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> *. 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. Richard. > Thanks! > > > Segher