From: Jakub Jelinek Date: Wed, 20 Mar 2024 09:34:51 +0000 (+0100) Subject: system.h: rename vec_step to workaround powerpc/clang bug [PR114369] X-Git-Tag: basepoints/gcc-15~572 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e64228fe1f7ec536da314246eec968aea0d704d;p=thirdparty%2Fgcc.git system.h: rename vec_step to workaround powerpc/clang bug [PR114369] On Sat, Jul 20, 2019 at 05:26:57PM +0100, Richard Sandiford wrote: > Gerald Pfeifer 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? 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-20 Jakub Jelinek PR bootstrap/114369 * system.h (vec_step): Define to vec_step_ when compiling with clang on PowerPC. --- diff --git a/gcc/system.h b/gcc/system.h index ab29fc197764..1028dcb1eb3c 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -1302,6 +1302,12 @@ void gcc_stablesort_r (void *, size_t, size_t, sort_r_cmp_fn *, void *data); #define NULL nullptr #endif +/* Workaround clang on PowerPC which has vec_step as reserved keyword + rather than function-like macro defined in . See PR114369. */ +#if defined(__clang__) && defined(__powerpc__) +#define vec_step vec_step_ +#endif + /* Return true if STR string starts with PREFIX. */ inline bool