On Tue, 19 Mar 2024, Jakub Jelinek wrote:

> On Sat, Jul 20, 2019 at 05:26:57PM +0100, Richard Sandiford wrote:
> > Gerald Pfeifer <ger...@pfeifer.com> writes:
> > > I have seen an increasing number of reports of GCC failing to
> > > build with clang on powerpc (on FreeBSD, though that's probably
> > > immaterial).
> > >
> > > Turns out that clang has vec_step as a reserved word on powerpc
> > > with AltiVec.
> > >
> > > We OTOH use vec_step s as a variable name in gcc/tree-vect-loop.c.
> > >
> > >
> > > The best approach I can see is to rename vec_step.  Before I prepare
> > > a patch: what alternate name/spelling would you prefer?
> > 
> > Would it work to #define vec_step to vec_step_ or something on affected
> > hosts, say in system.h?
> > 
> > I'd prefer that to renmaing since "vec_step" does seem the most natural
> > name for the variable.  The equivalent scalar variable is "step" and
> > other vector values in the surrounding code also use the "vec_" prefix.
> 
> So like this?

Works for me, but would

#undef vec_step

work or is it really a keyword in the clang side?

Thanks,
Richard.

> If/when clang finally fixes https://github.com/llvm/llvm-project/issues/85579
> on their side, we can then limit it to clang versions which still have the
> bug.
> 
> I've git grepped for vec_set and appart from altivec.h it is just used in
> tree-vect-loop.cc, some Ada files which aren't preprocessed, ChangeLogs,
> rs6000-vecdefines.h (but that header is only included from altivec.h and
> vec_step is then redefined to the function-like macro) and in 
> rs6000-overload.def
> but that file is processed with a generator, not included in C/C++ sources.
> 
> 2024-03-19  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR bootstrap/114369
>       * system.h (vec_step): Define to vec_step_ when compiling
>       with clang on PowerPC.
> 
> --- gcc/system.h.jj   2024-03-08 09:07:29.484624793 +0100
> +++ gcc/system.h      2024-03-19 11:39:18.122700551 +0100
> @@ -1302,6 +1302,12 @@ void gcc_stablesort_r (void *, size_t, s
>  #define NULL nullptr
>  #endif
>  
> +/* Workaround clang on PowerPC which has vec_step as reserved keyword
> +   rather than function-like macro defined in <altivec.h>.  See PR114369.  */
> +#if defined(__clang__) && defined(__powerpc__)
> +#define vec_step vec_step_
> +#endif
> +
>  /* Return true if STR string starts with PREFIX.  */
>  
>  inline bool
> 
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to