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

Karl Meakin <[email protected]> Thu, 6 Aug 2026 13:42:25 +0000
Newsgroups gmane.comp.gcc.patches
Message-ID <DU5PR08MB1082447497AA918B2DE2717B4F4D22@DU5PR08MB10824.eurprd08.prod.outlook.com>
Thanks. Merged

From: Andrea Pinski <[email protected]>
Date: Thursday, 6 August 2026 at 00:05
To: Karl Meakin <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: [PATCH v1 1/1] aarch64: delete vaddd_s64 and vaddd_u64 from arm_neon.h [PR126652]

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
>