Re: [PATCH v1 1/1] aarch64: delete vaddd_s64 and vaddd_u64 from arm_neon.h [PR126652]

Andrea Pinski <[email protected]> Wed, 5 Aug 2026 16:05:24 -0700
Newsgroups gmane.comp.gcc.patches
Message-ID <CALvbMcBYuPsSFq=ZG9mnK2B=s6e1G2DtJTyXuV1K2d_tjqeQeA@mail.gmail.com>
On Wed, Aug 5, 2026 at 9:55 AM Karl Meakin <[email protected]> wrote:
>
> Now that `vaddd_s64` and `vaddd_u64` are implemented in the compiler,
> the definitions in arm_neon.h are unnecessary. Fix by deleting them.
>
> This fixes PR126652: a compiler error was triggered when `#include
> <arm_neon.h>` is wrapped in an `extern "C" {}` block in C++-mode.
>
>         PR target/126652
>
> gcc/ChangeLog:
>
>         * config/aarch64/arm_neon.h (vaddd_s64, vaddd_u64): Delete
>         function definitions.
>
> gcc/testsuite/ChangeLog:
>
>         * g++.target/aarch64/pr126652.C: New test.

Please remove the testcase since I think the testcase should be
rejected. Otherwise ok.

> ---
>  gcc/config/aarch64/arm_neon.h               | 16 ----------------
>  gcc/testsuite/g++.target/aarch64/pr126652.C | 11 +++++++++++
>  2 files changed, 11 insertions(+), 16 deletions(-)
>  create mode 100644 gcc/testsuite/g++.target/aarch64/pr126652.C
>
> diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
> index 101a6e52106..873a1195d3e 100644
> --- a/gcc/config/aarch64/arm_neon.h
> +++ b/gcc/config/aarch64/arm_neon.h
> @@ -5279,22 +5279,6 @@ vabsd_s64 (int64_t __a)
>    return __a < 0 ? - (uint64_t) __a : __a;
>  }
>
> -/* vadd */
> -
> -__extension__ extern __inline int64_t
> -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
> -vaddd_s64 (int64_t __a, int64_t __b)
> -{
> -  return __a + __b;
> -}
> -
> -__extension__ extern __inline uint64_t
> -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
> -vaddd_u64 (uint64_t __a, uint64_t __b)
> -{
> -  return __a + __b;
> -}
> -
>  /* vaddv */
>
>  __extension__ extern __inline int8_t
> diff --git a/gcc/testsuite/g++.target/aarch64/pr126652.C b/gcc/testsuite/g++.target/aarch64/pr126652.C
> new file mode 100644
> index 00000000000..a6916fcdcc8
> --- /dev/null
> +++ b/gcc/testsuite/g++.target/aarch64/pr126652.C
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +
> +#if defined(__cplusplus)
> +extern "C" {
> +#endif
> +
> +#include <arm_neon.h>
> +
> +#if defined(__cplusplus)
> +}
> +#endif
> --
> 2.51.0
>