https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104257

            Bug ID: 104257
           Summary: rs6000/*intrin.h headers using non-uglified automatic
                    variables
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

As I've mentioned in
https://gcc.gnu.org/pipermail/gcc-patches/2022-January/589296.html
various config/rs6000/*intrin.h headers, while they uglify parameter names,
don't uglify automatic variables/local types etc. in the inline functions.
Example of proper uglification:
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__,
__artificial__))
_mm_blend_epi16 (__m128i __A, __m128i __B, const int __imm8)
{ 
  __v16qi __charmask = vec_splats ((signed char) __imm8);
  __charmask = vec_gb (__charmask);
  __v8hu __shortmask = (__v8hu) vec_unpackh (__charmask);
  #ifdef __BIG_ENDIAN__
  __shortmask = vec_reve (__shortmask);
  #endif
  return (__m128i) vec_sel ((__v8hu) __A, (__v8hu) __B, __shortmask);
}
example of missing uglification:
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__,
__artificial__))
_mm_insert_epi8 (__m128i const __A, int const __D, int const __N)
{
  __v16qi result = (__v16qi)__A;

  result [__N & 0xf] = __D;

  return (__m128i) result;
}

result isn't a reserved identifier, so
#define result 1 + 2
#include <x86intrin.h>
will not work.

Reply via email to